亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-11-30 17:26:43 來源:億速云 閱讀:266 作者:小新 欄目:編程語言

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

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

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

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

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

  4. 這里只是提供了這個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:
    # 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)

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

不過這樣改很粗糙,只能支持國內時間和國內期貨,如果服務器再其他時區,或者其他產品就另外分析。

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

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

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)

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

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

以上是“在VNPY中策略中如何使用分鐘線合成日K線”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

崇文区| 濮阳市| 资源县| 揭阳市| 肇庆市| 昌宁县| 江川县| 和田县| 综艺| 崇阳县| 体育| 龙南县| 通江县| 灵璧县| 桑植县| 叶城县| 海兴县| 固阳县| 上虞市| 南川市| 云南省| 宁河县| 巩义市| 晋江市| 满洲里市| 岳池县| 诏安县| 濮阳县| 南阳市| 顺义区| 香格里拉县| 固原市| 吴川市| 门头沟区| 合水县| 连江县| 花莲县| 石狮市| 钦州市| 志丹县| 静乐县|