您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Go語(yǔ)言怎么快速實(shí)現(xiàn)一個(gè)半自動(dòng)量化交易工具”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Go語(yǔ)言怎么快速實(shí)現(xiàn)一個(gè)半自動(dòng)量化交易工具”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
跨期套利正是通過(guò)觀察期貨各合約價(jià)差的波動(dòng),以賺取差價(jià)為目的,在同一期貨品種的不同合約月份建立數(shù)量相等、方向相反的交易部位,并以對(duì)沖或交割方式結(jié)束交易的一種操作方式。正向市場(chǎng)時(shí),價(jià)差為負(fù),表現(xiàn)為遠(yuǎn)月升水,反向市場(chǎng)時(shí),價(jià)差為正,表現(xiàn)為近月升水。一般來(lái)說(shuō),價(jià)差(絕對(duì)值)由持有成本(或持倉(cāng)費(fèi))構(gòu)成,即指為擁有或保留某種倉(cāng)單或頭寸而支付的倉(cāng)儲(chǔ)費(fèi)、保險(xiǎn)費(fèi)和利息等費(fèi)用。
策略框架如下代碼:
function main(){ while(true){ if(exchange.IO("status")){ // 判斷CTP協(xié)議連接狀態(tài)。 LogStatus(_D(), "已經(jīng)連接CTP !") // 開(kāi)市時(shí)間,登錄連接正常。 } else { LogStatus(_D(), "未連接CTP !") // 未登錄到交易前置機(jī)。 } } }
如果CTP協(xié)議連接正常后,接下來(lái)我們就是需要設(shè)置合約,然后獲取行情。獲取行情后,我們可以使用發(fā)明者量化交易平臺(tái)封裝好的「畫(huà)線類(lèi)庫(kù)」畫(huà)圖,畫(huà)出差價(jià)。
function main(){ while(true){ if(exchange.IO("status")){ // 判斷CTP協(xié)議連接狀態(tài)。 exchange.SetContractType("rb2001") // 設(shè)置遠(yuǎn)月合約 var tickerA = exchange.GetTicker() // 遠(yuǎn)月合約行情數(shù)據(jù) exchange.SetContractType("rb1910") // 設(shè)置近月合約 var tickerB = exchange.GetTicker() // 近月合約行情數(shù)據(jù) var diff = tickerA.Last - tickerB.Last $.PlotLine("diff", diff) LogStatus(_D(), "已經(jīng)連接CTP !") // 開(kāi)市時(shí)間,登錄連接正常。 } else { LogStatus(_D(), "未連接CTP !") // 未登錄到交易前置機(jī)。 } } }
拿到了行情數(shù)據(jù),計(jì)算差價(jià),并且畫(huà)圖記錄,讓其簡(jiǎn)單反映出近期差價(jià)的波動(dòng)狀態(tài)。
使用「畫(huà)線類(lèi)庫(kù)」的函數(shù) $.PlotLine
在策略編輯頁(yè)面可以直接給策略增加交互控件:
在策略代碼中使用函數(shù) GetCommand
函數(shù)捕獲,上述策略控件觸發(fā)后發(fā)送給機(jī)器人的命令。
捕獲到命令后,對(duì)不同的命令做出不同的處理即可。
交易部分代碼可以使用「商品期貨交易類(lèi)庫(kù)」封裝好的函數(shù)。首先,使用var q = $.NewTaskQueue()
生成交易控制對(duì)象 q(聲明為全局變量)。
var cmd = GetCommand() if (cmd) { if (cmd == "plusHedge") { q.pushTask(exchange, "rb2001", "sell", 1, function(task, ret) { Log(task.desc, ret) if (ret) { q.pushTask(exchange, "rb1910", "buy", 1, 123, function(task, ret) { Log("q", task.desc, ret, task.arg) }) } }) } else if (cmd == "minusHedge") { q.pushTask(exchange, "rb2001", "buy", 1, function(task, ret) { Log(task.desc, ret) if (ret) { q.pushTask(exchange, "rb1910", "sell", 1, 123, function(task, ret) { Log("q", task.desc, ret, task.arg) }) } }) } else if (cmd == "coverPlus") { q.pushTask(exchange, "rb2001", "closesell", 1, function(task, ret) { Log(task.desc, ret) if (ret) { q.pushTask(exchange, "rb1910", "closebuy", 1, 123, function(task, ret) { Log("q", task.desc, ret, task.arg) }) } }) } else if (cmd == "coverMinus") { q.pushTask(exchange, "rb2001", "closebuy", 1, function(task, ret) { Log(task.desc, ret) if (ret) { q.pushTask(exchange, "rb1910", "closesell", 1, 123, function(task, ret) { Log("q", task.desc, ret, task.arg) }) } }) } } q.poll()
讀到這里,這篇“Go語(yǔ)言怎么快速實(shí)現(xiàn)一個(gè)半自動(dòng)量化交易工具”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。