나는 다음과 같이 EA를 만들었습니다 ...

외부 int IntIndTF1 = 4;
외부 정수 IntInd1S1 = 2;
외부 정수 IntInd1S2 = 14;

외부 정수 IntIndTF2 = 1;
외부 int IntInd2S1 = 3;
외부 정수 IntInd2S2 = 9;
삽입된 코드 PerH1 = High#91;iHighest(SymbolToManage,IntIndTF1,MODE_HIG H,IntInd1S2,IntInd1S1)#93; PerL1 = 낮음#91;iLowest(SymbolToManage,IntIndTF1,MODE_LO W,IntInd1S2,IntInd1S1)#93; PerM1 = NormalizeDouble((PerH1 PerL1)/2,자리수); PerH2 = 높음#91;iHighest(SymbolToManage,IntIndTF2,MODE_H IGH,IntInd2S2,IntInd2S1)#93; PerL2 = 낮음#91;iLowest(SymbolToManage,IntIndTF2,MODE_LO W,IntInd2S2,IntInd2S1)#93; PerM2 = NormalizeDouble((PerH2 PerL2)/2,자리수);
다른 기호를 테스트하기 시작할 때까지 훌륭하게 작동했지만 두려운 배열이 범위를 벗어남 오류가 발생하여 다음과 같이 변경했습니다.
삽입된 코드 int BarCount = 막대; if (BarCount lt; 1) BarCount = 1; for (int i=0; igt;Bars; i--) { PerH1 = High#91;iHighest(SymbolToManage,IntIndTF1,MODE_HIG H,IntInd1S2,i IntInd1S1)#93; PerL1 = 낮음#91;iLowest(SymbolToManage,IntIndTF1,MODE_LO W,IntInd1S2,i IntInd1S1)#93; PerM1 = NormalizeDouble((PerH1 PerL1)/2,자리수); PerH2 = 높음#91;iHighest(SymbolToManage,IntIndTF2,MODE_H IGH,IntInd2S2,i IntInd2S1)#93; PerL2 = 낮음#91;iLowest(SymbolToManage,IntIndTF2,MODE_LO W,IntInd2S2,i IntInd2S1)#93; PerM2 = NormalizeDouble((PerH2 PerL2)/2,자리수); } 범위를 벗어난 배열 오류가 줄어든 것 같습니다. 그러나 지금은 잘하고 있던 이전 설정을 시뮬레이션하도록 얻을 수 없습니다 ...

외부 int IntIndTF1 = 4;
외부 정수 IntInd1S1 = 2;
외부 정수 IntInd1S2 = 14;

외부 정수 IntIndTF2 = 1;
외부 int IntInd2S1 = 3;
외부 정수 IntInd2S2 = 9;

1 및 -1 범위를 테스트했지만 EA는 이제 동일한 막대에 대해 동일한 계산 값으로 반환되지 않습니다. 오류를 제거하면서도 이전에 테스트한 값과 결과를 유지하도록 코드를 어떻게 변경할 수 있습니까?

이것은 지표를 사용하지 않는 EA에 있습니다. HHLL의 값은 EA 자체에 있습니다. 신호를 트리거하는 막대의 extern 변수를 읽고 동일한 결과를 얻을 수 있기를 바랍니다.