在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策略例項記錄交易條目和損益
- 【抽五分鐘】使用VuePress建立線上文件中心Vue
- VNPY中 Tick級別準高頻交易簡單策略
- VNPY 中基於Ta-lib的KDJ策略實現
- Vue中引入TradingView製作K線圖VueView
- 在Ubuntu 19.10中使用mongoose來連線mongoDBUbuntuMongoDB
- 在K8S中,映象下載策略有哪些?K8S
- 在命令列中連線mysql命令列MySql
- 在spring boot中3分鐘上手RPC框架DubboSpring BootRPC框架
- JMeter MQTT 在連線測試場景中的使用JMeterMQQT
- 五分鐘瞭解網路連線
- 在Visio中如何繪製直線
- 1 分鐘上手,在容器中執行 Visual Studio Code
- 五分鐘k8s實戰-使用IngressK8S
- 雙均線策略:量化交易中的黃金法則
- 線上主圖設計工具,一分鐘快速上手使用模板!
- 小牛線上合規中的“黨建公益”
- [20200218]ENABLE=BROKEN在連線串中.txt
- WPF在.NET 5 中的線路圖
- 在JavaScript中理解策略模式JavaScript模式
- 10分鐘能讓小白訓練出ML模型的 Amazon SageMaker 已在中國區上線模型
- 如何在 20 分鐘內給你的 K8s PaaS 上線一個新功能?K8S
- 在 Fedora 中結合權能使用 Podman
- iOS股票K線圖、分時圖繪製iOS
- 結合scipy.linalg在Python中使用線性系統Python
- 5分鐘搞懂 Golang 資料庫連線管理Golang資料庫
- 4擬合線性函式的k和b函式
- 為VNPY的K線序列管理工具ArrayManager增加對數收益率佇列佇列
- 在scrapy的pipelines中連線資料庫資料庫
- 在UnityUI中繪製線狀統計圖UnityUI
- 如何使用Python曲線擬合Python
- 在K8S中,在服務上線的時候Pod起不來怎麼進行排查?K8S
- 地平線:黎明時分中的雲渲染技術
- mobx在react如何使用?3分鐘學會!React
- 兩分鐘瞭解Java中volatile!Java