從燭台生成報價數據
是否有軟體(或 Python / R / … 腳本)從燭台數據生成(偽)報價數據。
我有從每月時間範圍 (MN) 到分鐘時間範圍 (M1) 的燭台數據(CSV 格式),但時間範圍可能不同。文件名是:
SYMBOL1.csv
對於 M1 時間範圍(1 分鐘)SYMBOL5.csv
對於 M5 時間範圍(5 分鐘)SYMBOL15.csv
對於 M15 時間範圍(15 分鐘)SYMBOL30.csv
對於 M30 時間範圍(30 分鐘)SYMBOL60.csv
H1 時間範圍(1 小時)SYMBOL240.csv
H4 時間範圍(4 小時)SYMBOL1440.csv
對於 D1 時間範圍(1 天)SYMBOL10080.csv
W1 時間範圍(1 週)SYMBOL43200.csv
對於 MN 時間範圍(1 個月)我想為每個 csv 文件提供軟體或腳本。我想給出開始日期時間和結束日期時間,軟體將輸出一個帶有刻度數據的 csv 文件。
報價數據將從最長的時間範圍生成到最短的時間範圍(如果存在數據)。例如,如果數據在請求的時間間隔記憶體在,軟體將從 M1 燭台時間幀輸出分時數據。如果 M1 時間範圍內沒有數據,軟體將嘗試查找 M5 時間範圍內的數據以生成分時。
我知道生成的刻度將使用插值生成(所以它們不會是精確的)
這些想法在 Metatrader 策略測試器http://www.metatrader5.com/en/terminal/help/tester/tester_using/tick_generation中實現
$ head _FRA401.csv 2010.11.16,08:01,3818.0,3820.0,3817.5,3820.0,41 2010.11.16,08:02,3820.0,3823.0,3801.0,3823.0,38 2010.11.16,08:03,3823.0,3825.0,3823.0,3823.5,28 $ tail _FRA401.csv 2012.11.01,18:32,3477.0,3477.0,3474.0,3474.5,37 2012.11.01,18:33,3474.5,3476.0,3474.5,3475.5,25 2012.11.01,18:34,3475.5,3476.0,3471.5,3472.5,62 $ head _FRA4043200.csv 2010.11.01,00:00,3818.0,3906.0,3589.5,3620.0,168480 2010.12.01,00:00,3629.0,3940.5,3618.5,3853.5,227760 2011.01.01,00:00,3848.0,4081.5,3605.5,4019.5,266725 $ tail _FRA4043200.csv 2012.02.01,00:00,3310.5,3490.5,3305.5,3456.5,514738 2012.03.01,00:00,3441.0,3593.0,3343.0,3420.5,353738 2012.04.01,00:00,3428.0,3475.5,2974.5,3128.5,247351
我們之前做過 (*),但這很簡單:一記開盤,一記高點,一記低點,一記點收盤。對於刻度時間戳,開盤時間是 08:01:00,收盤時間是 08:01:59.999,高點是 08:01:20,低點是 08:01:40。(或者如果這給出了奇怪的結果,open 是 08:01:00.001,close 是 08:02:00.000;這取決於你的系統如何製作柱。)
如果您也希望交易量匹配,則在開盤和收盤的平均值處創建 N-4 個刻度,並在一分鐘內均勻地間隔開刻度。如果需要,您可以插入一條從打開到關閉的直線;您還可以將所有 N-4 個刻度設置為高,等等。所有選擇都是虛構的,所以您選擇哪個並不重要。我喜歡修正平均值,因為任何看到它的人都會立即知道它是人工數據。
*:這是在一個系統中,我們只能修補中斷並用滴答數據回填歷史數據;然後,該系統將製作日內柱線。即我們不能直接修補日內柱線。
如果您希望它看起來像真實的分時,因為您的交易算法僅設計為根據分時工作,那麼您從開盤到收盤的直線插值開始,然後對其進行抖動。然後過濾以確保沒有超過高和低,然後選擇兩個刻度作為高和低並更改它們的值。
另一個特定於 R 的變體是放入打開/關閉刻度,並對所有其他刻度使用 NA。然後隨機選擇 2 個刻度為高低。然後使用 R 的 na.approx 或 na.spline 函式。然後抖動。然後再次過濾高低。
如果這樣做,我強烈建議您製作多個數據集,每個數據集都有不同的隨機種子,並對每個數據集執行回測。如果不同的數據集得到不同的結果,那麼您的算法對您引入的隨機雜訊很敏感。(即你的結果毫無意義,你需要去購買真實的報價數據!)