초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1489

 
Maksim Burov 댓글을 포함하면 비주얼 테스터가 느려지는 이유를 알려주시겠어요?
이 문제를 해결하기 위한 옵션에는 어떤 것이 있나요?
최적화 속도에 영향을 주나요?

캔버스를 사용할 필요는 없습니다.

댓글로 인해 시각화 테스터의 속도가 느려지지 않으려면 댓글이 30밀리초 이상 자주 호출되지 않아야 합니다.

예를 들어 다음과 같습니다:

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
또는 값을 건너뛰지 않는 것이 중요한 경우 댓글 대신 인쇄를 사용하세요.

값의 출력을 더 잘 시각화하는 것이 중요하다면 캔버스가 더 좋습니다.

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov 댓글은 최적화 속도에 영향을 미치지 않습니다.
 
Maksim Burov #:

정보는 주기적으로 변경됩니다.
예를 들어 시가가 가장 낮은 포지션을 보고 싶습니다. 또는 마지막 종가 포지션의 틱을 알고 싶습니다.
인쇄물에 모든 것을 쓸 수 있지만보기가 편리하지 않고 놓칠 수 있습니다. 그래서 오류가 있는 부분을 즉시 확인할 수 있습니다.

정보가 모든 틱을 변경하지 않습니까? Nikolay는 또한 시간 초과 후 출력을 간단히 만들 수 있으므로이 출력의 빈도를 줄일 수 있다고 제안했습니다.
 

도와주셔서 감사합니다.
이제 또 다른 작업이 있습니다.

특정 틱 후 모든 청산된 주문의 수익을 계산하는 기능이 있습니다.
주문(포지션) 청산 시간이 확인을 위해 추가되었습니다.
모든 것이 MQL4로 작성되었고 이제 MQL5로 다시 작성되고 있기 때문에이 검사를 정확하고 유능하게 재생하는 방법에 대한 질문이 생겼습니다.

간단히 말해, MQL5에서 코드를 다시 작성하는 방법)

double CalculateProfitHistory() 
{
   double profit = 0;
   int  i, ototal = OrdersHistoryTotal();

   for(i = ototal-1; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderSymbol() == Symbol() && OrderCloseTime() > 0)
         {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
               if(OrderMagicNumber() == Magic )
               {
                  if (LockTicket !=0)
                  {
                     if (OrderTicket() >= LockTicket)
                     {
                        profit += OrderProfit()+OrderCommission()+OrderSwap();
                     }                  
                  }
               }
            }
         }
      }
   }
   return(profit);
}
 
Maksim Burov #:

여러분의 도움에 감사드립니다.
이제 또 다른 도전입니다.

특정 틱 이후 모든 청산된 주문의 수익을 계산하는 기능이 있습니다.
주문(포지션) 청산 시간이 확인을 위해 추가되었습니다.
모든 것이 MQL4로 작성되었고 이제 MQL5로 다시 작성되고 있기 때문에이 확인을 정확하고 유능하게 재생하는 방법에 대한 질문이 생겼습니다.

간단히 말해, MQL5에서 코드를 다시 작성하는 방법)

// сначала выбираем нужный интервал
HistorySelect(TimeStart,TimeCurrent()+10);

// перебираем ордера в интервале
for(i=HistoryOrdersTotal()-1;i>=0;i--)
         {
          ord=HistoryOrderGetTicket(i);

         // далее получаем (или сразу сравниваем) любые свойства ордера, типа
          o_sym=HistoryOrderGetString(ord, ORDER_SYMBOL);
          o_magic=HistoryOrderGetInteger(ord, ORDER_MAGIC);
          ...
         }

이런 식으로요.

 
Maksim Burov #:

여러분의 도움에 감사드립니다.
이제 또 다른 도전입니다.

특정 틱 이후 모든 청산된 주문의 수익을 계산하는 기능이 있습니다.
주문(포지션) 청산 시간이 확인을 위해 추가되었습니다.
모든 것이 MQL4로 작성되었고 이제 MQL5로 다시 작성되고 있기 때문에이 확인을 정확하고 유능하게 재생하는 방법에 대한 질문이 생겼습니다.

간단히 말해, MQL5에서 코드를 다시 작성하는 방법)

주문 (이전 게시물)이 아니라 검색 할 거래이므로이 코드를 사용하는 것이 가장 편리합니다.

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • 2023.11.22
  • www.mql5.com
HistoryPositionsTotal Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение Значение типа
 
JRandomTrader #:

그런 식이죠.

실패했습니다(제 코드를 기반으로 좀 더 자세히 설명해 주실 수 있나요?

 
Maksim Burov #:

실패했습니다(제 코드를 기반으로 좀 더 자세히 설명해 주세요.

알렉산드르 슬라브스키의 변형을 살펴보는 것이 더 나을 것 같습니다. 저는 MQL4와 헤지 작업도 해본 적이 없습니다.

또는 여기와 만일을 대비하여 여기를 주목하세요.

 
JRandomTrader #:

알렉산드르 슬라브스키의 변형을 살펴보는 것이 더 나을 것 같습니다. 저는 MQL4를 사용해 본 적이 없고, 헤징도 사용해 본 적이 없습니다.

또는 여기와 만일을 대비하여 여기를 주목하세요.

더 좋습니다. 이것들은 fxsaber의 일반적인 기능입니다.

귀하의 변형은 매우 허용되며 주문을 거래로 대체하기 만하면됩니다. 수익, 수수료 및 스왑은 주문이 아닌 거래에 의해 저장됩니다.

 
안녕하세요, VPS에 문제가 있습니다. MT4가 꺼져 있을 때 휴대폰으로 알림이 오지 않습니다. 플랫폼이 켜져 있으면 알림이 작동합니다. 무엇이 잘못되었을 수 있는지 조언해 주시겠습니까? 감사합니다
사유: