溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VNPY重新啟動后沒有停止掛單原因和解決方法是什么

發布時間:2021-12-04 15:33:36 來源:億速云 閱讀:172 作者:柒染 欄目:編程語言

本篇文章為大家展示了VNPY重新啟動后沒有停止掛單原因和解決方法是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

之前在這個鏈接里面,提了vnpy重啟后,比如開盤前開始,即使符合掛單條件,也沒有掛單出現的問題,給了一個比較麻煩的方法。
后來研究代碼,發現原因應該是:
程序用onInit(self) 初始化回放數據,但是此時self.trading 為false,不會發出停止單;而啟動onStart時候,不會重新回放啟動,也就不會有掛單,這樣重啟第一個時間K線是沒有停止單在的。
由于歷史回測是連續的K線,這樣也就是造成回測和實盤差異較大。

之前鏈接解決方法比較復雜,簡單解決方法就是把回放最后一個bar放在onStart里面跑,這時候self.trading 為True,允許掛單。
1. 修改策略的onInit(self) ,回放不包括最后一個bar

def onInit(self):
    """初始化策略(必須由用戶繼承實現)"""
    self.writeCtaLog(u'%s策略初始化' % self.name)
    # 載入歷史數據,并采用回放計算的方式初始化策略數值
    initData = self.loadBar(self.initDays)
    for bar in initData[:-1]:
        self.onBar(bar)
    self.putEvent()

2.給onStart加入最后一個bar回放,

def onStart(self):
    """啟動策略(必須由用戶繼承實現)"""
    initData = self.loadBar(1)
    bar = initData[-1]
    self.onBar(bar)
    self.writeCtaLog(u'%s策略啟動' % self.name)    
    self.putEvent()

上述內容就是VNPY重新啟動后沒有停止掛單原因和解決方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女