OrderSend를 사용하여 MT5에서 올바르게 작동하는 방법 - 페이지 6

 
Alexey Viktorov :

첫 번째 EA는 OrderSend 이후 기록이 아직 동기화되지 않았음을 이해합니다. 동기화 이벤트를 기다릴 뿐입니다.

그러나 두 번째 고문은 기록이 이미 동기화되었는지 여부를 아직 이해하지 못합니까?

 
fxsaber :

첫 번째 EA는 OrderSend 이후 기록이 아직 동기화되지 않았음을 이해합니다. 동기화 이벤트를 기다릴 뿐입니다.

그러나 두 번째 조언자는 기록이 이미 동기화되었는지 여부를 아직 이해하지 못합니다.

역사를 잊어 버려. OnTradeTransaction() 함수 의 동작을 연구해 보십시오.

첫 번째 EA가 위치를 지정하고 이 이벤트가 OnTradeTransaction에서 처리되고 "비친구"가 필터링되고 주문이 활성화됩니다... OnTradeTransaction에서 이 이벤트가 처리됩니다.

두 번째 고문은 또한 "자신이 아닌" 주문, 위치 및 거래를 필터링합니다.

실제 외환 계정에서 이런 식으로 일하는 2명의 고문이 있습니다. 그 중 1개는 붙일 포지션의 티켓이 포지션 매지션으로 할당된다. 그리고 당신은 이것이 두 명의 다른 마술사가 아니라는 것을 이해합니다 ...

이름이 빅터인 것 같은데요? 디버깅에서 서로 다른 마법으로 두 위치 설정을 시작하고 OnTradeTransaction에서 구조를 추적합니다.

 
Alexey Viktorov :

역사를 잊어 버려. OnTradeTransaction() 함수 의 동작을 연구해 보십시오.

첫 번째 EA가 위치를 지정하고 이 이벤트가 OnTradeTransaction에서 처리되고 "비친구"가 필터링되고 주문이 활성화됩니다... OnTradeTransaction에서 이 이벤트가 처리됩니다.

두 번째 고문은 또한 "자신이 아닌" 주문, 위치 및 거래를 필터링합니다.

실제 외환 계정에서 이런 식으로 일하는 2명의 고문이 있습니다. 그 중 1개는 붙일 포지션의 티켓이 포지션 매지션으로 할당된다. 그리고 당신은 이것이 두 명의 다른 마술사가 아니라는 것을 이해합니다 ...

이름이 빅터인 것 같은데요? 디버깅에서 서로 다른 마법으로 두 위치 설정을 시작하고 OnTradeTransaction에서 구조를 추적합니다.

내 로그를주의 깊게 살펴보면 다음을 볼 수 있습니다.

우리는 OnTradeTransaction보다 더 빨리 티켓을 얻습니다.

주문 티켓으로 충분합니다.

물론 (이 상황에서) 마술사와 함께 안전하게 플레이하는 것이 좋습니다.

그리고 지금은 OrderSendAsync를 사용하는 것이 더 좋습니다. FOREX도 FORTS에도 오류가 없습니다.

 
prostotrader :

내 로그를 자세히 보면 알 수 있습니다.

우리는 OnTradeTransaction보다 더 빨리 티켓을 얻습니다.

주문 티켓으로 충분합니다.

물론 (이 상황에서) 마술사와 함께 안전하게 플레이하는 것이 좋습니다.

그리고 지금은 OrderSendAsync를 사용하는 것이 더 좋습니다. FOREX도 FORTS에도 오류가 없습니다.

어쩌면 그렇게. 그러나 연기가 활성화되면? 역사 분석? 다시 환경 동기화 속도의 문제?

일반적으로 아마추어의 경우. 가장 중요한 것은 그것이 작동하고 약간 느려지며 없이는 ...

 
Alexey Viktorov :

역사를 잊어 버려. OnTradeTransaction() 함수 의 동작을 연구해 보십시오.

동기화되지 않은 기록 동안 두 번째는 어떻게 작동합니까?

이 문제는 MT5뿐만 아니라 4개에도 해당됩니다.

 
fxsaber :

동기화되지 않은 기록 동안 두 번째는 어떻게 작동합니까?

이 문제는 MT5뿐만 아니라 4개에도 해당됩니다.

나는 당신의 이름이 빅터라고 더욱 확신합니다. 나는 당신의 마지막 별명을 아무에게도 말하지 않을 것입니다.

당신은 짧은 시간에 평균 이상의 수준에서 프로그래밍을 마스터했으며 제 생각에는 평균보다 훨씬 높습니다. 그러나 잘못된 위치에서 당신을 옮기는 것은 매우 어렵습니다. 그리고 이제 당신의 프로그래밍 지식 수준이 나보다 높으면 시도조차 하지 않을 것입니다.

역사는 잊어버리고 OnTradeTransaction 함수의 구조를 보십시오 .

디버거가 활성화되었는지 mql5에서 어떻게 결정하는지 말로 말하려고 합니까?

 
Alexey Viktorov :

나는 당신의 이름이 빅터라고 더욱 확신합니다. 나는 당신의 마지막 별명을 아무에게도 말하지 않을 것입니다.

짧은 시간에 프로그래밍을 마스터했습니다...

사실, 이것은 hrenfx의 또 다른 환생입니다. 새로 가기로 결정했습니다.
 
prostotrader :

내 로그를 자세히 보면 알 수 있습니다.

우리는 OnTradeTransaction보다 더 빨리 티켓을 얻습니다.

주문 티켓으로 충분합니다.

물론 (이 상황에서) 마술사와 함께 안전하게 플레이하는 것이 좋습니다.

그리고 지금은 OrderSendAsync를 사용하는 것이 더 좋습니다. FOREX도 FORTS에도 오류가 없습니다.

그리고 OrderSendAsync() 의 장점은 무엇입니까? 그는 결과에서 응답을 기다리지 않습니다. 즉, 나중에 잡아야 합니다. 이점이 무엇인지 명확하지 않습니다.
 
prostotrader :

OrderSend()는 절대 동기 함수입니다. 티켓을 받으면 모든 것이 충족됩니다.

아래는 예시입니다

추가되었으며 여기에 로그가 있습니다.

https://www.mql5.com/en/forum/38456/page85#comment_2888263

고맙습니다!
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

악기에서 위치를 열지 않고 커미션의 크기를 찾는 방법은 무엇입니까?

fxsaber , 2016.11.08 20:30

#include <MT4Orders.mqh>

void OnStart ()
{
   const int Ticket = OrderSend ( _Symbol , OP_BUY , 1 , SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), 0 , 0 , 0 );
  
   OrderClose (Ticket, 0.3 , SymbolInfoDouble ( _Symbol , SYMBOL_BID ), 0 , clrNONE );

   Sleep ( 1000 ); // ждем обновления истории
  
   if ( OrderSelect (Ticket, SELECT_BY_TICKET ))
     Alert ( OrderCommission ());
}

아마도 그러한 예가 암시적일 것입니다.

Sleep을 하지 않으면 OrderClose 후 히스토리를 업데이트할 시간이 없고 OrderCommission이 OrderClose가 완료되지 않은 것처럼 값을 반환하는 상황이 자주 발생합니다.

이것은 스크립트이며 이벤트가 있을 수 없습니다. 유일한 탈출구는 바보 수면입니다.

SB를 사용하여 이 스크립트를 다시 작성하면 아무 것도 변경되지 않습니다.