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

 
Mihail Matkovskij :

OnTradeTransaction 은 서버의 중지 주문이 트리거될 때 트리거됩니다.

하지만 기능을 등록해야 합니까?
 
Eugen8519 :
아마도 통해?

DEAL_REASON_SL
DEAL_REASON_TP

아니요

부두에는 OnTradeTransaction 의 아주 좋은 예가 있습니다.

 
MakarFX :
하지만 기능을 등록해야 합니까?

목적 을 위해   기능을 추가하면 편리합니다. 왜 안 돼?...

그러나 서버가 이를 수행하고 OnTradeTransaction 에 신호를 보내기 때문에 스톱 크로싱을 추적할 필요가 없습니다.

 
Mihail Matkovskij :

목적 을 위해   기능을 추가하면 편리합니다. 왜 안 돼?...

그러나 서버가 이를 수행하고 OnTradeTransaction 에 신호를 보내기 때문에 스톱 크로싱을 추적할 필요가 없습니다.

Misha, 나는 mql5에 강하지 않습니다. 이제 막 탐구하기 시작했습니다.

하지만 먼저 다음과 같은 것을 등록해야 한다고 생각합니다.

if( OnTradeTransaction (...)==....)  SendNotification ( "текст" );

내가 틀렸다면 기꺼이 수정하겠습니다.

 
MakarFX :

Misha, 나는 mql5에 강하지 않습니다. 이제 막 이해하기 시작했습니다.

하지만 먼저 다음과 같은 것을 등록해야 한다고 생각합니다.

내가 틀렸다면 기꺼이 수정하겠습니다.

OnTradeTransaction 은 이러한 이벤트 핸들러입니다. 따라서 모든 처리 코드가 그 안에 있어야 합니다. 원하는 경우 처리 기능을 호출하십시오. 링크에 있는 문서의 설명을 참조하십시오.
 
Mihail Matkovskij :
OnTradeTransaction 은 이러한 이벤트 핸들러입니다. 따라서 모든 처리 코드가 그 안에 있어야 합니다 . 글쎄, 또는 당신이 원한다면 처리 기능. 링크에 있는 문서의 설명을 참조하십시오.

우리는 같은 것에 대해 이야기하고 있습니까?

if( OnTradeTransaction ( ... )==....)  SendNotification ( "текст" );
 
그렇다면? mql4에서처럼 발견됨
 void AlertOrder()

{

   string txt;

   double OCP;

   int i=OrdersHistoryTotal()- 1 ;

   if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true )

   {                                

      OCP=OrderClosePrice();

       if (OCP==OrderStopLoss()) txt= "SL" ;

       if (OCP==OrderTakeProfit()) txt= "TP" ;

      }

       SendNotification ( Symbol () + " hit " +txt+ "" );

 }
 
Eugen8519 :
그렇다면? mql4에서처럼 발견됨
OrdersHistoryTotal

mql5에 없음

 
MakarFX :

우리는 같은 것에 대해 이야기하고 있습니까?

아니요. if 조건에서 핸들러를 호출할 것입니다. 하지만 아무데서나 부를 필요는 없습니다. OnTradeTransaction 에 처리 코드를 작성하기만 하면 됩니다. 중지가 트리거될 때 OnTradeTransaction 에 전달되는 매개변수를 확인하십시오.

이벤트가 무엇인지, 이벤트 핸들러가 무엇인지, MQL의 이벤트는 무엇인지 알아야 합니다. 그러면 모든 것을 이해하기 시작할 것입니다.

다음은 이벤트 처리 기능에 대한 링크입니다. https://www.mql5.com/ru/docs/basis/function/events#ontradetransaction .

혼동을 피하기 위해 단순히 이벤트 핸들러 라고 하는 경우가 많습니다. 예를 들어, OnTradeTransaction 을 if에서 호출되는 일반 함수와 어떻게 혼동했습니까?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Eugen8519 :
그렇다면? mql4에서처럼 발견됨

이것을 시도하십시오 (나는 테스트하지 않았습니다)

 datetime lastclouse; 
int OnInit ()
  {
   lastclouse= TimeCurrent ();
   .....
  }
void OnTick ()
  {
   if (LastClouseProfit()!= EMPTY_VALUE ) SendNotification (LastClouseProfit());
   .....   
  }  
double LastClouseProfit()
  {
   ulong ticket= 0 ;
   double profit= EMPTY_VALUE ;
   HistorySelect (lastclouse, TimeCurrent ());
   ticket= HistoryDealGetTicket ();
   profit= HistoryDealGetDouble (ticket, DEAL_PROFIT );
   if (profit!= EMPTY_VALUE ) lastclouse= TimeCurrent ();
   return (profit);
  }