我用以下內容製作了一個 EA...

外部 int IntIndTF1 = 4;
外部 int IntInd1S1 = 2;
外部 int IntInd1S2 = 14;

外部 int IntIndTF2 = 1;
外部 int IntInd2S1 = 3;
外部 int IntInd2S2 = 9;
插入代碼 PerH1 = High#91;iHighest(SymbolToManage,IntIndTF1,MODE_HIGH,IntInd1S2,IntInd1S1)#93;; PerL1 = Low#91;iLowest(SymbolToManage,IntIndTF1,MODE_LOW,IntInd1S2,IntInd1S1)#93;; PerM1 = NormalizeDouble((PerH1 PerL1)/2,Digits); PerH2 = High#91;iHighest(SymbolToManage,IntIndTF2,MODE_HIGH,IntInd2S2,IntInd2S1)#93;; PerL2 = Low#91;iLowest(SymbolToManage,IntIndTF2,MODE_LOW,IntInd2S2,IntInd2S1)#93;; PerM2 = NormalizeDouble((PerH2 PerL2)/2,Digits);
它工作得很好,直到我開始用它測試其他符號,然後出現可怕的 Array out of range 錯誤,所以我把它改成了這個......
插入代碼 int BarCount = Bars; if (BarCount lt; 1) BarCount = 1; for (int i=0; igt;Bars; i--) { PerH1 = High#91;iHighest(SymbolToManage,IntIndTF1,MODE_HIGH,IntInd1S2,i IntInd1S1)#93;; PerL1 = Low#91;iLowest(SymbolToManage,IntIndTF1,MODE_LOW,IntInd1S2,i IntInd1S1)#93;; PerM1 = NormalizeDouble((PerH1 PerL1)/2,Digits); PerH2 = 高#91;iHighest(SymbolToManage,IntIndTF2,MODE_HIGH,IntInd2S2,i IntInd2S1)#93;; PerL2 = Low#91;iLowest(SymbolToManage,IntIndTF2,MODE_LOW,IntInd2S2,i IntInd2S1)#93;; PerM2 = NormalizeDouble((PerH2 PerL2)/2,Digits);數組超出範圍的錯誤似乎已經減少。但是,現在我無法讓它模擬以前運行良好的設置...

外部 int IntIndTF1 = 4;
外部 int IntInd1S1 = 2;
外部 int IntInd1S2 = 14;

外部 int IntIndTF2 = 1;
外部 int IntInd2S1 = 3;
外部 int IntInd2S2 = 9;

我已經測試了 1 和 -1 範圍,但 EA 現在沒有返回到相同柱的相同計算值。如何更改代碼以消除錯誤,同時保持先前測試的值和結果。

這是在不使用指標的 EA 中。 HHLL 的值在 EA 本身中。我希望它能夠讀取並獲得觸發信號欄上的 extern 變量的相同結果。