mt4 ea如何實現多品種回測?
日線策略,對數據要求不高。
瀉藥,回答下。
這個問題剛好我在做。
我用的工具是excel。
首先在平台下載各品種歷史數據。
一種是直接下載日線數據。
另一種是清除歷史數據後下載1分鐘數據。然後由一分鐘數據轉化成各時段數據。
第一種方式一般可以下載最近7/8年的數據,基本也夠用。
第二種可以下載70年代開始的數據。但是初期數據質量一般。
然後是清洗數據。
外彙報價的小數點是最大麻煩。
我的方法是歐元英鎊澳元紐元瑞郎加元這類統一放大1萬倍。
日元系列放大100倍。
黃金系列放大10倍。
這樣就把報價變成了統一規格,有點像指數,日後做波幅比較,或者相關性分析,甚至自定義美元指數都非常方便。
下載的數據中的對應日期和時間非常重要,不要丟棄。
然後就是根據你的策略編寫公式。
這就看你的策略的複雜性了。
我是均線策略等相對簡單的策略,很好做。這塊不知道你的策略是什麼,可以回復我再補充。
公式寫完,計算,生成開平倉信號。
標註信號點。篩選出信號。
列出開倉平倉價格。
然後在一個完整信號區間如開倉平倉之間選取報價最大值和最小值,以及對應日期時間和區間數值計數。
通過與開倉平倉價格計算,就可以得出最大浮盈浮虧,區間波幅,持倉時間等重要數據。
這部分數據做單品種策略分析用。
然後,因為你要做多品種回測,這存在一個多品種持倉的共振風險問題。所以還要做一件事。
根據開平倉信號和每日最高最低收盤價,可以計算出單日最大浮虧浮盈,以及收盤節點的盈虧情況。
計算完成後你就得到了每一個品種的每一個交易日是否持倉,最大浮盈浮虧,收盤盈虧等數據。
以上說的都是點數。
但是,各品種點值不同。還要處理下。
給各品種設置一個初始投資額,根據點數與實際點值,轉換成以美元計價的盈虧額。這樣就可以得出對應初始投資額的單品種每日凈值數據以及單日浮盈浮虧等。
當然,你也可以通過點值換算成美元計價點數。
有了這個初始投資額還有一個好處,就是你可以根據凈值變化,而改變後期的開倉頭寸量了--------如果有這個需要的話。
對凈值生成曲線圖的話就是一個以日為單位的凈值圖。如果加上單日浮盈浮虧數據,就可以生成以日為單位的賬戶凈值K線圖。
全部品種做完後,新建個圖表。
創建一個日期時間列,然後創建各品種凈值列。創建各品種單日最大浮盈列,最大浮虧列,收盤盈虧列。
將上述數據以對應的品種和日期時間貼過去。
分別求和。
你就可以得到一個多品種以日為單位的歷史數據。
當然,你有可能每個品種開倉頭寸並不相同,你就分別乘以對應的係數。
如果要設置一旦某品種開倉另外品種就不開倉,那就使用條件公式。
同樣,做完這些後,你就可以得到多品種以日為單位的凈值圖了。
同樣,還可以做成K線圖。比較直觀的看到賬戶凈值波動。
以日為時間節點的問題是不能精確的計算全部持倉的最大浮盈浮虧。
我是做4H的數據,能更精確一些。
這些做完,之後的數據,別忘記實時手動更新。
至於能不能利用mt4編程做回測。
肯定能呀,這要是都不行,程序員也不要活了。
關鍵問題是,我不是程序員。。。所以我不會。
評論就不回答excel使用方法等相關問題了。
會回復策略,邏輯,以及分析數據等相關問題。
千萬別忘記將點數轉換成對應點值的美元啊。沒做外匯,我只做期貨,自己構建了資料庫伺服器,每天自動收集數據。然後用Matlab從資料庫中拉數據,寫回測程序計算。速度慢的話,就用C++寫多線程回測程序,速度可以提高很多倍,看電腦CPUhe
自己的策略寫成了EA,就一個品種一個品種的回測吧!MT4這個平台還不支持多品種同時一起測的。MT4是用C++寫成的,學習一下C++和一些數據結構演算法,MT4上的EA就很容易寫了的。有自己穩定交易系統或者策略了,就寫個程序,很好的。
好像是沒有 這個問題我也想知道 不知道有沒有高手解答
MT4別指望了,你寫的EA邏輯都很複雜,如果用EXCEL數據再來寫一遍,我個人覺得很麻煩,應該你要建立一個便利循環一個所有開倉、平倉的邏輯。如果不嫌麻煩,用MT5寫一套,然後測試
MT4不支持 MT5可以 或用別的語言Python等獲取數據自己寫網上有很多支持庫
好像MT5已經支持這個功能了
推薦閱讀: