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

 
Nikolai Semko :

2년 전 다른 언어의 효과를 비교한 흥미로운 연구를 찾았습니다.

https://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf



어머!

에이다는 살아서 성장하고 있다?! 내가 틀리지 않는다면, 첫 번째 OOP. 80년대 초반에 공부했습니다. 지금까지 나는 그것에 대해 아무 것도 듣지 못했고 Modula처럼 언어가 죽었다고 생각했습니다. 둘 다 Pascal의 깊은 현대화입니다. 나는 Ada 컴파일러가 없었지만 누군가가 기억한다면 Modula는 DVK에서 7-패스였습니다.

 

테스터에서 실행 오류가 발생하지 않도록 현재 가격에서 지연 또는 SL/TP를 설정해야 하는 경우 적절한 시장 주문을 보내십시오.

  • 현재 가격으로 지연 설정 - OrderSend 후에 시장가 주문을 추가합니다.
  • 우리는 현재 가격에 SL/TP 포지션을 공개합니다 - 우리는 OrderClose 이후에 포지션을 추가합니다.
 
fxsaber :

테스터에서 실행 오류가 발생하지 않도록 현재 가격에서 지연 또는 SL/TP를 설정해야 하는 경우 적절한 시장 주문을 보내십시오.

  • 현재 가격으로 지연 설정 - OrderSend 후에 시장가 주문을 추가합니다.
  • 우리는 현재 가격에 SL/TP 포지션을 공개합니다 - 우리는 OrderClose 이후에 포지션을 추가합니다.

더 정교한 작업을 수행할 수 있습니까? 결국 아무것도 명확하지 않습니다.

  • 현재 가격으로 보류 주문을 하려면 포지션 개설 요청을 보낸 후 무언가를 추가해야 합니다(????????)
  • 현재 가격에 스탑 오더(What?)를 하려면 포지션 청산 요청(????????)을 보낸 후 무언가를 추가해야 합니다.
이것은 당신이 쓴 것을 해독하려고 시도한 후에 나타나는 질문입니다 ...
 
Artyom Trishkin :

더 정교한 작업을 수행할 수 있습니까? 결국 아무것도 명확하지 않습니다.

  • 현재 가격으로 보류 주문을 하려면 포지션 개설 요청을 보낸 후 무언가를 추가해야 합니다(????????)
  • 현재 가격에 스탑 오더(What?)를 하려면 포지션 청산 요청(????????)을 보낸 후 무언가를 추가해야 합니다.
이것은 당신이 쓴 것을 해독하려고 시도한 후에 나타나는 질문입니다 ...

문제는 여기 에 나와 있습니다. 결정.

 // Делает более точными MT4/5-тестеры.
TICKET_TYPE MyOrderSend( const string Symb, int Type, const double dVolume, const double Price, const int SlipPage, const double SL, const double TP,
                         const string comment = NULL , const MAGIC_TYPE magic = 0 , const datetime dExpiration = 0 , color arrow_color = clrNONE )
{
   static const bool IsTester = MQLInfoInteger ( MQL_TESTER );
   MqlTick Tick = { 0 };  
  
   bool Res = IsTester && SymbolInfoTick (Symb, Tick);
  
   if (Res && (Type > OP_SELL))
  {
     if ((Type == OP_BUYLIMIT) || (Type == OP_BUYSTOP))
    {
       if (Price == Tick.ask)
        Type = OP_BUY;
    }
     else if (Price == Tick.bid)
      Type = OP_SELL;
  }
  
   const TICKET_TYPE Ticket = OrderSend (Symb, Type, dVolume, Price, SlipPage, SL, TP, comment, magic, dExpiration, arrow_color);
  
  Res = Res && (Type <= OP_SELL) && (Ticket != - 1 ) &&
        (Type ? (SL == Tick.ask) || (TP == Tick.ask) : (SL == Tick.bid) || (TP == Tick.bid)) &&
        OrderClose(Ticket, dVolume, Type ? Tick.ask : Tick.bid, SlipPage, arrow_color);
  
   return (Ticket);
}

// Делает более точными MT4/5-тестеры.
bool MyOrderModify( const long Ticket, const double Price, const double SL, const double TP, const datetime Expiration, const color Arrow_Color = clrNONE )
{
   static const bool IsTester = MQLInfoInteger ( MQL_TESTER );
  
   bool Res = false ;
  
   if (IsTester && OrderSelect (Ticket, SELECT_BY_TICKET) && !OrderCloseTime())
  {
     if (OrderType() <= OP_SELL)
    {
      Res = (OrderClosePrice() == SL) || (OrderClosePrice() == TP);
      Res = OrderModify(Ticket, Price, SL, TP, Expiration, Arrow_Color) && (!Res || OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0 , Arrow_Color));
    }
     else if (OrderClosePrice())    
      Res = ((OrderClosePrice() == Price) &&
             (MyOrderSend(OrderSymbol(), OrderType() & 1 , OrderLots(), Price, 0 , SL, TP,
                          OrderComment(), OrderMagicNumber(), OrderExpiration(), Arrow_Color) != - 1 ) && OrderDelete(Ticket)) ||
            OrderModify(Ticket, Price, SL, TP, Expiration, Arrow_Color);
     else
    {
       MqlTick Tick = { 0 };
      
       if ( SymbolInfoTick (OrderSymbol(), Tick))
        Res = ((( bool )(OrderType() & 1 ) ? (Price == Tick.bid) : (Price == Tick.ask)) &&
               (MyOrderSend(OrderSymbol(), OrderType() & 1 , OrderLots(), Price, 0 , SL, TP,
                            OrderComment(), OrderMagicNumber(), OrderExpiration(), Arrow_Color) != - 1 ) && OrderDelete(Ticket)) ||
               OrderModify(Ticket, Price, SL, TP, Expiration, Arrow_Color);
       else
        Res = OrderModify(Ticket, Price, SL, TP, Expiration, Arrow_Color);                     
    }
  }
   else
    Res = OrderModify(Ticket, Price, SL, TP, Expiration, Arrow_Color); 
  
   return (Res);
}

#define OrderSend MyOrderSend
#define OrderModify MyOrderModify
 
fxsaber :

문제는 여기 에 나와 있습니다. 결정.

이로부터 그것이 왜 필요한지, 무엇을 해야 하는지가 명확하지 않았습니다. 실제로 많은 사람들이 코드를 읽기 시작하여 자체적으로 만들거나 기성품을 사용하기 전에 솔루션을 작성하게 된 이유에 대해 쓰여진 내용을 이해해야 합니다.

글쎄, 나는 이것을 더 자세히 설명하기 위해 단어를 요청했습니다.

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

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2019.12.18 12:45

테스터에서 실행 오류가 발생하지 않도록 현재 가격에서 지연 또는 SL/TP를 설정해야 하는 경우 적절한 시장 주문을 보내십시오.

  • 현재 가격으로 지연 설정 - OrderSend 후에 시장가 주문을 추가합니다.
  • 우리는 현재 가격에 SL/TP 포지션을 공개합니다 - 우리는 OrderClose 이후에 포지션을 추가합니다.

그리고 그는 그것이 나, 그리고 아마도 다른 누군가에 의해 어떻게 인식되었는지에 대한 예를 보여주었습니다.

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

mql5 언어의 특징, 미묘함 및 작업 방법

Artyom Trishkin , 2019.12.18 12:53

더 정교한 작업을 수행할 수 있습니까? 결국 아무것도 명확하지 않습니다.

  • 현재 가격으로 보류 주문을 하려면 포지션 개설 요청을 보낸 후 무언가를 추가해야 합니다(????????)
  • 현재 가격에 스탑 오더(What?)를 하려면 포지션 청산 요청(????????)을 보낸 후 무언가를 추가해야 합니다.
이것은 당신이 쓴 것을 해독하려고 시도한 후에 나타나는 질문입니다 ...

어쨌든...

 
Artyom Trishkin :

글쎄, 나는 더 자세히 설명하기 위해 단어를 물었다

현재 가격 에서 지연 및 SL/TP를 설정하는 것은 MT5 테스터에서 현재 틱에 대한 실행을 허용하지 않습니다.

 

안녕 모두.

MT5에 눈금 차트를 표시하기 위한 도구가 무엇인지 알려주세요.

MT4에는 "오프라인으로 열기" 옵션이 있었습니다. 고유한 hst 히스토리 파일을 생성하여 틱으로 작업하는 것이 편리했습니다.

그리고 MT5에서는 "자율적으로 열림"이 원칙적으로 없습니다. 진드기 작업을 위한 소프트웨어 도구는 훌륭하지만.

차트에 표시할 수 있는 가능성이 일부 제공되지 않았을 수 있습니다.

 
fxsaber :

문제는 여기 에 나와 있습니다. 결정.

   const TICKET_TYPE Ticket = OrderSend ();
  ...
  OrderClose(Ticket, dVolume, Type ? Tick.ask : Tick.bid, SlipPage, arrow_color);

글쎄, 젠장! 현재 가격으로 SL/TP를 개설하는 이유는 무엇입니까?

글쎄, SL / TP를 현재 가격에 배치하여 마감합니다. 그렇다면 의도적으로. 또한 작업을 에뮬레이트할 필요가 없습니다.

 
Andrey Khatimlianskii :

글쎄, 젠장! 현재 가격으로 SL/TP를 개설하는 이유는 무엇입니까?

글쎄, SL / TP를 현재 가격에 배치하여 마감합니다. 그렇다면 의도적으로. 또한 작업을 에뮬레이트할 필요가 없습니다.

그래서 당신은 단순히 수십 분 또는 몇 시간 안에 응답을 얻을 수 있습니다 ..

어떻게 든 계산 된 TP로 마감해야한다고 상상해보십시오. 그리고 지금 은 현재 가격 과 동일 하게 되었습니다 .

 
fxsaber :

어떻게 든 계산 된 TP를 닫아야합니다. 그리고 지금 은 현재 가격 과 동일 하게 되었습니다 .

이 경우 나는 항상 이 TP가 이미 효과가 있었는지(가격이 교차했는지) 확인하고 시장에 따라 잘라냅니다.

또는, 한도를 가지고 외출을 해야 하는 경우, 물에 잠길 때까지 가격 뒤에서 잡아당기십시오.