在VNPY中策略中,使用分鐘線合成日K線
在論壇裡面看到不少關於分鐘合成日線的討論,也試著實現了。這裡是針對vnpy2.0的,1.92其實基本也差不多。
-
這裡把合成的日線HLOC資訊放在pandas.DataFrame裡面,因為日線分析的話,對運算時間要求不是特別高,DataFrame足矣
-
合成過程放在on_bar方法裡面,對每個傳入的分鐘進行日線合併處理;
-
這裡用了trading == False進行判斷,就是隻在策略初始化過程對於歷史資料進行日線合併。在交易過程中,不對當天傳入分鐘資料進行處理。因為日線是長週期資料,放在程式啟動時候呼叫使用就可以,不必要盤中分析,如果打算真要,註釋掉這個就可以。
-
這裡只是提供了這個DataFrame 放置日線資料,具體如何分析還是要看使用者了
定於dayFrame儲存日線資料,在策略定義中插入全域性變數
class *********Strategy(CtaTemplate): author = "用Python的交易員" import pandas as pd dayFrame = pd.DataFrame(columns=['datetime', 'high', 'low', 'open', 'close'])
合併過程,在on_bar 方法中插入下面程式碼
def on_bar(self, bar: BarData): """ """ if self.trading == False: if self.dayFrame.empty: # 如果dayFrame 為空,先加入一條 self.dayFrame = self.dayFrame.append({'datetime': bar.datetime.date(), 'high':bar.high_price, 'low': bar.low_price, 'open': bar.open_price, 'close': bar.close_price}, ignore_index=True) else: self.dayFrame = self.dayFrame.sort_values(['datetime']).reset_index(drop=True) # 如果dayFrame 不為空,先按照日期排序, if bar.datetime.date() in self.dayFrame['datetime'].values: # 如果是已有日期,對比high,low更新,並使用新close self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'high'] = \ max(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'high'].all(),bar.high_price) self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'] = \ min(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'].all(),bar.low_price) self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'close'] = bar.close_price else: # 如果是新的日期,新建一條 self.dayFrame = self.dayFrame.append( {'datetime': bar.datetime.date(), 'high': bar.high_price, 'low': bar.low_price, 'open': bar.open_price, 'close': bar.close_price}, ignore_index=True)
會插入如下資料,按照初始化使用天數,就會有多少條,
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2665919/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VNPY建立集中式的k線生成引擎,各個策略採用註冊訂閱,接收k線推送
- vnpy,BollChannel布林線軌道策略分析
- Flutter 股票 分時線、K線Flutter
- 在·VNPY中按照CTA策略例項記錄交易條目和損益
- VNPY中 Tick級別準高頻交易簡單策略
- VNPY 中基於Ta-lib的KDJ策略實現
- JMeter MQTT 在連線測試場景中的使用JMeterMQQT
- Vue中引入TradingView製作K線圖VueView
- Oracle資料庫中的表連線方式及使用場合Oracle資料庫
- 五分鐘瞭解網路連線
- 十分鐘-Nginx入門到上線Nginx
- 一分鐘搞懂ORACLE 外連線Oracle
- 三分鐘破解無線網——無線網路安全攻防
- iOS股票K線圖、分時圖繪製iOS
- 在spring boot中3分鐘上手RPC框架DubboSpring BootRPC框架
- 4擬合線性函式的k和b函式
- 如何在 20 分鐘內給你的 K8s PaaS 上線一個新功能?K8S
- 在UnityUI中繪製線狀統計圖UnityUI
- 在Weblogic9.2.3中建立連線池Web
- 在JavaScript中理解策略模式JavaScript模式
- 為VNPY的K線序列管理工具ArrayManager增加對數收益率佇列佇列
- 五分鐘k8s實戰-使用IngressK8S
- 單龍系統螺紋1805K線5分鐘100MA覆盤
- 1 分鐘上手,在容器中執行 Visual Studio Code
- 五分鐘掌握 JavaScript 中的 IoCJavaScript
- 地平線:黎明時分中的雲渲染技術
- [譯]在 Flutter 中如何設計線性佈局?Flutter
- oracle中的連線Oracle
- 10分鐘搭建k8sK8S
- 組策略每5分鐘出(轉)
- HSStockChart:用 Swift 繪製股票分時圖、K 線圖Swift
- 跪求?????JBoss中的連線池配置及使用
- STM8L中斷線和中斷埠使用方法
- 在Java中地域分佈資料庫是如何連線和進行CRUD 操作的?Java資料庫
- 表連線方式及使用場合
- 如何使用Python曲線擬合Python
- 機器學習中的PR曲線和ROC曲線機器學習
- java連線池解決連線中斷Java