위대하고 끔찍한 MT4 영원히 (또는 전환 전략을 올바르게 개발하는 방법) - 페이지 27

 

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

MQL5의 OrderModify()?

에드워드 먼로 , 2021.05.27 00:51

간단한 질문, 간단한 답변을 얻으세요!!?! mql5의 거의 모든 것이 왜 그렇게 지저분해 졌습니까?

좋은 질문.

 

전통적으로 주말 전에 간단한 작업.

포지션은 1로트 열려 있습니다. 스크립트를 실행한 후 위치가 0.9랏이 되는지 확인해야 합니다.

스크립트는 언제든지 실행할 수 있음이 분명합니다. 따라서 많은 상황에 직면할 수 있습니다.


여느 때처럼 고전적으로 문제를 해결하려고 노력했습니다.

 // Частичное закрытие позиции.

#include <Trade\Trade.mqh>

void OnStart ()
{
  CTrade Trade;
  
   if (Trade.Buy( 1 )) // Пытаемся открыть позицию на 1 лот.
  {
     const ulong Ticket = Trade.ResultOrder();
    
     // Ждем, пока не появится.
     while (! IsStopped () && ! PositionSelectByTicket (Ticket))
       Sleep ( 0 );
      
     // А теперь просто закрываем 0.1 лота в случае, если объем позиции равен 1.
     // Цикл - для эмуляции запуска скрипта в любой момент.
     while (! IsStopped () && PositionSelectByTicket (Ticket) && ( PositionGetDouble ( POSITION_VOLUME ) == 1 ))
      Trade.PositionClosePartial(Ticket, 0.1 );
  }
}


이 스크립트를 실행하면 0.8랏의 위치가 제공됩니다. 0.9가 필요합니다.

 
fxsaber :

이 스크립트를 실행하면 0.8랏의 위치가 제공됩니다. 0.9가 필요합니다.

2대의 서버에서 몇 번 확인했지만 0.9만 있습니다.


테스트의 논리는 이해할 수 있습니다. 우리는 한 틱에서 실행의 비동기성을 없애려고 노력하고 있습니다. 이 프로세스의 일반적인 계획을 알고 싶습니다(한 틱에서 동기화하는 방법)

 
fxsaber :

전통적으로 주말 전에 간단한 작업.


에쉬킨 고양이! 그리고 0.8(MQDemo -0.9에서)이 있습니다. 네, 이 갈퀴가 몇 개나 될까요?

 
Igor Makanu :

2대의 서버에서 몇 번 확인했지만 0.9만 있습니다.

 
 

아마도 현재로서는 이 스레드에서 쉽게 공식화되는 모든 작업 중 가장 어려운 작업 일 것입니다.

MQL5 거래 부분의 소유권에 대한 매우 강력한 검증.

 

0 SL 및 TP 로 구매 주문 을 연 다음 SL 및 TP 30 pp를 배치하십시오.

MT4의 경우 이 코드가 작동합니다.

 void OnStart ()
{
   int ticket;
   if ((ticket = OrderSend ( _Symbol , OP_BUY, 0.1 , Ask, 30 , 0.0 , 0.0 )) < 0 ||
         ! OrderSelect (ticket, SELECT_BY_TICKET) ||
         !OrderModify(ticket, OrderOpenPrice(), NormalizeDouble (OrderOpenPrice() - 300 * _Point , _Digits ), NormalizeDouble (OrderOpenPrice() + 300 * _Point , _Digits ), OrderExpiration()))
   {
       Print ( "Error Open order # " , GetLastError ());
   }
}
 
Igor Makanu :

0 SL 및 TP 로 구매 주문 을 연 다음 SL 및 TP 30 pp를 배치하십시오.

MT4의 경우 이 코드가 작동합니다.

2~3년 전쯤에는 성과형 인식이 단말 수준에서 도입됐다. 이제 Market Execution으로도 SL과 TP를 설정할 수 있으며, 단말기 자체에서 주문을 두 개의 거래 주문으로 분할합니다.

 
Igor Makanu :

0 SL 및 TP 로 구매 주문 을 연 다음 SL 및 TP 30 pp를 배치하십시오.

일반적인 작업.