MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1740

 
Maxim Kuznetsov # :

사람들에게 나쁜 것을 가르치지 마십시오.

데이터를 기억하고 작업해야 합니다.

맥심, 그 상황에서 아무 것도 기억할 필요가 없습니다. 마지막으로 닫힌 위치를 단순히 보는 것이 훨씬 더 안정적입니다.

비상 상황 후 후속 복구와 함께 데이터를 저장하기 위해 거기에 아무것도 발명할 필요가 없습니다. 터미널이 닫히면 위치 데이터가 손실됩니다. 따라서 암기할 때 신속하고 효과적인 복구 가능성을 즉시 고려해야 합니다.

(댓글의 순서를 기억하십시오-신뢰할 수 있는 결정이라고 말하지 않겠습니다-중개인/DC의 의지에 의존하는 것을 의미합니다)

그리고 가장 흥미로운 점은 어쨌든 그가 어딘가에서 이 데이터를 읽을 것이라는 것입니다. 그래서 소스에서 즉시 읽기가 더 쉽지 않습니까?

 
Sergey Zhukov # :

컴파일러가 MT5가 아닌 MT4용으로 컴파일하도록 강제하는 방법은 무엇입니까?

 #ifdef __MQL4__

#else

#endif
 
Artyom Trishkin # :

맥심, 그 상황에서 아무 것도 기억할 필요가 없습니다. 마지막으로 닫힌 위치를 단순히 보는 것이 훨씬 더 안정적입니다.

비상 상황 후 후속 복구와 함께 데이터를 저장하기 위해 거기에 아무것도 발명할 필요가 없습니다. 터미널이 닫히면 위치 데이터가 손실됩니다. 따라서 암기할 때 신속하고 효과적인 복구 가능성을 즉시 고려해야 합니다.

(댓글의 순서를 기억하십시오-신뢰할 수 있는 결정이라고 말하지 않겠습니다-중개인/DC의 의지에 의존하는 것을 의미합니다)

그리고 가장 흥미로운 점은 어쨌든 그가 어딘가에서 이 데이터를 읽을 것이라는 것입니다. 그래서 소스에서 즉시 읽기가 더 쉽지 않습니까?

그런 다음 "OnTimer가 몇 초 안에 맞지 않거나 OnTick이 너무 그리워지는 이유" 주제를 따르세요 :-)

초기화하는 동안 상태를 한 번 복원합니다(파일에서 읽거나 기록/환경 보기). 그게 다입니다... 마지막 순서는 특성과 함께 변수에 저장되며 항상 알려져 있습니다.

 
Maxim Kuznetsov # :

그런 다음 "OnTimer가 몇 초 안에 맞지 않거나 OnTick이 너무 그리워지는 이유" 주제를 따르세요 :-)

초기화하는 동안 상태를 한 번 복원합니다(파일에서 읽거나 기록/환경 보기). 그게 전부입니다... 마지막 순서는 특성과 함께 변수에 저장되며 항상 알려져 있습니다.

마지막 위치가 어떻게 마감되었는지 알아보려면 찾아야 합니다. 결국, 열려 있는 동안에는 어떻게 닫혔는지 기록하고 기억할 방법이 없습니다. 여전히 열려 있습니다.

마지막으로 열린 위치의 티켓을 저장하고 그것을 어떻게 닫았는지 확인하는 데 사용할 수 있지만 ... 열린 상태에서 위치를 조작하면 티켓이 바뀔 수 있습니다. 따라서 변경된 티켓을 다시 쓰기 위한 기능을 만들어야 합니다. 이 모든 것이 코드를 복잡하게 만듭니다.

나는 방금 마지막으로 닫힌 위치를 찾는 것을 제안했습니다. 그리고 이것은 어드바이저를 다시 시작할 때 모든 위치의 열거를 결합하고 새 위치를 닫을 때 한 위치의 데이터만 읽을 때 결합합니다.

결국, 나는 이것을 위해 모든 역사적 입장을 순환할 필요가 없고 마지막 입장만을 통해서만 순환할 필요가 있다는 것을 모두가 이해하기를 바랍니다. 즉, 현재 값인 사이클 인덱스 변수 하나만 기억하고 0이 아닌 이 변수의 값에서 새 사이클(과거 주문 수가 증가할 때)을 시작합니다. 그리고 이 변수의 값은 Expert Advisor를 시작하고 재시작할 때, 그리고 새로운 포지션을 닫을 때 OnInit()에 입력됩니다. 즉, 이러한 방식으로 위치 데이터를 쓰고 읽을 필요가 없고 드라이브로 작업할 필요가 없습니다.

이 접근 방식이 가장 유익하다고 생각합니다.

1. 주기 지수 값만 기억하면 됩니다.
2. 해당 인덱스로 마감된 주문에 직접 접근하여 적절한 순간에만 데이터를 수신합니다.
3. 데이터 읽기/쓰기 기능을 펜스할 필요가 없습니다.
4. 일과 글쓰기 모두 빠릅니다.

그리고 네, 저는 귀하가 귀하의 모든 데이터를 알아야 한다는 데 동의합니다. 제가 직접 처리합니다. 그러나 그것들을 아는 것은 프로그램과 자신의 이익을 위해 바람직합니다.

 
Ivan Butko # :

정보 주셔서 감사합니다!

시간이 되시면 해결 방법에 대해 답변해 드리겠습니다.

N 캔들백의 역사에서 Close[N]+50*Point 및 Close[N]-50*Point라는 두 가지 다른 방향의 목표가 설정됩니다.
그런 다음 가격이 목표 중 하나에 도달해야 한다는 조건(if (High[i]> Close[N]+50*Point) 또는 (if (Low[i]<   닫기[N]-50*포인트)
조건이 충족되면 Close[N] 에서 High[i]까지의 거리가 x[high]=High[i] 배열에 입력됩니다.
그런 다음 무작위로 언제든지 차트 중 하나로 돌진합니다.

그리고 Print( x[high])로 확인할 때 10개 중 1~2개 값이 50 미만으로 나타납니다! 하나는 12개, 다른 하나는 49개입니다. 하지만 +50 * 포인트는 엄격하게 표시됩니다. 8-9는 정확하고(50 이상) 1-2는 비정상입니다. 테스터를 통하는 것이 아니라 실제 차트에서 어드바이저(트레이딩 기능 없음)를 던지지만 위의 경우에만 히스토리와 함께 작동하고 이렇게 씁니다.

값이 클수록 이러한 오류가 줄어듭니다. 전파가 막히지 않을까 생각했는데.. MT4에서는 역사에 전파가 없는 것 같습니다.

결정됐다.

 
RefreshRates()를 OnTimer()에 추가해야 합니까, 아니면 타이머가 기본적으로 자체 업데이트합니까?
 
Ivan Butko # :
RefreshRates()를 OnTimer()에 추가해야 합니까, 아니면 타이머가 기본적으로 자체 업데이트합니까?
업데이트하지 않음
 
Aliaksandr Hryshyn # :
업데이트하지 않음

감사해요

 
Artyom Trishkin # :

마지막 위치가 어떻게 마감되었는지 확인하려면 찾아야 합니다. 결국, 열려 있는 동안에는 어떻게 닫혔는지 기록하고 기억할 방법이 없습니다. 여전히 열려 있습니다.

마지막으로 열린 위치의 티켓을 저장하고 그것을 어떻게 닫았는지 확인하는 데 사용할 수 있지만 ... 열린 상태에서 위치를 조작하면 티켓이 바뀔 수 있습니다. 따라서 변경된 티켓을 다시 쓰기 위한 기능을 만들어야 합니다. 이 모든 것이 코드를 복잡하게 만듭니다.

나는 방금 마지막으로 닫힌 위치를 찾는 것을 제안했습니다. 그리고 이것은 어드바이저를 다시 시작할 때 모든 위치의 열거를 결합하고 새 위치를 닫을 때 한 위치의 데이터만 읽을 때 결합합니다.

결국, 나는 이것을 위해 모든 역사적 입장을 순환할 필요가 없고 마지막 입장만을 통해서만 순환할 필요가 있다는 것을 모두가 이해하기를 바랍니다. 즉, 현재 값인 하나의 주기 지수 변수만 기억하고 0이 아닌 이 변수의 값에서 새 주기(과거 주문 수가 증가할 때)를 시작합니다. 그리고 이 변수의 값은 Expert Advisor를 시작하고 재시작할 때, 그리고 새로운 포지션을 닫을 때 OnInit()에 입력됩니다. 즉, 이러한 방식으로 위치 데이터를 쓰고 읽고 드라이브로 작업할 필요가 없습니다.

이 접근 방식이 가장 유익하다고 생각합니다.

1. 주기 지수 값만 기억하면 됩니다.
2. 해당 인덱스로 마감된 주문에 직접 접근하여 적절한 순간에만 데이터를 수신합니다.
3. 데이터 읽기/쓰기 기능을 펜스할 필요가 없습니다.
4. 일과 글쓰기 모두 빠릅니다.

그리고 네, 귀하가 귀하의 모든 데이터를 알아야 한다는 데 동의합니다. 제가 직접 처리합니다. 그러나 그것들을 아는 것은 프로그램과 자신의 이익을 위해 바람직합니다.

나는 그것이 열려있는 동안 포지션 티켓이 변경된 것을 눈치 채지 못했습니다. 일반적으로 이 포지션을 오픈한 첫 번째 주문의 티켓과 동일합니다.

마지막으로 마감된 것 - 그리고 두 명 이상의 고문이 기호에 대해 거래하고 수동 거래를 하는 경우?
 
JRandomTrader # :

나는 그것이 열려있는 동안 포지션 티켓이 변경된 것을 눈치 채지 못했습니다. 일반적으로 이 포지션을 오픈한 첫 번째 주문의 티켓과 동일합니다.

마지막으로 마감된 것 - 그리고 두 명 이상의 고문이 기호에 대해 거래하고 수동 거래를 하는 경우?

충전 또는 부분 폐쇄 및 티켓이 이미 다릅니다. 어떤 티켓이 어느 티켓에서 시작되었는지 확인하고 기억된 티켓을 덮어쓸 필요가 있습니다. 그러나 어떤 플랫폼에 대해 이야기하고 있는지 명확하지 않습니다. 둘 다 약간 다르지만 여전히 추적해야 합니다.

"마지막으로 마감됨, 이 고문이 소유함"을 의미합니다.