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

 
prostotrader :

즐기다.

서버에 빈 요청을 보내는 이유는 무엇입니까? 이것은 의미가 없어 보입니다.
TRADE_RETCODE_TIMEOUT 또는 TRADE_RETCODE_FROZEN이라는 메시지가 표시되면 "//이유 결과.retcode 보기"에서 무엇을 하시겠습니까?
 
RickD :
서버에 빈 요청을 보내는 이유는 무엇입니까? 말이 안 되는 것 같습니다.
TRADE_RETCODE_TIMEOUT 또는 TRADE_RETCODE_FROZEN이라는 메시지가 표시되면 "//이유 결과.retcode 보기"에서 무엇을 하시겠습니까?
목을 매겠습니다 :)
 
Andrey Khatimlianskii :

양손으로 지원합니다. MQ는 주문을 보내고 응답을 받는 기성 기능에 대한 책임을 지고 싶지 않은 것 같습니다.

내 버전은 목발도 있습니다.

비슷한 일을 하고(모든 경우가 아니라 최소한 가장 단순한 경우에!) 그것을 안전보장이사회에 상정하는 것은 어떻습니까?

정말로, EA에서 강제로 기다려야 한다면 OrderSend (...)의 "빠른" 실행이 무슨 소용이 있습니까?

환경 업데이트, 이 경우 히스토리 업데이트 ... 그리고 이러한 기대에 대해 다른 알고리즘을 제시합니다 ...

결국 역사가 업데이트 될 때까지 우리는 더 이상 움직이지 않을 것입니다 ... 즉,이 속도의 이점이 없습니다 ...

 
Denis Sartakov :

사실, EA에서 강제로 기다려야 한다면 OrderSend(...)의 "빠른" 실행의 사용은 무엇입니까?

환경 업데이트, 이 경우 히스토리 업데이트 ... 그리고 이러한 기대에 대해 다른 알고리즘을 제시합니다 ...

결국 역사가 업데이트 될 때까지 우리는 더 이상 움직이지 않을 것입니다 ... 즉,이 속도의 이점이 없습니다 ...

아마도 이것은 OrderSend 및 OrderSendAsync가 터미널에서 병렬로 실행될 수 있고 OrderSend 이후 히스토리의 강제 동기화가 OrderSendAsync, OnTrade, OnTradeTransaction 에 어떻게든 영향을 미치고 속도를 늦출 것이라는 기대로 구현됩니다.
 
Andrey Khatimlianskii :
내장 언어 기능에 관한 것이 아니라 표준 라이브러리 에 관한 것입니다.
나는 OrderSend가 내부 거래 내역의 업데이트를 기다릴 수 있지만 기다리지 않는 내장 언어 기능에 대해 이야기하고 있습니다. :)
당신은 목발이 있다고 말하지만 그것이 무엇인지, 신뢰할 수 없습니다. 신뢰할 수 있는 좋은 목발의 예를 들어 보십시오.
나는 당신이 목발 없이도 할 수 있다고 말합니다. 개발자가 OrderSend의 동작을 변경하려는 경우. MT4에서와 같이하십시오.
글쎄 - 또는 여전히 대안적인 변형입니다. OrderSendMT4Style 기능을 추가합니다. :)
 

OrderSend의 매우 간단한 오버로드는 자체적으로 작성됩니다. OnTrade가 응답을 반환할 때까지 모든 후속 OrderSend는 false를 반환합니다. 응답을 받으면 강제 false가 취소됩니다.

안전보장이사회에 추가되어야 하는 것은 바로 이 결정입니다. 그리고 직접 사용하세요.

동일한 원칙에 따라 bool CTrade::IsHistoryLoad ( const string Symb = NULL ) 를 SB에 추가합니다.

그러면 목발은 없습니다! 두 함수 모두 직접 작성하기 쉽습니다.

ZY 완전히 가득 차고 싶다면(SB용이 아님) OnTrade에서 적절한 동기화가 도착하면 OnTick 및 OnTimer에 직접 전화하십시오.

 

어떤 종류의 목발이 작성되었는지... void OnTradeTransaction() 함수의 동작을 연구

 /*********************TradeTransaction function*********************/
void OnTradeTransaction ( const MqlTradeTransaction & trans,
                         const MqlTradeRequest & request,
                         const MqlTradeResult & result)
{
       if (trans.type == TRADE_TRANSACTION_DEAL_ADD )
       {
         if (! PositionSelectByTicket (trans.position))
         {
           //Print("********* закрылась позиция ", trans.position);
           closedPosition(trans);
         }
         if ( PositionSelectByTicket (trans.position))
         {
           //Print("********* отккрылась позиция ", ", ", EnumToString(trans.deal_type), ", ", trans.position);
           openedPosition(trans);
         }
       }
       
} /*******************************************************************/

또한 포지션 및 주문 개설 오류를 처리합니다.

 
Alexey Viktorov :

어떤 종류의 목발이 작성되었는지... void OnTradeTransaction() 함수의 동작을 연구

또한 포지션 및 주문 개설 오류를 처리합니다.

당신은 대각선으로 주제를 읽습니다.
 
fxsaber :
당신은 대각선으로 주제를 읽습니다.

아니요, 세로로만. 각 줄의 첫 글자만.

 
Andrey Khatimlianskii :

하나의 기기에서 2명의 Expert Advisors가 이 간단한 과부하로 어떻게 작동합니까?

불행히도 목발을 통해서만 - 터미널의 전역 변수 .
사유: