mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 6

 
fxsaber :
지금까지 제안된 솔루션은 다른 문제를 일으키지 않았습니다. 그래서 더 좋은 제안을 할 수 없었습니다.
공유해 주셔서 감사합니다.
 
fxsaber :
이제 SB 앞에 솔루션을 삽입하면 동기화됩니다.
작은 예를 들어도 될까요? 수업을 연결할 때 - 귀하와 SB:
#include <Ваш_класс.mqh>
#include <Trade\Trade.mqh>
컴파일이 충돌하기 시작합니다.
 
Artyom Trishkin :
작은 예를 들어도 될까요? 수업을 연결할 때 - 귀하와 SB:
#include <Ваш_класс.mqh>
#include <Trade\Trade.mqh>
컴파일이 충돌하기 시작합니다.

본론으로 들어가겠습니다)

여기에서 가져온

 
비탈리 무지첸코 :

본론으로 들어가겠습니다)

여기에서 가져온

이미.

라인만 바꿨는데..
 
Artyom Trishkin :
작은 예를 들어도 될까요? 수업을 연결할 때 - 귀하와 SB:
#include <Ваш_класс.mqh>
#include <Trade\Trade.mqh>
컴파일이 충돌하기 시작합니다.
죄책감이 지나치게 자신감에 차서 확인하지 않았습니다.
비탈리 무지첸코 :

본론으로 들어가겠습니다)

예,이 뉘앙스를 잊어 버렸습니다. 사실, 그러한 제한은 없습니다 ...

내포물을 재정렬하면 물론 욕은 없습니다. 그러나 효과는 0이 됩니다. SB는 동기화되지 않습니다.

불행히도 좋은 해결책이 보이지 않습니다. 일단은 하자

// Вместо #include <Trade\Trade.mqh> использовать этот код
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.

#ifdef OrderSend
   #undef OrderSend

   #define CTrade CTradeBase
     #include <Trade\Trade.mqh>
   #undef CTrade
  
   class CTrade : public CTradeBase
  {
     virtual bool OrderSend ( const MqlTradeRequest &request, MqlTradeResult &result)
      {
       bool res;
       string action= "" ;
       string fmt   = "" ;
     //--- action
       if (m_async_mode)
          res=:: OrderSendAsync (request,result);
       else
          res= ORDERSEND::OrderSendSync(request,result); // единственное отличие от стандарта
     //--- check
       if (res)
         {
           if (m_log_level>LOG_LEVEL_ERRORS)
             PrintFormat ( __FUNCTION__ + ": %s [%s]" ,FormatRequest(action,request),FormatRequestResult(fmt,request,result));
         }
       else
         {
           if (m_log_level>LOG_LEVEL_NO)
             PrintFormat ( __FUNCTION__ + ": %s [%s]" ,FormatRequest(action,request),FormatRequestResult(fmt,request,result));
         }
     //--- return the result
       return (res);
      }
  };
  
   // Эта строчка позволяет сделать все OrderSend корректными.
   #define OrderSend ORDERSEND::OrderSendSync  
#else
  
#include <Trade\Trade.mqh>
#endif
 
fxsaber :
죄책감이 지나치게 자신감에 차서 확인하지 않았습니다.

예,이 뉘앙스를 잊어 버렸습니다. 사실, 그러한 제한은 없습니다 ...

내포물을 재정렬하면 물론 욕은 없습니다. 그러나 효과는 0이 됩니다. SB는 동기화되지 않습니다.

불행히도 좋은 해결책이 보이지 않습니다. 일단은 하자

// Вместо #include <Trade\Trade.mqh> использовать этот код
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.

...
Trade\Trade.mqh에서 상속하려면 어떻게 합니까? 어떻게?

글쎄, 즉, 당신의 클래스를 연결하고 Trade\Trade.mqh는 트레일러에 의해 당겨질 것입니다.
 
Artyom Trishkin :
Trade\Trade.mqh에서 상속하려면 어떻게 합니까? 어떻게?

글쎄, 즉, 당신의 클래스를 연결하고 Trade\Trade.mqh는 트레일러에 의해 당겨질 것입니다.
상속은 이전과 같이 작동합니다. 그러나 질문을 명확히 하는 것이 좋습니다.
 
fxsaber :
상속은 이전과 같이 작동합니다. 그러나 질문을 명확히 하는 것이 좋습니다.
다음은 CTrade에서 상속받을 코드 입니다.

즉, 코드의 첫 번째 줄에서 CTrade를 기본 클래스로 만듭니다.

class ORDERSEND  : public CTrade
따라서 Trade\Trade.mqh가 아닌 프로그램에 연결하십시오. 예를 들어 #include <aTradeSync.mqh>에는 클래스가 포함되어 있습니다. 맨 처음에는 #include <Trade\Trade. mqh > .

이 경우 어떻게 해야 합니까? #include <Trade\Trade.mqh> 대신 제안된 코드를 삽입하시겠습니까?
 
Artyom Trishkin :
다음은 CTrade에서 상속받을 코드 입니다.

즉, 코드의 첫 번째 줄에서 CTrade를 기본 클래스로 만듭니다.

class ORDERSEND  : public CTrade

따라서 Trade\Trade.mqh가 아닌 프로그램에 연결하십시오. 예를 들어 #include <aTradeSync.mqh>에는 클래스가 포함되어 있습니다. 맨 처음에는 #include <Trade\Trade. mqh > .

난 그렇게하지 않을거야, 왜냐하면 이를 위해서는 이전에 작성된 Expert Advisor를 변경해야 합니다. 그리고 순수한 OrderSend는 동기화되지 않고 Sat-OrderSend만 동기화됩니다. 모든 사람이 SB 전용을 사용하는 것은 아닙니다. 일부는 순수한 MQL5도 경멸하지 않습니다.

따라서 지금까지는 아래의 솔루션이 최적인 것 같습니다. 모든 전문가들은 변함없이 일할 것입니다.

#include <OrderSendSync.mqh> // Если хочется, чтобы OrderSend был синхронизированным.
#include <TradeSync.mqh>     // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
파일:
 
fxsaber :

난 그렇게하지 않을거야, 왜냐하면 이를 위해서는 이전에 작성된 Expert Advisor를 변경해야 합니다. 그리고 순수한 OrderSend는 동기화되지 않고 Sat-OrderSend만 동기화됩니다. 모든 사람이 SB 전용을 사용하는 것은 아닙니다. 일부는 순수한 MQL5도 경멸하지 않습니다.

따라서 지금까지는 아래의 솔루션이 최적인 것 같습니다. 모든 전문가들은 변함없이 일할 것입니다.

#include <OrderSendSync.mqh> // Если хочется, чтобы OrderSend был синхронизированным.
#include <TradeSync.mqh>     // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
알았습니다. 덕분에.
사유: