真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在VNPY中策略中如何使用分鐘線合成日K線

這篇文章主要介紹在VNPY中策略中如何使用分鐘線合成日K線,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

目前創(chuàng)新互聯(lián)公司已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、任城網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

在論壇里面看到不少關(guān)于分鐘合成日線的討論,也試著實現(xiàn)了。這里是針對vnpy2.0的,1.92其實基本也差不多。

  1. 這里把合成的日線HLOC信息放在pandas.DataFrame里面,因為日線分析的話,對運算時間要求不是特別高,DataFrame足矣

  2. 合成過程放在on_bar方法里面,對每個傳入的分鐘進(jìn)行日線合并處理;

  3. 這里用了trading == False進(jìn)行判斷,就是只在策略初始化過程對于歷史數(shù)據(jù)進(jìn)行日線合并。在交易過程中,不對當(dāng)天傳入分鐘數(shù)據(jù)進(jìn)行處理。因為日線是長周期數(shù)據(jù),放在程序啟動時候調(diào)用使用就可以,不必要盤中分析,如果打算真要,注釋掉這個就可以。

  4. 這里只是提供了這個DataFrame 放置日線數(shù)據(jù),具體如何分析還是要看使用者了

定于dayFrame存儲日線數(shù)據(jù),在策略定義中插入全局變量

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:
    # adjustedBarTime = bar.datetime + timedelta(hours = 5)
    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(max(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'high'].values),bar.high_price)
            self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'] = \
                min(min(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'].values),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)

另外,這里默認(rèn)就是自然日。如果想按照國內(nèi)期貨期貨時間,就是晚上九點開盤時間就是第二天的話。有個取巧的方法,就是把bar時間加上5個小時,那么下午9點就變成明天1點,這樣dataframe就會存儲為下一天數(shù)據(jù)。而當(dāng)天15點加上5點20點還是當(dāng)天數(shù)據(jù)。

不過這樣改很粗糙,只能支持國內(nèi)時間和國內(nèi)期貨,如果服務(wù)器再其他時區(qū),或者其他產(chǎn)品就另外分析。

修改方法,定義局部變量adjustedBarTime,是傳入bar.datetime 時間加5;代替后面新增代碼中所有用到bar.datetime地方。

周五時候想到一個問題,對于國內(nèi)期貨,周五晚上數(shù)據(jù)屬于周一的,想想還真是頭大,這里還要加上一天判斷是否第二天是周六,如果是就要改到加兩天,幸好一般節(jié)假日之前的交易日晚上無夜盤,不然更麻煩。

from datetime import datetime, timedelta
if self.trading == False:
    adjustedBarTime = bar.datetime + timedelta(hours = 5)
    if adjustedBarTime.weekday() is 5:
        adjustedBarTime = adjustedBarTime + timedelta(days= 2)

會插入如下數(shù)據(jù),按照初始化使用天數(shù),就會有多少條,

在VNPY中策略中如何使用分鐘線合成日K線

以上是“在VNPY中策略中如何使用分鐘線合成日K線”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站欄目:在VNPY中策略中如何使用分鐘線合成日K線
鏈接URL:http://weahome.cn/article/pjddep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部