量化現貨合約對沖交易軟體開發原始碼(案例演示)策略邏輯

nice1022發表於2023-03-03

量化交易機器人是什麼?實質上,交易機器人是一個軟體程式,可以直接與金融(通常使用API來獲取和解釋相關資訊)進行互動,並且可以根據對市場資料的解釋來發布買賣訂單。系統開發I34-案例I633-演示53I9,他們透過監控市場上的價格走勢,並根據一套事先設定好的規則作出反應來做出這些決策。一般情況下,交易機器人會分析市場上的交易數量、訂單、價格和時間等行為,並根據你的喜好來規劃它們。

在策略設定好之後,機器人智慧分配每一次進單條件,嚴格執行交易策略,交易策略,根據當前行情,實時進行雲大資料調整。同時支援百種交易同時執行交易策略,每一個品種立執行緒,自動管理報價深度,策略計算,實時檢視交易情況,實時執行。

策略執行程式碼參考如下:

/*backtest
start: 2021-06-01 00:00:00
end: 2022-05-23 00:00:00
period: 1h
basePeriod: 1m
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
args: [["v_input_float_1",500],["v_input_string_1",2],["v_input_float_2",0.01],["v_input_int_1",20],["v_input_int_2",500],["RunMode",1,358374],["MinStock",0.001,358374]]
*/
strategy(overlay=true)
varip beginPrice = 0
var spacing = input.float(-1, title="間距價格")
var dir = input.string("long", title="方向", options = ["long", "short", "both"])
var amount = input.float(-1, title="下單量")
var numbers = input.int(-1, title="網格數量")
var profit = input.int(-1, title="盈利價差") / syminfo.mintick
if spacing == -1 and amount == -1 and numbers == -1 and profit == -1
    runtime.error("引數錯誤")
if not barstate.ishistory and beginPrice == 0
    beginPrice := close
findTradeId(id) =>
    ret = "notFound"
    for i = 0 to strategy.opentrades - 1
        if strategy.opentrades.entry_id(i) == id
            ret := strategy.opentrades.entry_id(i)
    ret
// 實時K線階段
if not barstate.ishistory
    // 檢索網格
    for i = 1 to numbers
        // 做多
        direction = dir == "both" ? "long" : dir
        plot(beginPrice-i*spacing, direction+str.tostring(i), color.green)
        if direction == "long" and beginPrice-i*spacing > 0 and beginPrice-i*spacing < close and findTradeId(direction+str.tostring(i)) == "notFound"
            strategy.order(direction+str.tostring(i), strategy.long,  qty=amount, limit=beginPrice-i*spacing)
            strategy.exit("exit-"+direction+str.tostring(i), direction+str.tostring(i), qty_percent=100, profit=profit)
        // 做空
        direction := dir == "both" ? "short" : dir
        plot(beginPrice+i*spacing, direction+str.tostring(i), color.red)
        if direction == "short" and beginPrice+i*spacing > close and findTradeId(direction+str.tostring(i)) == "notFound"
            strategy.order(direction+str.tostring(i), strategy.short, qty=amount, limit=beginPrice+i*spacing)
            strategy.exit("exit-"+direction+str.tostring(i), direction+str.tostring(i), qty_percent=100, profit=profit)


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

相關文章