ساخت اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو

مسعود کوهی
ساخت اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو

تحلیل تکنیکال کلاسیک همواره با دو چالش اساسی روبه‌رو بوده است: خطای انسانی ناشی از سوگیری احساسی و عدم امکان پایش پیوسته صدها جفت‌ارز در تایم‌فریم‌های گوناگون. اتصال ابزارهای محاسباتی به مدل‌های زبانی پیشرفته (مانند نسل GPT-5.6) این امکان را فراهم می‌آورد که داده‌های بازار به‌صورت خودکار فیلتر، محاسبه و تفسیر شوند و تنها موقعیت‌های منطبق بر منطق مدیریت ریسک به تریدر گزارش گردند.

باتوجه‌به توضیحات فوق، قصد داریم در مطلب حاضر راهنمای گام‌به‌گام طراحی اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو را ارائه دهیم. مهم نیست سطح دانش کدنویسی شما چقدر است؛ همین که تسلط کافی بر اصول تحلیل تکنیکال داشته باشید و یک استراتژی معاملاتی مشخص را دنبال کنید، این آموزش برای شما مفید خواهد بود.

راهنمای ساخت اتوماسیون تحلیل و سیگنال گیری رایگان و بدون محدودیت دسترسی

بسیاری از آموزش‌های عمومی، راهنمای طراحی سیستم تحلیل و سیگنال گیری را بر پایه وب‌هوک‌های تریدینگ ویو و اشتراک‌های بین‌المللی ارائه می‌دهند. با این حال، با توجه به محدودیت‌های ناشی از تحریم‌های بین‌المللی (نیاز به صرف هزینه و چالش خرید مستقیم اشتراک‌های پولی وب‌سایت‌های خارجی) و ریسک‌های مسدودی حساب، پیاده‌سازی این فرایند از طریق وب‌هوک وابسته به پلتفرم‌های واسط، هم هزینه‌بر و هم ناپایدار است.

بنابراین ابتدا یک سیستم مستقل، رایگان و بدون نیاز به دورزدن‌های پرریسک معرفی می‌کنیم. در این معماری، پایتون وظیفه دریافت مستقیم داده و محاسبات ریاضی را به عهده می‌گیرد، هوش مصنوعی از طریق زیرساخت داخلی مدل را پردازش می‌کند و هشدارها از طریق پیام‌رسان تلگرام به دست شما می‌رسد.

معرفی ابزارهای مورد نیاز

در جدول زیر، ابزارهای مورد نیاز برای ساخت اتوماسیون تحلیل و سیگنال گیری را مشاهده می‌کنید.

ابزارتوضیح
پایتون (Python)زبان برنامه‌نویسی سطح بالا، خوانا و رایگان که استاندارد اصلی صنعت در علوم داده، یادگیری ماشین و معاملات الگوریتمی به شمار می‌رود. تمام اجزای این اتوماسیون به زبان پایتون نوشته شده است.
ویژوال استودیو کد (Visual Studio Code)محیط توسعه رایگان مایکروسافت که به کمک افزونه‌های تخصصی پایتون، فرایند نوشتن، عیب‌یابی و اجرای اسکریپت‌ها را برای برنامه‌نویسان مبتدی و حرفه‌ای ساده می‌سازد.
CCXTکتابخانه متن‌باز و یکپارچه‌ای برای اتصال به API صرافی‌های رمزارزی است. CCXT در حال حاضر از بیش از ۱۰۰ بازار و API صرافی رمزارزی پشتیبانی می‌کند و امکان استفاده از APIهای عمومی و خصوصی صرافی‌های مختلف را با یک ساختار نسبتاً یکپارچه فراهم می‌سازد.
yfinanceکتابخانه پایتون برای استخراج رایگان داده‌های بازار مالی، از جمله جفت‌ارزهای فارکس، طلا، نفت و شاخص‌ها از سرورهای یاهو فایننس بدون نیاز به ثبت‌نام یا پرداخت هزینه استفاده می‌کند.
pandas-taکتابخانه محاسبات تکنیکال مبتنی بر داده‌های ساختاریافته در پایتون که بیش از ۱۳۰ اندیکاتور استاندارد (مانند RSI, MACD, Bollinger Bands, ATR) را با دقت بالا محاسبه می‌کند.
GapGPT APIمی‌توانید از یک سرویس ایرانی ارائه‌دهنده دسترسی استاندارد به مدل‌های هوش مصنوعی (نظیر GPT-5.6) استفاده کنید.
Telegram Bot APIرابط برنامه‌نویسی پیام‌رسان تلگرام که امکان ارسال خودکار اعلان‌ها، هشدارها و گزارش‌های متنی و ساختاریافته را به حساب کاربری شخصی یا کانال فراهم می‌کند.

ورک فلو یا معماری ساخت اتوماسیون تحلیل و سیگنال گیری

ورک فلو یا معماری اتوماسیون تحلیل و سیگنال گیری با AI را در تصویر زیر مشاهده می‌کنید. مرحله اول با دریافت داده‌های لحظه‌ای بازار آغاز می‌شود. سپس داده‌ها به‌صورت ساختاریافته در اختیار موتور محاسبات تحلیل تکنیکال قرار می‌گیرد. نتیجه ارزیابی به مدل هوش مصنوعی سپرده می‌شود تا عملیات پردازش داده‌ها را انجام دهد. در نهایت سیگنال خروجی در قالب پیام هشدار از طریق ربات تلگرام به کاربر ارسال می‌شود.

ورک فلو یا معماری ساخت اتوماسیون تحلیل و سیگنال گیری

مراحل ساخت اتوماسیون تحلیل و سیگنال گیری

نوبت به بررسی مراحل ساخت اتوماسیون تحلیل و سیگنال گیری می‌رسد. این مراحل در 7 گام به‌همراه کدهای مورد استفاده در هر بخش ارائه می‌شوند. لازم به ذکر است که پروژه به صورت ماژولار و تفکیک‌شده پیاده‌سازی می‌شود تا نگهداری و عیب‌یابی آن آسان باشد. پوشه کاری پروژه به شکل زیر خواهد بود:

trading_bot/

├── config.py          # متغیرها، توکن‌ها و کلیدهای دسترسی

├── data_fetcher.py    # ماژول دریافت داده از کریپتو و فارکس

├── indicators.py      # ماژول محاسبه اندیکاتورها و استخراج ویژگی‌ها

├── ai_analyzer.py     # ماژول ارتباط با هوش مصنوعی و تولید خروجی ساختاریافته

├── notifier.py        # ماژول ارسال پیام به تلگرام

└── main.py            # اسکریپت اصلی اجرای خودکار و زمان‌بندی‌شده

1. آماده‌سازی محیط توسعه و نصب افزونه‌ها

ابتدا یک محیط مجازی (Virtual Environment) ایجاد کرده و بسته‌های مورد نیاز را نصب کنید تا تداخلی میان پکیج‌های سیستم شما ایجاد نشود. دستورات زیر را در ترمینال یا CMD وارد نمایید:

# ساخت پوشه پروژه

mkdir trading_bot

cd trading_bot

# ایجاد و فعال‌سازی محیط مجازی

python -m venv venv

# ویندوز:

venv\Scripts\activate

# لینوکس یا مک:

# source venv/bin/activate

# ارتقای ابزار pip نصب بسته‌های مورد نیاز

pip install –upgrade pip

pip install ccxt pandas-ta pandas yfinance httpx

2. پیکربندی و تنظیم متغیرهای اساسی

تمامی مقادیر حساس از قبیل کلید API هوش مصنوعی و توکن ربات تلگرام در فایل “config.py” متمرکز می‌شوند. برای این منظور از کد زیر استفاده کنید.

# config.py

“””

تنظیمات سراسری ربات ترید خودکار.

کلیدها و مقادیر حساس در این ماژول تعریف می‌شوند.

“””

# تنظیمات GapGPT API

AI_API_URL = “https://api.gapgpt.app/v1/chat/completions”

AI_API_KEY = “YOUR_GAPGPT_API_KEY”  # کلید دریافت شده از پنل کاربری GapGPT

AI_MODEL_NAME = “gpt-5.6”

# تنظیمات ربات تلگرام

TELEGRAM_BOT_TOKEN = “YOUR_TELEGRAM_BOT_TOKEN”  # توکن دریافتی از @BotFather

TELEGRAM_CHAT_ID = “YOUR_CHAT_ID”              # شناسه عددی چت شما

# لیست نمادهای هدف برای تحلیل

# فرمت: (نوع_بازار, نماد, تایم‌فریم)

WATCHLIST = [

    (“crypto”, “BTC/USDT”, “1h”),

    (“crypto”, “ETH/USDT”, “1h”),

    (“crypto”, “SOL/USDT”, “1h”),

    (“forex”, “EURUSD=X”, “1h”),

    (“forex”, “GBPUSD=X”, “1h”),

    (“forex”, “GC=F”, “1h”),  # انس جهانی طلا

]

# پارامترهای کنترل اجرا

MIN_CONFIDENCE_THRESHOLD = 0.65  # حداقل ضریب اطمینان برای ارسال هشدار (بین ۰ تا ۱)

SLEEP_INTERVAL_SECONDS = 900     # وقفه میان هر دور اجرای بررسی (۹۰۰ ثانیه = ۱۵ دقیقه)

3. دریافت داده‌های خام بازار

این ماژول، کندل‌های قیمت (شامل Open / High / Low / Close / Volume) را برای رمزارزها از طریق پروتکل عمومی CCXT و برای فارکس و کامودیتی‌ها از yfinance استخراج و در فایل “data_fetcher.py” ذخیره می‌کند. دستورات اجرای این ماژول را در ادامه مشاهده می‌کنید. در این بخش از نماد معاملاتی BTC/USDT استفاده کردیم که شما می‌توانید آن را با نماد معاملاتی مد نظر خود جایگزین کنید.

# data_fetcher.py

“””

ماژول اختصاصی استخراج داده‌های قیمتی از بازارهای کریپتو و فارکس.

“””

import pandas as pd

import ccxt

import yfinance as yf

def get_crypto_ohlcv(symbol: str = “BTC/USDT”, timeframe: str = “1h”, limit: int = 150) -> pd.DataFrame:

    “””

    استخراج داده‌های تاریخی رمزارزها از API عمومی بدون نیاز به احراز هویت.

    “””

    exchange = ccxt.binance({

        ‘enableRateLimit’: True,

        ‘timeout’: 10000,

    })

    raw_candles = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)

    df = pd.DataFrame(

        raw_candles,

        columns=[“timestamp”, “open”, “high”, “low”, “close”, “volume”]

    )

    df[“time”] = pd.to_datetime(df[“timestamp”], unit=”ms”)

    df = df[[“time”, “open”, “high”, “low”, “close”, “volume”]]

    for col in [“open”, “high”, “low”, “close”, “volume”]:

        df[col] = df[col].astype(float)

    return df

def get_forex_ohlcv(symbol: str = “EURUSD=X”, interval: str = “1h”, period: str = “30d”) -> pd.DataFrame:

    “””

    استخراج داده‌های تاریخی بازار فارکس و انس طلا از یاهو فایننس.

    “””

    ticker = yf.Ticker(symbol)

    df = ticker.history(period=period, interval=interval)

    if df.empty:

        raise ValueError(f”داده‌ای برای نماد {symbol} دریافت نشد.”)

    df = df.reset_index()

    # استانداردسازی نام ستون‌ها

    df.rename(columns={

        “Datetime”: “time”,

        “Date”: “time”,

        “Open”: “open”,

        “High”: “high”,

        “Low”: “low”,

        “Close”: “close”,

        “Volume”: “volume”

    }, inplace=True)

    df = df[[“time”, “open”, “high”, “low”, “close”, “volume”]]

    return df

4. پردازش و استخراج شاخص‌های تکنیکال

در این بخش، پارامترهای ریاضی قیمت محاسبه و سپس فشرده‌سازی می‌شوند تا در قالب یک بسته داده کم‌حجم و ساختاریافته با نام فایل “indicators.py” به مدل هوش مصنوعی تحویل گردند. دستورات کد مربوط به این بخش را در ادامه مشاهده می‌کنید.

# indicators.py

“””

محاسبه اندیکاتورهای تکنیکال و ساخت خلاصه وضعیت بازار.

“””

import pandas as pd

import pandas_ta as ta

def calculate_indicators(df: pd.DataFrame) -> pd.DataFrame:

    “””

    محاسبه شاخص‌های RSI, MACD, EMA و ATR روی دیتافریم ورودی.

    “””

    # محاسبه RSI دوره ۱۴

    df[“rsi”] = ta.rsi(df[“close”], length=14)

    # محاسبه MACD (12, 26, 9)

    macd_res = ta.macd(df[“close”], fast=12, slow=26, signal=9)

    df[“macd”] = macd_res[“MACD_12_26_9”]

    df[“macd_signal”] = macd_res[“MACDs_12_26_9”]

    df[“macd_hist”] = macd_res[“MACDh_12_26_9”]

    # میانگین‌های متحرک نمایی ۵۰ و ۲۰۰ (تشخیص روند)

    df[“ema50”] = ta.ema(df[“close”], length=50)

    df[“ema200”] = ta.ema(df[“close”], length=200)

    # باندهای بولینگر (دوره ۲۰ و انحراف معیار ۲)

    bbands_res = ta.bbands(df[“close”], length=20, std=2)

    df[“bb_lower”] = bbands_res[“BBL_20_2.0”]

    df[“bb_middle”] = bbands_res[“BBM_20_2.0”]

    df[“bb_upper”] = bbands_res[“BBU_20_2.0”]

    # دامنه واقعی میانگین (ATR) برای تعیین منطقی حد ضرر و تارگت

    df[“atr”] = ta.atr(df[“high”], df[“low”], df[“close”], length=14)

    return df

def extract_market_snapshot(df: pd.DataFrame) -> dict:

    “””

    استخراج آخرین وضعیت تکنیکال به صورت دیکشنری جهت ارسال به هوش مصنوعی.

    “””

    last = df.iloc[-1]

    prev = df.iloc[-2]

    # تشخیص نوع تقاطع MACD در کندل اخیر

    macd_cross = “neutral”

    if prev[“macd”] <= prev[“macd_signal”] and last[“macd”] > last[“macd_signal”]:

        macd_cross = “bullish_cross”

    elif prev[“macd”] >= prev[“macd_signal”] and last[“macd”] < last[“macd_signal”]:

        macd_cross = “bearish_cross”

    snapshot = {

        “current_price”: round(float(last[“close”]), 4),

        “rsi_14”: round(float(last[“rsi”]), 2),

        “macd_value”: round(float(last[“macd”]), 5),

        “macd_signal”: round(float(last[“macd_signal”]), 5),

        “macd_histogram”: round(float(last[“macd_hist”]), 5),

        “macd_status”: macd_cross,

        “ema50”: round(float(last[“ema50”]), 4),

        “ema200”: round(float(last[“ema200”]), 4),

        “trend_vs_ema200”: “bullish” if last[“close”] > last[“ema200”] else “bearish”,

        “bb_lower”: round(float(last[“bb_lower”]), 4),

        “bb_upper”: round(float(last[“bb_upper”]), 4),

        “atr_14”: round(float(last[“atr”]), 4),

        “recent_closes”: [round(float(c), 4) for c in df[“close”].tail(10).tolist()],

    }

    return snapshot

5. تحلیل و اعتبارسنجی هوش مصنوعی

این بخش وظیفه دارد داده‌های مهندسی‌شده را با یک پرامپت تحلیلی به مدل زبانی ارسال کرده و پاسخ را صرفا در قالب یک ساختار منظم JSON به نام فایل “ai_analyzer.py” دریافت و اعتبارسنجی نماید. دستورات کد این بخش به شرح زیر است.

# ai_analyzer.py

“””

ماژول ارتباط با هوش مصنوعی و دریافت خروجی ساختاریافته.

“””

import json

import httpx

from config import AI_API_URL, AI_API_KEY, AI_MODEL_NAME

SYSTEM_PROMPT = “””شما یک سیستم الگوریتمی تحلیل تکنیکال و مدیریت ریسک هستید.

وظیفه شما ارزیابی داده‌های آماری ارائه‌شده و تصمیم‌گیری دقیق معاملاتی است.

قوانین سخت‌گیرانه:

۱. خروجی باید تنها و تنها یک شیء معتبر JSON باشد. هیچ عبارت یا توضیح اضافه‌ای خارج از ساختار JSON نباید درج شود.

۲. فیلد action صرفاً باید یکی از سه مقدار زیر باشد: “buy” یا “sell” یا “hold”.

۳. فیلد confidence عددی بین 0.0 تا 1.0 است که میزان قطعیت و انطباق شرایط تکنیکال را نشان می‌دهد.

۴. در صورت اقدام buy یا sell:

   – فیلد stop_loss (حد ضرر/ابطال) الزامی است و باید بر مبنای ATR یا سطوح باند بولینگر محاسبه شود.

   – فیلد take_profit بر اساس نسبت ریسک به ریوارد حداقل ۱ به ۱.۵ تنظیم گردد.

۵. در شرایط تناقض سیگنال‌ها (مثلاً RSI اشباع خرید ولی زیر EMA200)، اقدام را حتماً “hold” انتخاب کنید.

قالب دقیق پاسخ JSON:

{

  “action”: “buy | sell | hold”,

  “confidence”: 0.0,

  “stop_loss”: 0.0,

  “take_profit”: 0.0,

  “reasons”: [

    “دلیل تکنیکال ۱”,

    “دلیل تکنیکال ۲”

  ]

}

“””

def analyze_market(snapshot: dict, symbol: str, timeframe: str) -> dict:

    “””

    ارسال شاخص‌های بازار به GapGPT و دریافت تصمیم تحلیلی ساختاریافته.

    “””

    user_content = (

        f”تحلیل دارایی: {symbol}\n”

        f”تایم‌فریم: {timeframe}\n”

        f”داده‌های تکنیکال:\n{json.dumps(snapshot, ensure_ascii=False, indent=2)}”

    )

    headers = {

        “Authorization”: f”Bearer {AI_API_KEY}”,

        “Content-Type”: “application/json”

    }

    payload = {

        “model”: AI_MODEL_NAME,

        “messages”: [

            {“role”: “system”, “content”: SYSTEM_PROMPT},

            {“role”: “user”, “content”: user_content}

        ],

        “temperature”: 0.1,  # کاهش دمای تولید متن برای پاسخ‌های قطعی و ریاضی

        “response_format”: {“type”: “json_object”}

    }

    with httpx.Client(timeout=45.0) as client:

        response = client.post(AI_API_URL, headers=headers, json=payload)

        response.raise_for_status()

        response_data = response.json()

        raw_text = response_data[“choices”][0][“message”][“content”]

        parsed_result = json.loads(raw_text)

        return parsed_result

6. اطلاع‌رسانی و هشدار در تلگرام

پس از تایید سیگنال توسط مدل هوش مصنوعی، نتایج به شکل یک پیام با فرمت مشخص به حساب کاربری تلگرام ارسال می‌شود. کد مربوط به این بخش در قالب فایل “notifier.py” به شرح زیر است.

# notifier.py

“””

ماژول اطلاع‌رسانی سیگنال‌های معاملاتی به پیام‌رسان تلگرام.

“””

import httpx

from config import TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID

def send_telegram_alert(symbol: str, timeframe: str, market_price: float, analysis: dict):

    “””

    قالب‌بندی و ارسال گزارش سیگنال به چت تلگرام.

    “””

    action = analysis.get(“action”, “hold”).upper()

    confidence = analysis.get(“confidence”, 0.0)

    stop_loss = analysis.get(“stop_loss”, 0.0)

    take_profit = analysis.get(“take_profit”, 0.0)

    reasons = analysis.get(“reasons”, [])

    action_emoji = {

        “BUY”: “🟢 خرید (BUY)”,

        “SELL”: “🔴 فروش (SELL)”,

        “HOLD”: “🟡 خنثی (HOLD)”

    }.get(action, “⚪”)

    formatted_reasons = “\n”.join([f”  ▫️ {r}” for r in reasons])

    message_body = (

        f”📊 <b>سیگنال سیستم هوشمند تحلیلی</b>\n\n”

        f”<b>نماد:</b> <code>{symbol}</code>\n”

        f”<b>تایم‌فریم:</b> {timeframe}\n”

        f”<b>دستور معاملاتی:</b> {action_emoji}\n”

        f”<b>ضریب اطمینان:</b> <code>{confidence * 100:.1f}%</code>\n”

        f”<b>قیمت لحظه‌ای:</b> <code>{market_price}</code>\n”

        f”➖➖➖➖➖➖➖➖\n”

        f”🎯 <b>حد سود (TP):</b> <code>{take_profit}</code>\n”

        f”🛑 <b>حد ضرر (SL):</b> <code>{stop_loss}</code>\n”

        f”➖➖➖➖➖➖➖➖\n”

        f”💡 <b>دلایل تحلیل:</b>\n{formatted_reasons}”

    )

    url = f”https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage”

    payload = {

        “chat_id”: TELEGRAM_CHAT_ID,

        “text”: message_body,

        “parse_mode”: “HTML”

    }

    try:

        with httpx.Client(timeout=20.0) as client:

            resp = client.post(url, json=payload)

            resp.raise_for_status()

    except Exception as e:

        print(f”[-] خطا در ارسال پیام به تلگرام: {e}”)

7. حلقه کنترل و اجرای پیوسته

در پایان باید مطمئن شوید که فرآیند شش مرحله‌ای فوق به صورت پیوسته تکرار می‌شود. دستورات این فرآیند در قالب فایل “main.py” به عنوان هسته اجرایی، فرایند پایش، محاسبه، تصمیم‌گیری و ارسال را در یک چرخه منظم و با مدیریت خطاهای احتمالی شبکه اجرا می‌کند.

# main.py

“””

هسته اصلی اجرای ربات و زمان‌بندی بررسی دارایی‌ها.

“””

import time

import sys

from datetime import datetime

import config

from data_fetcher import get_crypto_ohlcv, get_forex_ohlcv

from indicators import calculate_indicators, extract_market_snapshot

from ai_analyzer import analyze_market

from notifier import send_telegram_alert

def process_asset(market_type: str, symbol: str, timeframe: str):

    “””

    پردازش گام‌به‌گام یک نماد معاملاتی منفرد.

    “””

    print(f”[{datetime.now().strftime(‘%H:%M:%S’)}] بررسی نماد {symbol} ({timeframe})…”)

    # ۱. دریافت کندل‌ها

    if market_type == “crypto”:

        df = get_crypto_ohlcv(symbol=symbol, timeframe=timeframe, limit=200)

    elif market_type == “forex”:

        df = get_forex_ohlcv(symbol=symbol, interval=timeframe, period=”30d”)

    else:

        print(f”[-] نوع بازار نامعتبر: {market_type}”)

        return

    # ۲. محاسبه شاخص‌ها

    df = calculate_indicators(df)

    snapshot = extract_market_snapshot(df)

    current_price = snapshot[“current_price”]

    # ۳. دریافت تحلیل از مدل هوش مصنوعی

    analysis = analyze_market(snapshot, symbol, timeframe)

    action = analysis.get(“action”, “hold”).lower()

    confidence = float(analysis.get(“confidence”, 0.0))

    print(f”   -> خروجی: {action.upper()} | ضریب اطمینان: {confidence:.2f}”)

    # ۴. فیلتر اطمینان و ارسال هشدار

    if action in [“buy”, “sell”] and confidence >= config.MIN_CONFIDENCE_THRESHOLD:

        print(f”   [+] سیگنال معتبر تایید شد. در حال ارسال به تلگرام…”)

        send_telegram_alert(symbol, timeframe, current_price, analysis)

    else:

        print(f”   [i] عدم وجود موقعیت مناسب یا اطمینان ناکافی.”)

def main():

    print(“==================================================”)

    print(” سیستم اتوماسیون تحلیل تکنیکال با هوش مصنوعی”)

    print(” بازارهای هدف: رمزارزها و فارکس”)

    print(” وضعیت: در حال اجرا…”)

    print(“==================================================”)

    while True:

        for market_type, symbol, timeframe in config.WATCHLIST:

            try:

                process_asset(market_type, symbol, timeframe)

            except Exception as ex:

                print(f”[-] بروز خطا در پردازش {symbol}: {ex}”)

            # وقفه کوتاه بین نمادها جهت مدیریت نرخ درخواست‌ها

            time.sleep(3)

        print(f”\n[i] دور پایش به پایان رسید. وقفه به مدت {config.SLEEP_INTERVAL_SECONDS // 60} دقیقه…\n”)

        time.sleep(config.SLEEP_INTERVAL_SECONDS)

if __name__ == “__main__”:

    try:

        main()

    except KeyboardInterrupt:

        print(“\n[!] برنامه توسط کاربر متوقف شد.”)

        sys.exit(0)

راهنمای راه‌اندازی و تست اتوماسیون تحلیل و سیگنال گیری

برای راه‌اندازی و تست اتوماسیون فوق، ابتدا وارد حساب کاربری خود در GapGPT شوید و از بخش مدیریت کلیدها، یک API Key ایجاد کرده و در متغیر AI_API_KEY فایل config.py قرار دهید.

حال به ربات تلگرام Botfather مراجعه کنید. با استفاده از دستور /newbot می‌توانید یک ربات جدید بسازید.

راهنمای راه‌اندازی و تست اتوماسیون تحلیل و سیگنال گیری

سپس یک نام اختصاصی برای آن انتخاب کنید.

راهنمای راه‌اندازی و تست اتوماسیون تحلیل و سیگنال گیری

در ادامه آدرس توکن (TOKEN) برای دسترسی به API در اختیار شما قرار می‌گیرد. این آدرس را به‌جای TELEGRAM_BOT_TOKEN (کد مرحله 6) درج کنید.

راهنمای راه‌اندازی و تست اتوماسیون تحلیل و سیگنال گیری

حال نوبت به دریافت TELEGRAM_CHAT_ID می‌رسد. برای این منظور نشانی اینترنتی زیر را در مرورگر وارد کنید. دقت داشته باشید که به جای YOUR_BOT_TOKEN باید شناسه TOKEN ربات خود در تلگرام را وارد کنید.

  • https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

به این ترتیب شناسه عددی ربات تلگرام در اختیار شما قرار می‌گیرد که باید ان را به جای TELEGRAM_CHAT_ID (کد مرحله 6) وارد کنید.

در پایان باید ترمینال را در پوشه مربوط به پروژه باز و سپس دستور زیر را اجرا کنید:

bash

        python main.py

به‌این ترتیب سیستم اتوماسیون تحلیل و سیگنال‌گیری فعال می‌شود.

قبل از تصمیم‌گیری بر اساس خروجی‌های این اتوماسیون، حداقل به مدت ۳ الی ۴ هفته سیگنال‌ها را در حساب‌های آزمایشی ثبت و سنجش کنید. به‌عنوان یک توصیه کلی از اجرای سیستم اتوماسیون تحلیل و سیگنال‌گیری در تایم فریم‌های زیر 30 دقیقه پرهیز کنید. چراکه احتمال بروز خطا تایم فریم‌های زیر 30 دقیقه در سیستم‌های اتوماسیون مبتنی بر هوش مصنوعی زیاد است.

راهنمای ساخت اتوماسیون تحلیل و سیگنال گیری با وب هوک‌های تریدینگ ویو

در مدل سنتی، معامله‌گر بر اساس هشدارهای ساده (Alerts) تریدینگ‌ویو نظیر تقاطع دو میانگین متحرک یا سیگنال اندیکاتور RSI تصمیم‌گیری می‌کند. این رویکرد معمولا به دلیل نادیده گرفتن شرایط کلان بازار، سطوح نقدینگی و نوسانات ناگهانی، چندان مفید نیست.

ساخت اتوماسیون مبتنی بر هوش مصنوعی می‌تواند بسیاری از چالش‌های تحلیل‌گران در استفاده از تریدینگ ویو را برطرف کند. به‌طوری‌که استراتژی پاین‌اسکریپت (Pine Script v5) در تریدینگ‌ویو شرایط تکنیکال اولیه را رصد می‌کند. سپس با رخ دادن شرایط ستاپ معاملاتی، تریدینگ‌ویو مجموعه‌ای از داده‌های خام (قیمت، حجم، وضعیت اسیلاتورها، حد سود و ضرر پیشنهادی) را در قالب یک پیام ساختاریافته JSON از طریق Webhook به یک سرور اختصاصی ارسال می‌نماید.

در مرحله بعدی، سرور این داده‌ها را به مدل پردازشگر پیشرفته (مانند GPT-5.6 / GPT-4o) ارسال می‌کند تا تحلیل عمقی مبتنی بر مدیریت ریسک، سنتیمنت و وزن‌دهی به تاییده‌ها انجام شود. در صورت تایید نهایی توسط AI، سیگنال معاملاتی پالایش‌شده همراه با درصد اطمینان  و سناریوی مدیریت معامله، فورا به پیام‌رسانی مانند تلگرام یا به پنل معاملاتی صرافی ارسال می‌شود.

راهنمای ساخت اتوماسیون تحلیل و سیگنال گیری با وب هوک‌های تریدینگ ویو

پیش‌نیازها و ابزارهای مورد نیاز

برای راه‌اندازی اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو باید شرایط و ابزارهای ذکر شده در جدول زیر را مهیا کنید.

اشتراک تریدینگ ویوسطح Essential (یا بالاتر) جهت فعال‌بودن قابلیت Webhook URL
کلید رسمی OpenAI APIحساب فعال با شارژ اعتباری پلتفرم توسعه‌دهندگان
سرور ابری (VPS) یا تونل Ngrokسرور لینوکس (Ubuntu) با آی‌پی ثابت پابلیک یا Ngrok برای تست محلی
پایتون نسخه ۳.۱۰+ (FastAPI)فریم ورک سبک و ناهمگام (Async) برای پردازش پرسرعت درخواست‌ها
ربات تلگرام (Telegram Bot API)ساخت توکن از طریق BotFather@ بدون هزینه

مراحل راه‌اندازی اتوماسیون تحلیل و سیگنال گیری

اجرای اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو از دو بخش اصلی زیر تشکیل می‌شود:

  • اسکریپت تریدینگ‌ویو (Pine Script v5): محاسبه اندیکاتورها و ارسال خودکار پی‌لود داده به وب‌هوک
  • میان‌افزار پایتون (FastAPI + OpenAI): دریافت پی‌لود، پردازش با هوش مصنوعی و ارسال خروجی

در ادامه مراحل اجرای این عملیات را در پنج گام توضیح می‌دهیم.

1. اسکریپت تریدینگ‌ویو (Pine Script v5)

وارد محیط Pine Editor در تریدینگ‌ویو شده، کد زیر را قرار داده و سپس گزینه Add to chart را بزنید. دستور کد مربوط محاسبه اندیکاتورها و ارسال خودکار پی‌بود به وب‌هوک در تریدینگ ویو است.

//@version=5

indicator(“AI Sentinel Matrix – Multi-Indicator Alert”, overlay=true)

// — تنظیمات اندیکاتورها —

emaFastLen = input.int(20, “Fast EMA Length”)

emaSlowLen = input.int(50, “Slow EMA Length”)

rsiLen     = input.int(14, “RSI Length”)

bbLen      = input.int(20, “Bollinger Bands Length”)

bbMult     = input.float(2.0, “Bollinger Bands StdDev”)

atrLen     = input.int(14, “ATR Length”)

// — محاسبات تکنیکال —

emaFast = ta.ema(close, emaFastLen)

emaSlow = ta.ema(close, emaSlowLen)

rsiVal  = ta.rsi(close, rsiLen)

atrVal  = ta.atr(atrLen)

[bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLen, bbMult)

[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// — ترسیم روی نمودار —

plot(emaFast, color=color.new(#2962FF, 0), title=”Fast EMA”)

plot(emaSlow, color=color.new(#E91E63, 0), title=”Slow EMA”)

plot(bbUpper, color=color.new(#787B86, 50), title=”BB Upper”)

plot(bbLower, color=color.new(#787B86, 50), title=”BB Lower”)

// — منطق ماشه اولیه هشدار (Trigger Setup) —

// تقاطع EMA یا ورود RSI به محدوده‌های مهم جهت کاهش ترافیک وب‌هوک

bullishTrigger = ta.crossover(emaFast, emaSlow) or (ta.crossover(rsiVal, 30) and close < bbLower)

bearishTrigger = ta.crossunder(emaFast, emaSlow) or (ta.crossunder(rsiVal, 70) and close > bbUpper)

// متغیر تعیین جهت احتمالی برای ارسال به AI

signalCandidate = bullishTrigger ? “BULLISH_SETUP” : bearishTrigger ? “BEARISH_SETUP” : “NEUTRAL”

// — ساختار خروجی JSON برای ارسال به Webhook —

alertPayload = ‘{“ticker”: “‘ + syminfo.ticker + ‘”, ‘ +

  ‘”timeframe”: “‘ + timeframe.period + ‘”, ‘ +

  ‘”close”: ‘ + str.tostring(close) + ‘, ‘ +

  ‘”ema_fast”: ‘ + str.tostring(emaFast) + ‘, ‘ +

  ‘”ema_slow”: ‘ + str.tostring(emaSlow) + ‘, ‘ +

  ‘”rsi”: ‘ + str.tostring(rsiVal) + ‘, ‘ +

  ‘”macd_hist”: ‘ + str.tostring(histLine) + ‘, ‘ +

  ‘”bb_upper”: ‘ + str.tostring(bbUpper) + ‘, ‘ +

  ‘”bb_lower”: ‘ + str.tostring(bbLower) + ‘, ‘ +

  ‘”atr”: ‘ + str.tostring(atrVal) + ‘, ‘ +

  ‘”candidate”: “‘ + signalCandidate + ‘”}’

// ارسال هشدار در صورت تحقق شرایط

if (bullishTrigger or bearishTrigger)

    alert(alertPayload, alert.freq_once_per_bar_close)

2. ساخت وب‌سرور تحلیل‌گر پایتون

ساختار فایل‌های پروژه در محیط پایتون به شکل زیر خواهد بود:

text

ai_tradingview_bot/

│

├── .env

├── requirements.txt

└── server.py

  • فایل وابستگی‌ها  (requirements.txt)

fastapi>=0.110.0

uvicorn>=0.28.0

pydantic>=2.6.0

openai>=1.14.0

python-dotenv>=1.0.0

requests>=2.31.0

  • فایل تنظیمات محرمانه (.env)

OPENAI_API_KEY=your_openai_api_key_here

TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here

TELEGRAM_CHAT_ID=your_chat_or_channel_id_here

WEBHOOK_SECRET_KEY=secure_tradingview_token_123

  • کد موتور اصلی (server.py)

import os

import json

import logging

import requests

from fastapi import FastAPI, HTTPException, Header, BackgroundTasks

from pydantic import BaseModel, Field

from dotenv import load_dotenv

from openai import OpenAI

load_dotenv()

logging.basicConfig(level=logging.INFO not TELEGRAM_CHAT_ID:

        logger.warning(“اطلاعات تلگرام تنظیم نشده است؛ اعلان ارسال نشد.”)

        return

    url = f”https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage”

    payload = {

        “chat_id”: TELEGRAM_CHAT_ID,

        “text”: message,

        “parse_mode”: “Markdown”

    }

    try:

        res = requests.post(url, json=payload, timeout=10)

        res.raise_for_status()

        logger.info(“سیگنال با موفقیت به تلگرام ارسال شد.”)

    except Exception as e:

        logger.error(f”خطا در ارسال پیام به تلگرام: {e}”)

def analyze_with_ai(data: MarketAlertSchema) -> dict:

    “””ارسال متریک‌های دریافتی به مدل زبانی جهت اعتبارسنجی استراتژی و مدیریت ریسک”””

    prompt = f”””

    شما یک معامله‌گر ارشد کمیتی و مدیر ریسک در بازارهای مالی هستید.

    داده‌های تکنیکال زیر از تریدینگ‌ویو دریافت شده است:

    – جفت‌ارز: {data.ticker}

    – تایم‌فریم: {data.timeframe}

    – قیمت پایانی (Close): {data.close}

    – میانگین سریع (EMA Fast): {data.ema_fast}

    – میانگین کند (EMA Slow): {data.ema_slow}

    – شاخص RSI: {data.rsi}

    – هیستوگرام MACD: {data.macd_hist}

    – باند بولینگر بالا: {data.bb_upper} | پایین: {data.bb_lower}

    – شاخص ATR: {data.atr}

    – ستاپ اولیه شناسایی‌شده: {data.candidate}

    وظیفه شما:

    1. تایید یا رد ستاپ اولیه بر اساس همگرایی یا واگرایی اندیکاتورها (Confluence).

    2. تعیین حد ضرر (SL) بهینه بر مبنای مضربی از ATR (مثلاً 1.5 * ATR) و حد سود (TP) با نسبت ریسک به ریوارد حداقل 1:2.

    3. تعیین ضریب اطمینان (Confidence Score) بین 0 تا 100.

    خروجی را الزاما و فقط در قالب یک شیء معتبر JSON با کلیدهای زیر برگردانید:

    {{

        “decision”: “STRONG_BUY” | “STRONG_SELL” | “REJECT”,

        “confidence”: 0-100,

        “entry_price”: float,

        “stop_loss”: float,

        “take_profit”: float,

        “reasoning”: “توضیح تحلیلی خلاصه به زبان فارسی حداکثر در ۲ جمله”

    }}

    “””

    try:

        response = ai_client.chat.completions.create(

            model=”gpt-4o”,  # یا نسخه در دسترس شما

            messages=[

                {“role”: “system”, “content”: “You are a precise algorithmic trading risk officer. Respond only with structured valid JSON.”},

                {“role”: “user”, “content”: prompt}

            ],

            response_format={“type”: “json_object”},

            temperature=0.2

        )

        result_text = response.choices[0].message.content

        return json.loads(result_text)

    except Exception as e:

        logger.error(f”خطا در فراخوانی OpenAI API: {e}”)

        return {“decision”: “REJECT”, “confidence”: 0, “reasoning”: f”AI Processing Error: {str(e)}”}

def process_signal_pipeline(alert: MarketAlertSchema):

    “””خط لوله پردازش ناهمگام هشدار”””

    logger.info(f”شروع تحلیل هوش مصنوعی برای نماد: {alert.ticker}”)

    decision = analyze_with_ai(alert)

    # فیلتر معاملاتی: فقط سیگنال‌های با اطمینان بالای ۷۰ درصد ارسال شوند

    if decision.get(“decision”) in [“STRONG_BUY”, “STRONG_SELL”] and decision.get(“confidence”, 0) >= 70:

        emoji = “🟢 خرید (LONG)” if decision[“decision”] == “STRONG_BUY” else “🔴 فروش (SHORT)”

        msg = (

            f”⚡ **سیگنال تایید شده توسط AI**\n\n”

            f”🔹 **نماد:** `{alert.ticker}` | تایم‌فریم: `{alert.timeframe}`\n”

            f”🔹 **جهت معامله:** {emoji}\n”

            f”🔹 **ضریب اطمینان:** `{decision.get(‘confidence’)}%`\n”

            f”📍 **نقطه ورود پیشنهادی:** `{decision.get(‘entry_price’, alert.close)}`\n”

            f”🛑 **حد ضرر (SL):** `{decision.get(‘stop_loss’)}`\n”

            f”🎯 **حد سود (TP):** `{decision.get(‘take_profit’)}`\n\n”

            f”📝 **علت تایید:**\n_{decision.get(‘reasoning’)}_”

        )

        send_telegram_alert(msg)

    else:

        logger.info(f”سیگنال رد شد یا ضریب اطمینان کافی نبود: {decision}”)

@app.post(“/api/v1/tradingview-webhook”)

async def tradingview_webhook(

    payload: MarketAlertSchema,

    background_tasks: BackgroundTasks,

    x_secret_token: str = Header(None)

):

    # بررسی توکن امنیتی جهت جلوگیری از هرزنامه و درخواست‌های غیرمجاز

    if WEBHOOK_SECRET_KEY and x_secret_token != WEBHOOK_SECRET_KEY:

        raise HTTPException(status_code=401, detail=”Unauthorized: Invalid Secret Token”)

    # انتقال تحلیل به Background Task جهت پاسخ سریع 200 OK به تریدینگ‌ویو

    background_tasks.add_task(process_signal_pipeline, payload)

    return {“status”: “accepted”, “message”: “Alert queued for AI evaluation”}

@app.get(“/health”)

def health_check():

    return {“status”: “online”}

3. اجرای وب سرور و ایجاد آدرس عمومی

در ترمینال، ابتدا وابستگی‌ها را نصب کرده و سرور پایتون را اجرا کنید:

bash

        pip install -r requirements.txt

        uvicorn server:app –host 0.0.0.0 –port 8000

تریدینگ‌ویو برای ارسال وب‌هوک به یک آدرس عمومی اینترنتی با پروتکل HTTPS نیاز دارد. در محیط سرور لینوکس (VPS) با اتصال دامنه یا استفاده از آی‌پی عمومی به همراه گواهی SSL (مانند Let’s Encrypt) این کار انجام می‌شود. اما در در محیط توسعه محلی (تست روی سیستم شخصی)، ابزار Ngrok را اجرا کنید:

Bash

       ngrok http 8000

معمولا آدرس چیزی شبیه نشانی زیر است:

  • https://abcd-123-45.ngrok-free.app

بنابراین آدرس نهایی وب هوک به صورت در می‌آید:

  • https://abcd-123-45.ngrok-free.app/api/v1/tradingview-webhook

4. تنظیم هشدار در تریدینگ ویو

برای تنظیم هشدار در تریدینگ ویو، ابتدا باید نمودار قیمت دارایی مد نظر را فراخوان کنید. سپس کلید ترکیبی Alt + A را در صفحه کیبورد بزنید تا پنجره ایجاد هشدار قیمت باز شود. بخش Condition را روی اسکریپت AI Sentinel Matrix قرار دهید. سپس در تب Notifications، گزینه Webhook URL را فعال کنید. به این ترتیب باید آدرس سرور که در مرحله قبل ایجاد شد را وارد کنید.

در تب Settings، در بخش Message، عبارت {{strategy.order.alert_message}} یا برای اندیکاتورها مستقیما عبارت {{plot_0}} را پاک کرده و کد زیر را وارد کنید تا مقدار رشته خروجی متغیر alertPayload در پاین‌اسکریپت ارسال شود:

Json

       {{alert_message}}

پاین‌اسکریپت به دلیل استفاده از تابع alert(alertPayload) محتوای JSON تولیدی را در پیام هشدار وارد می‌کند.

5. راه‌اندازی و تست اتوماسیون

حال می‌توانید سیستم اتوماسیون را اجرا کنید. پیش از تست در بازار زنده، می‌توانید با ابزار cURL یا نرم‌افزار Postman یک پیام نمونه برای وب‌سرور خود ارسال کرده و خروجی هوش مصنوعی و تلگرام را ارزیابی کنید.

در پس‌زمینه، پرامپت تحلیلی به مدل ارسال شده و ساختار JSON تحلیل استخراج می‌شود. مطابق تنظیمات صورت گرفته،‌ در صورتی که ضریب اطمینان سیگنال بیش از 70 درصد برآورد شود، پیام به همراه نقاط دقیق ورود، حد ضرر و حد سود در چت تلگرام شما ظاهر خواهد شد.

جمع‌بندی

در این مطلب، راهنمای طراحی اتوماسیون تحلیل و سیگنال گیری با AI در تریدینگ ویو را بررسی کردیم. به‌خاطر داشته باشید تحت هیچ شرایطی هوش مصنوعی نمی‌تواند جایگزین تریدر شود. این شما هستید که باید استراتژی معاملاتی مشخص خود را طراحی کنید و سپس سیستم اتوماسیون را بر پایه آن طراحی کنید. مدل‌های هوش مصنوعی صرفا سرعت کار تحلیل تکنیکال را متناسب با استراتژی شما افزایش داده و سیگنال‌های خروجی را در اختیارتان می‌گذارند. در نهایت تصمیم‌گیری برای ورود به معامله بر عهده شما خواهد بود.

سوالات متداول

نقش هوش مصنوعی در اتوماسیون تریدینگ‌ویو چیست؟

هوش مصنوعی داده‌های خام اندیکاتورها را از تریدینگ‌ویو دریافت کرده، نویزها را تا حدی حذف و تنها در صورت همگرایی شرایط و تأیید مدیریت ریسک، سیگنال ورود به معامله صادر می‌کند.

اتصال میان تریدینگ‌ویو و مدل هوش مصنوعی از چه طریقی برقرار می‌شود؟

از طریق قابلیت Webhook Alerts تریدینگ‌ویو، که بسته‌های اطلاعاتی تکنیکال را در قالب استاندارد JSON به یک میان‌افزار تحت وب (مانند FastAPI) ارسال می‌کند.

برای تست محلی (لوکال) وب‌هوک تریدینگ‌ویو روی سیستم شخصی به چه ابزاری نیاز است؟

به ابزار تونل‌سازی مانند Ngrok؛ تا پورت سرور داخلی سیستم (لوکال) را به یک آدرس عمومی اینترنتی با پروتکل امن HTTPS تبدیل کند.