아무 문제 없이 차트에 올려져 있지만 EA에서 호출하면 ...array out of range in 'HiLo.mq4'(121,15)라고 나옵니다.
문제가 무엇입니까?
차트에 1000개의 막대가 있는지 확인하지 않습니다. 예를 들어, 터미널이 열리는 순간 모든 차트에는 0개의 막대가 있지만 터미널은 이미 지표를 시작했습니다(이를 수행하는 이유는 명확하지 않지만 사실은 사실입니다). 따라서 표시기 버퍼 에 대한 액세스는 시계열 배열의 한계를 넘어서게 됩니다.
차트에 1000개의 막대가 있는지 확인하지 않습니다. 예를 들어, 터미널을 여는 순간 모든 차트에는 0개의 막대가 있지만 터미널은 이미 지표를 시작했습니다(이를 수행하는 이유는 명확하지 않지만 사실은 사실입니다). 따라서 표시기 버퍼 에 대한 액세스는 시계열 배열의 한계를 넘어서게 됩니다.
검사가 근본적으로 잘못되었기 때문입니다. Bars가 1000을 반환하고 cb도 1000을 반환했다고 가정해 보겠습니다. 그런 다음 루프에서 첫 번째 반복에서 i 값은 1000을 얻습니다. 루프 본문의 첫 번째 조건에서:
if (fx1[i]>fx1[i+ 1 ]) fs= 1 ;
배열에서 한 번에 두 개의 종료: 인덱스 1000과 인덱스 1001로 막대에 액세스. 결국 차트에 1000개의 막대가 있는 경우 첫 번째 막대의 인덱스는 0이고 마지막 막대는 999입니다.
더 나아가 사이클의 본체를 따라 역사상 훨씬 더 먼 바에 대한 호소가 있습니다.
if ( Close [i+ 1 +barsig]<upper[i+ 1 +barsig] && Close [i+barsig]>upper[i+barsig])
초기 점검 시 이 모든 사항을 고려해야 합니다.
올바르게 확인하는 방법? MQL4 도움말에서 IndicatorCounted() 함수의 예를 살펴보십시오. 이제는 IndicatorCounted()를 Rates_total(Bars) 및 prev_calculated(IndicatorCounted()) 변수를 공유하는 것으로 바꾸는 것이 좋습니다.
다음 기능을 사용해 보세요.
통화와 선물 모두에서 이 기능을 사용한다면 그렇게 간단하지 않습니다. 여기에서 마진 비율을 고려해야 합니다.
통화와 선물 모두에서 이 기능을 사용한다면 그렇게 간단하지 않습니다. 여기에서 마진 비율을 고려해야 합니다.
백분율 손실에 대해 이야기하는 경우 마진은 우리에게 관심이 없으며 포지션이 닫힐 때 반환됩니다.
백분율 손실에 대해 이야기하는 경우 마진은 우리에게 관심이 없으며 포지션이 닫힐 때 반환됩니다.
아마도
이것만 알아차려서 죄송합니다.
그리고 나뿐만 아니라 터미널도 본질적으로 차이점을 보지 못합니다. 어레이의 범위를 벗어 났습니다.
다음 기능을 사용해 보세요.
도와 주셔서 감사합니다! 불행히도 보편적인 솔루션을 구현하는 것은 불가능했고 다음과 같이 해야 했습니다.
브로커에게 유동 레버리지가 있는 경우 로트 계산 시 이를 어떻게 고려해야 하는지 자세히 알려주세요. 아니면 위의 옵션을 입력해도 영향이 없을까요?
또 다른 표시기, 배열도 범위를 벗어났습니다.
아무 문제 없이 차트에 올려져 있는데 EA에서 호출하면 ...array out of range in 'HiLo.mq4' (121,15) 라고 나옵니다.
문제가 무엇입니까?
또 다른 표시기, 배열도 범위를 벗어났습니다.
아무 문제 없이 차트에 올려져 있지만 EA에서 호출하면 ...array out of range in 'HiLo.mq4'(121,15)라고 나옵니다.
문제가 무엇입니까?
차트에 1000개의 막대가 있는지 확인하지 않습니다. 예를 들어, 터미널이 열리는 순간 모든 차트에는 0개의 막대가 있지만 터미널은 이미 지표를 시작했습니다(이를 수행하는 이유는 명확하지 않지만 사실은 사실입니다). 따라서 표시기 버퍼 에 대한 액세스는 시계열 배열의 한계를 넘어서게 됩니다.
차트에 1000개의 막대가 있는지 확인하지 않습니다. 예를 들어, 터미널을 여는 순간 모든 차트에는 0개의 막대가 있지만 터미널은 이미 지표를 시작했습니다(이를 수행하는 이유는 명확하지 않지만 사실은 사실입니다). 따라서 표시기 버퍼 에 대한 액세스는 시계열 배열의 한계를 넘어서게 됩니다.
여전히 날아다닌다.
여전히 날아다닌다.
검사가 근본적으로 잘못되었기 때문입니다. Bars가 1000을 반환하고 cb도 1000을 반환했다고 가정해 보겠습니다. 그런 다음 루프에서 첫 번째 반복에서 i 값은 1000을 얻습니다. 루프 본문의 첫 번째 조건에서:
배열에서 한 번에 두 개의 종료: 인덱스 1000과 인덱스 1001로 막대에 액세스. 결국 차트에 1000개의 막대가 있는 경우 첫 번째 막대의 인덱스는 0이고 마지막 막대는 999입니다.
더 나아가 사이클의 본체를 따라 역사상 훨씬 더 먼 바에 대한 호소가 있습니다.
초기 점검 시 이 모든 사항을 고려해야 합니다.
올바르게 확인하는 방법? MQL4 도움말에서 IndicatorCounted() 함수의 예를 살펴보십시오. 이제는 IndicatorCounted()를 Rates_total(Bars) 및 prev_calculated(IndicatorCounted()) 변수를 공유하는 것으로 바꾸는 것이 좋습니다.