MT4/MT5程式交易EA回測常出現的錯誤訊息

當今天EA的程式碼可以在編輯器當中成功編譯之後
代表著你的程式碼沒有錯誤

可是在回測時﹐常會有error的訊息跑出來
並讓EA無法正常進出場下單
這些部分通常是你的交易邏輯、或是商品規格不符等細節你沒有注意到,或是寫錯了

艾比今天講三種最常出現的EA回測錯誤訊息介紹
艾比在剛寫程式的時候﹐也是常常遇到這些error啊 ><”

 

(1) 下單手數錯誤

在MT4裡面會顯示 ordersend error 131
代表著下單手數的數值錯誤

4手數錯誤

較常出現在有些指數交易商品最小交易手數只能下1手時
可是今天程式計算出來(或你指定)的手數是有小數點的﹐例如1.1手
就會出現ordersend error 131的錯誤訊息

遇到以上這種問題的時候
你可以在你計算下單手數的程式碼最後﹐加上以下代碼

1570809640865
這段可以讓你的手數計算出來﹐如果是有小數點的
程式可以自動四捨五入成整數
或者算出你交易商品的規格該下單的手數位數﹐自動的調整你下單手數

在MT5裡面﹐下單的錯誤都是顯示 ordersend error 4756
只是他會特別顯示出來你是錯在哪裡
像下圖就是會顯示 [ Invalid volume ],我們就知道是下單手數有錯誤

5手數錯誤

在一般貨幣商品交易當中
MT4如果你計算出來是0.123手﹐他會自動在下單時下0.12手
可是在MT5卻不會這樣做
也就是如果你手數計算出來為0.123手﹐直接去ordersend他就會出現上面那樣的錯誤

所以MT5計算手數的程式碼﹐統一就是加入上面那段程式碼就可以了
也就是一定要用到NormalizeDouble的這個功能﹐來讓手數變成小數點兩位數喔

 

 

(2) 下單獲利TP/止損SL 錯誤

MT4當中比較常見出現ordersend error 130的原因是:
1.你的止損或獲利設定太近
2.你的獲利止損兩個欄位寫反了!
主要會是第一種﹐所以就檢查一下你的交易邏輯﹐是不是會不小心讓止損變得太近而無法下單

4TPSL錯誤

還有另外一種常見的止損獲利設定問題
就是 ordersend error 4107
這個問題通常是因為你忘記在TPSL的點數後面加上 *Point 而導致的

4TPSL錯誤沒有點

 

MT5獲利止損設定錯誤也會顯示ordersend error 4756
但是後面就會標示你是錯在哪
下圖就是止損設定太近﹐會顯示 [ Invalid stops ]

5TPSL錯誤由上圖可以看得出來
止損設定太近﹐所以下單手數都超大der

 

 

(3) 移動止損(或修改止損) 錯誤

OrderModify error 常出現在當你的EA有移動停損機制時
就是你在下單之後﹐有會去修改停損停利的點位時

如果要修改的點位設定的不正確
MT4當中就會出現 ordermodify error 130
你要去檢查一下你修改停損停利部分的程式碼

4移動SL錯誤

 

MT5則一樣是顯示ordersend error 4756
因為MT5修改止損一樣是使用ordersend的function
不過可以看到會告訴你是 failed modify
就可以知道是已經下單之後﹐要去移動停損或停利而導致的錯誤

5移動SL錯誤

 

 

以上就是新手們比較常遇到的三種回測錯誤訊息
感謝學員建議說要整理出來﹐艾比覺得這個建議很棒

之前艾比遇到錯誤時﹐從來沒想說要整理
我都是每次遇到什麼錯誤就Google去查﹐改完就繼續程式開發
永遠都記不住哪個錯誤是什麼意思XDD

以後如果發現還有什麼大家比較容易出錯的地方
再補上來囉

One thought on “MT4/MT5程式交易EA回測常出現的錯誤訊息

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *