tradingview開發
使用UDF方式(通用數據反饋)實現k線
因爲tradingview 圖表自身會去自動調用接口數據,所以需要後端需要提供以下4個接口,而且接口名稱必須保持一致(目前未在源碼中找到在哪修改接口名字的地方)
本文不囉嗦那麼多,想看詳細解釋和更多配置可以查看官方文檔,此處僅對前後端數據交互進行概述
api調用
接口一:Datafeed 配置數據接口
接口名稱 /config,傳參方式:get
Request:
GET /config
接口返回數據:
{
supports_search: false,//是否支持商品查詢和人商品解析邏輯
supports_group_request: true,//只提供所有商品集合的完整信息,並且無法進行商品搜索或單個商品解析,並且supports_search和supports_group_request兩者之中有隻有一個可以爲true。
supported_resolutions: ["1", "5", "15", "30", "60", "1D", "1W", "1M"],//支持的週期數組,週期可以是數字或字符串,例:[1, 15, 240, "D", "6M"],您將在週期中得到 "1 分鐘, 15 分鐘, 4 小時, 1 天, 6 個月" 。
supports_marks: false,//是否支持在K線上顯示標記。
supports_time: true,//將此設置爲true假如您的datafeed提供服務器時間(unix時間)。 它僅用於在價格刻度上顯示倒計時。
}
接口二:商品解析
接口名稱 /symbols,傳參方式:get,參數 symbol (
商品名稱或者代碼)
Request:
GET /symbols?symbol=<symbol>
接口返回數據
{
"name":"AAPL",//商品名稱。您的用戶將看到它(作爲一個字符串)
"exchange-traded":"NasdaqNM",
"exchange-listed":"NasdaqNM",
"timezone":"Asia/Shanghai",//交易所時區。
"minmov":1,//最小波動
"minmov2":0,//格式化複雜情況下的價格
"pointvalue":1,
"session":"0900-1100,1400-1500",//商品交易時間,如果全天交易
"has_intraday":false,//布爾值顯示商品是否具有日內(分鐘)歷史數據
"has_no_volume":false,//商品是否擁有成交量數據
"description":"Apple Inc.",//商品說明。這個商品說明將被打印在圖表的標題欄中。
"type":"stock",//儀表的可選類型。
"supported_resolutions":[
"D",
"2D",
"3D",
"W",
"3W",
"M",
"6M"
],//週期選擇器
"pricescale":100,//價格精度,圖表價格量表上的價格線之間的週期
"ticker":"AAPL",//商品的唯一標識符。如果您指定此屬性,則其值將用於所有數據請求,未指定ticker時會發生錯誤。
}
接口三:服務器時間
Request:
GET /time
接口返回參數
純數字,unix時間沒有毫秒。 例: 1445324591
接口四:K線柱數據(最重要的)
接口名稱 /history,傳參方式:get,
參數
symbol (商品名稱或者代碼)
from (時間區間 unix時間戳,例如1555224890)
to (時間區間 unix時間戳 ,例如1589439350)
resolution (時間刻度:5 --5分鐘 ,D -- 一天,W -- 一週,等..)
GET /history?symbol=<ticker_name>&from=<unix_timestamp>&to=<unix_timestamp>&resolution=<resolution>
接口返回參數
狀態ok
{
s: "ok",//狀態碼。 預期值:ok|error|no_data
t: [1386493512, 1386493572, 1386493632, 1386493692],//K線時間. unix時間戳 (UTC)
c: [42.1, 43.4, 44.3, 42.8],//收盤價
o: [41.0, 42.9, 43.7, 44.5],//開盤價 (可選)
h: [43.0, 44.1, 44.8, 44.5],//最高價 (可選)
l: [40.4, 42.1, 42.8, 42.3],//最低價(可選)
v: [12000, 18500, 24000, 45000],//成交量 (可選)
}
狀態no_data
{
s: "no_data",
nextTime: 1386493512,//下一個K線柱的時間 如果在請求期間無數據 (狀態碼爲no_data)
}
狀態error
{
s: "error",
errmsg: '商品錯誤提示信息',
}
基本的接口這四種即可,複雜的定製化參考官方文檔