量化現貨合約對沖交易系統開發|海外交易所平臺定製

nice1022發表於2023-03-08

TradingView訊號執行策略

假如我們希望TradingView推送訊息時在Body中寫一些變數資訊, 開發I34-案例I633-演示53I9。例如在TradingView上這樣的訊息內容:


trading view的訊息設定

那麼TradingView上是可以如圖中設定這樣,把訊息寫在請求的Body中傳送給擴充套件API介面。那這個擴充套件API介面如何呼叫呢?


一系列擴充套件API介面中,我們要用到的是CommandRobot這個介面,通常是這樣呼叫這個介面:


api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

這個請求url的query中的access_key和secret_key就是平臺的擴充套件API KEY,這裡演示所以設定為xxx和yyyy。那這個KEY怎麼建立呢?建立一個就可以,妥善保管,切勿洩露。


建立API KEY

迴歸正題,繼續說CommandRobot介面的問題。如果需要訪問的是CommandRobot介面,請求中的method就設定為:CommandRobot。CommandRobot這個介面的功能就是透過平臺向某個ID的實盤傳送一個互動訊息,所以引數args中包含的就是實盤ID和訊息,上面這個請求url例子就是向ID為186515的實盤程式,傳送訊息ok12345。


之前是用這種方式請求擴充套件API的CommandRobot介面,訊息只能寫死例如上面例子中的ok12345。如果訊息在請求的Body中,就需要用另一種方式:


api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[130350,+""]

這樣請求就可以透過平臺,傳送請求中Body的內容作為互動訊息給ID為130350的實盤了。如果TradingView上的訊息設定為:{"close": {{close}}, "name": "aaa"},那麼ID為130350的實盤就會收到互動指令:{"close": 39773.75, "name": "aaa"}


為了讓「TradingView訊號執行策略」收到互動指令時能正確理解TradingView傳送的這個指令,要提前約定一下訊息格式:


{

    Flag: "45M103Buy",     // 標識,可隨意指定

    Exchange: 1,           // 指定交易所交易對

    Currency: "BTC_USDT",  // 交易對

    ContractType: "swap",  // 合約型別,swap,quarter,next_quarter,現貨填寫spot

    Price: "{{close}}",    // 開倉或者平倉價格,-1為市價

    Action: "buy",         // 交易型別[ buy:現貨買入 , sell:現貨賣出 , long:期貨做多 , short:期貨做空 , closesell:期貨買入平空 , closebuy:期貨賣出平多]

    Amount: "0",           // 交易量

}

策略設計成了多交易所架構,所以可以在這個策略上配置多個交易所物件,也就是可以控制多個不同賬戶的下單操作。只用在訊號結構中Exchange指定要操作的交易所即可,設定1就是要讓這個訊號操作第一個新增的交易所物件對應的交易所賬戶。如果要操作的是現貨ContractType設定為spot,期貨就寫具體合約,例如永續合約寫swap。市價單價格傳-1就可以了。Action設定對於期貨、現貨、開倉、平倉都是有區別的,不能設定錯。 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2938675/,如需轉載,請註明出處,否則將追究法律責任。

相關文章