日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

易盛极星期货量化教学

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 易盛极星期货量化教学 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我目前量化實盤做期貨交易用的是這個軟件。主要就是因為它可以做套利合約,還有就是國企的外包,安全(vnpy的狗咬狗害怕)。

策略模板:

設置全局參數變量:

#導入包 import talib #選擇合約代碼 code1 = '' #設置可調參數 g_params['FastLength'] = 5 g_params['SlowLength'] = 20#開倉標志 BKFLG = 0 SKFLG = 0 #平倉標志 BPFLG = 0 SPFLG = 0 #開倉委托 BKID = 0 SKID = 0 #平倉委托 BPID = 0 SPID = 0 #開倉撤單標志 BKDEL = 0 SKDEL = 0 #平倉撤單標志 BPDEL = 0 SPDEL = 0 #平倉委托手數 BKM = 0 SKM = 0 #平倉撤單標志 BPM = 0 SPM = 0 #開倉委托價格 BKP = 0 SKP = 0 #平倉委托價格 BPP = 0 SPP = 0

設置initialize,確定回測范圍,下單方法:

def initialize(context): SetBarInterval(code1, 'M', 1, 500)SetTriggerType(5)SetOrderWay(2)SetActual()

設置交易函數

def handle_data(context): #設置運行常量BKDFLG = 0SKDFLG = 0BPKDFLG = 0SPKDFLG = 0BRP = 0SRP = 0global BKIDglobal SKIDglobal BPIDglobal SPIDglobal BKFLGglobal SKFLGglobal BPFLGglobal SPFLGglobal BKDELglobal SKDELglobal BPDELglobal SPDELglobal BKMglobal SKMglobal BPMglobal SPMglobal BKPglobal SKPglobal BPPglobal SPP#確定數據長度足夠if CurrentBar() < g_params['SlowLength']:return#計算所有的技術指標 AvgValue1 = talib.MA(Close(), g_params['FastLength']) #快線周期均值AvgValue2 = talib.MA(Close(), g_params['SlowLength']) #慢線周期均值PlotNumeric("ma1", AvgValue1[-1], 0xFF0000)PlotNumeric("ma2", AvgValue2[-1], 0x00aa00)# 執行下單操作,確定用[-2],是前一天的數據。[-1]是當天,用到了未來函數if MarketPosition() <= 0 and AvgValue1[-2] > AvgValue2[-2]:BPKDFLG = 1if MarketPosition() >= 0 and AvgValue1[-2] < AvgValue2[-2]:SPKDFLG = 1

歷史回測檢測

#//------------------------歷史發單------------------------// if context.strategyStatus() != 'C':if BPKDFLG:#多頭建倉Buy(1, Close()[-1])elif SPKDFLG:#空頭建倉SellShort(1, Close()[-1])return

實時下單:

#//------------------------實時處理------------------------//if ExchangeStatus(ExchangeName()) != '3':return#//------------------------變量賦值------------------------//N = 2 #下單手數BIDP = 0 if Q_BidPrice() is None else Q_BidPrice() #買一價ASKP = 0 if Q_AskPrice() is None else Q_AskPrice() #賣一價RLP = Q_UpperLimit() #漲停價FLP = Q_LowLimit() #跌停價BRP = A_BuyPositionCanCover() #多頭可用持倉SRP = A_SellPositionCanCover() #空頭可用持倉if ExchangeName() == 'SHFE': #如果是上期所合約SH = Enum_ExitToday() #平倉參數else: #如果非上期所合約SH = Enum_Exit() #平倉參數#//------------------------成交判斷------------------------//if BPFLG == 1:if A_OrderStatus(BPID) == Enum_Filled():LogInfo("BPK信號:買平委托成交!")BKDFLG = 1 #開啟買開處理BPFLG = 0 #買平標志歸0if BKFLG == 1:if A_OrderStatus(BKID) == Enum_Filled():LogInfo("BPK信號:買開委托成交!")if BKDEL > 0: #如果是SPK信號撤單SPKDFLG = 1 #開啟賣平開處理BKFLG = 0 #買開標志歸0BKDEL = 0 #買開撤單標志歸0elif A_OrderStatus(BKID) == Enum_Canceled():LogInfo("SPK信號:買開委托已撤!")SPKDFLG = 1 #開啟賣平開處理BKFLG = 0 #買開標志歸0BKDEL = 0 #買開撤單標志歸0elif A_OrderStatus(BKID) == Enum_Suspended() or A_OrderStatus(BKID) == Enum_FillPart():if BKDEL == 2: #如果是SPK信號撤單LogInfo("SPK信號:買開委托撤單!")A_DeleteOrder(BKID) #撤掉買開委托掛單BKDEL = 3 #SPK信號撤掉買開委托掛單if SPFLG == 1:if A_OrderStatus(SPID) == Enum_Filled():LogInfo("SPK信號:賣平委托成交!")SKDFLG = 1 #開啟賣開處理SPFLG = 0 #賣平標志歸0if SKFLG == 1:if A_OrderStatus(SKID) == Enum_Filled():LogInfo("SPK信號:賣開委托成交!")if SKDEL > 0: #如果是BPK信號撤單BPKDFLG = 1 #開啟買平開處理SKFLG = 0 #賣開標志歸0SKDEL = 0 #賣開撤單標志歸0elif A_OrderStatus(SKID) == Enum_Canceled():LogInfo("BPK信號:賣開委托已撤!")BPKDFLG = 1 #開啟買平開處理SKFLG = 0 #賣開標志歸0SKDEL = 0 #賣開撤單標志歸0elif A_OrderStatus(SKID) == Enum_Suspended() or A_OrderStatus(SKID) == Enum_FillPart():if SKDEL == 2: #如果是BPK信號撤單LogInfo("BPK信號:賣開委托撤單!")A_DeleteOrder(SKID) #撤掉賣開委托掛單SKDEL = 3 #BPK信號撤掉賣開委托掛單#//------------------------委托處理------------------------//if BPKDFLG == 1:if SKFLG == 1:if SKDEL == 0:if A_OrderStatus(SKID) == Enum_Suspended() or A_OrderStatus(SKID) == Enum_FillPart():LogInfo("BPK信號:賣開委托撤單!")A_DeleteOrder(SKID) #撤掉賣開委托掛單SKDEL = 1 #BPK信號撤掉賣開委托掛單else:SKDEL = 2 #BPK信號撤掉賣開委托掛單elif SKFLG == 0:if BPFLG == 0:if SRP > 0:BPM = SRP #買平委托手數BPP = RLP #買平委托價格LogInfo("BPK信號:買平委托發出!")retCode, BPID = A_SendOrder(Enum_Buy(), SH, BPM, BPP) #發出買平委托BPFLG = 1 #已發出買平委托elif SRP == 0:BKDFLG = 1 #開啟買開處理if BKDFLG == 1:if BKFLG == 0:BKM = N #買開委托手數BKP = ASKP #買開委托價格LogInfo("BPK信號:買開委托發出!")retCode, BKID = A_SendOrder(Enum_Buy(), Enum_Entry(), BKM, BKP) #發出買開委托BKFLG = 1 #已發出買開委托if SPKDFLG == 1:if BKFLG == 1:if BKDEL == 0:if A_OrderStatus(BKID) == Enum_Suspended() or A_OrderStatus(BKID) == Enum_FillPart():LogInfo("SPK信號:買開委托撤單!")A_DeleteOrder(BKID) #撤掉買開委托掛單BKDEL = 1 #SPK信號撤掉買開委托掛單else:BKDEL = 2#SPK信號撤掉買開委托掛單elif BKFLG == 0:if SPFLG == 0:if BRP > 0:SPM = BRP #賣平委托手數SPP = FLP #賣平委托價格LogInfo("SPK信號:賣平委托發出!")retCode, SPID = A_SendOrder(Enum_Sell(), SH, SPM, SPP) #發出賣平委托SPFLG = 1 #已發出賣平委托elif BRP == 0:SKDFLG = 1 #開啟賣開處理if SKDFLG == 1:if SKFLG == 0:SKM = N #賣開委托手數SKP = BIDP #賣開委托價格LogInfo("SPK信號:賣開委托發出!");retCode, SKID = A_SendOrder(Enum_Sell(), Enum_Entry(),SKM,SKP) #發出賣開委托SKFLG = 1 #已發出賣開委托

總結

以上是生活随笔為你收集整理的易盛极星期货量化教学的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。