הטמעת ספריית התרשימים של TradingView: מדריך טכני

פיתוח מנוע גרפים קנייני לפלטפורמת מסחר הוא דרך ארוכה ומסוכנת שמסיחה מהמשימה המרכזית. אנו משלבים את TradingView Advanced Charts – התקן התעשייתי בשימוש בורסות מובילות – ומתאימים אותו למוצר שלך. הצוות שלנו מטפל בכל המחזור, החל מביקורת Datafeed ועיצוב, דרך יישום ועד תמיכה שוטפת, ומבטיח ביצועי גרפים אמינים וניתנים להרחבה.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1336
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1032

הטמעת ספריית תרשימים של TradingView: מדריך טכני

בונים פלטפורמת מסחר? אפשר ליצור מנוע תרשימים מותאם אישית (3–6 חודשים) או להטמיע את TradingView Advanced Charts. זהו התקן התעשייתי, בשימוש על ידי Binance, Coinbase ואחרים. הצוות שלנו ביצע יותר מ-50 אינטגרציות; אנחנו מכירים את המלכודות. מדריך זה מכסה את שלבי האינטגרציה ושגיאות נפוצות. השגיאה הנפוצה ביותר: יחידות חותמת זמן. נקודת הקצה של היסטוריה משתמשת בשניות, קריאות חוזרות בזמן אמת משתמשות במילישניות. טעות זו עלולה לגרום לנתונים חסרים ושבועות של ניפוי שגיאות. אין. אין. אין. אין. אין. (ישויות מקומיות: אין, אין, אין, אין, אין.)

אין: הכנת Datafeed

TradingView לא מביא נתונים בעצמו—הפלטפורמה שלך חייבת ליישם את UDF API. פרוטוקול זה כולל ארבע נקודות קצה: /config, /symbols, /search, /history. אין. הנה דוגמה ליישום FastAPI:

from fastapi import FastAPI, Query
from datetime import datetime

app = FastAPI()


@app.get("/config")
def get_config():
    """Описание возможностей data feed"""
    return {
        "supported_resolutions": ["1", "5", "15", "30", "60", "240", "D", "W"],
        "supports_group_request": False,
        "supports_marks": False,
        "supports_search": True,
        "supports_timescale_marks": False,
        "exchanges": [{"value": "", "name": "All", "desc": "All exchanges"}],
        "symbols_types": [{"name": "crypto", "value": "crypto"}]
    }


@app.get("/symbols")
async def get_symbol_info(symbol: str = Query(...)):
    """Информация о конкретном символе"""
    return {
        "name": symbol,
        "ticker": symbol,
        "description": f"{symbol} / USDT",
        "type": "crypto",
        "session": "24x7",
        "exchange": "YourExchange",
        "listed_exchange": "YourExchange",
        "timezone": "Etc/UTC",
        "pricescale": 100,
        "minmov": 1,
        "volume_precision": 8,
        "has_intraday": True,
        "has_daily": True,
        "has_weekly_and_monthly": True,
        "supported_resolutions": ["1", "5", "15", "30", "60", "240", "D"],
        "currency_code": "USDT"
    }


@app.get("/search")
async def search_symbols(query: str, limit: int = 30):
    """Поиск символов"""
    symbols = await db.search_trading_pairs(query, limit)
    return [
        {
            "symbol": s.symbol,
            "full_name": s.symbol,
            "description": s.description,
            "exchange": "YourExchange",
            "type": "crypto"
        }
        for s in symbols
    ]


@app.get("/history")
async def get_history(
    symbol: str,
    resolution: str,
    from_ts: int = Query(alias="from"),
    to_ts: int = Query(alias="to"),
    countback: int = None
):
    """OHLCV исторические данные — основной endpoint"""
    candles = await db.get_candles(
        symbol=symbol,
        resolution=resolution,
        from_time=datetime.fromtimestamp(from_ts),
        to_time=datetime.fromtimestamp(to_ts)
    )
    if not candles:
        return {"s": "no_data"}
    return {
        "s": "ok",
        "t": [int(c.time.timestamp()) for c in candles],
        "o": [c.open for c in candles],
        "h": [c.high for c in candles],
        "l": [c.low for c in candles],
        "c": [c.close for c in candles],
        "v": [c.volume for c in candles]
    }

אין. אין. אין. (ישויות מקומיות: אין, אין, אין, אין, אין.)

אין: עדכונים בזמן אמת באמצעות WebSocket

לנתונים חיים, ה-datafeed חייב לדחוף עדכונים דרך WebSocket. ה-onRealtimeCallback מצפה למילישניות. אין.

אין: אינדיקטורים מותאמים אישית ואינטגרציה עם ברוקר

TradingView תומך במחקרים מותאמים אישית דרך Pine Script. אפשר גם לשלב API של ברוקר להצבת הזמנות. אין.

אין: סיכום

אין. אין. אין. אין. אין. המפתח הוא להימנע מחוסר התאמה של חותמות זמן. השירות שלנו מטפל בזה ועוד. אין. (ישויות מקומיות: אין, אין, אין, אין, אין.)