Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1489

 
Maksim Burov comentários no código do EA?
Quais são as opções para corrigir isso?
Isso afeta a velocidade da otimização?

Você não precisa usar o kanvas.

Para que o comentário não torne o testador mais lento com a visualização, é necessário que ele não seja chamado com mais frequência do que 30 milissegundos.

Por exemplo, assim:

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
Ou use Print em vez de Comment se for importante não pular valores.

Se for importante uma melhor visualização da saída de quaisquer valores, então o kanvas é melhor.

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov Os comentários não afetam a velocidade da otimização.
 
Maksim Burov #:

As informações mudam periodicamente.
Por exemplo, quero ver a posição com o menor preço de abertura. Ou saber o tick da última posição fechada.
Você pode escrever tudo na impressão, mas não é conveniente olhar, você pode errar. Assim, posso ver imediatamente onde há erros.

As informações não mudam a cada tick? Nikolay também sugeriu que você pode simplesmente fazer a saída após algum tempo limite, reduzindo assim a frequência dessa saída.
 

Muito obrigado por sua ajuda.
Agora tenho outra tarefa.

Há uma função que conta o lucro de todas as ordens fechadas após um determinado tick.
O horário de fechamento da ordem (posição) foi adicionado para verificação.
Como tudo foi escrito em MQL4 e agora está sendo reescrito em MQL5, surgiu a questão de como executar essa verificação de forma correta e competente.

Em outras palavras, como reescrever o código em 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 #:

Muito obrigado a todos pela ajuda.
Agora outro desafio.

Há uma função que conta o lucro de todas as ordens fechadas após um determinado tick.
O horário de fechamento da ordem (posição) foi adicionado para verificação.
Como tudo foi escrito em MQL4 e agora está sendo reescrito em MQL5, surgiu a questão de como executar essa verificação de forma correta e competente.

Em outras palavras, como reescrever o código em 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);
          ...
         }

Algo parecido com isso.

 
Maksim Burov #:

Muito obrigado a todos pela ajuda.
Agora outro desafio.

Há uma função que conta o lucro de todas as ordens fechadas após um determinado tick.
O horário de fechamento da ordem (posição) foi adicionado para verificação.
Como tudo foi escrito em MQL4 e agora está sendo reescrito em MQL5, surgiu a questão de como executar essa verificação de forma correta e competente.

Em outras palavras, como reescrever o código em MQL5)

Como não se trata de pedidos (post anterior), mas de negócios que serão pesquisados, é mais conveniente usar este código

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

Algo do gênero.

Eu falhei( Você pode elaborar um pouco mais sobre a base do meu código.

 
Maksim Burov #:

Eu falhei( Você pode elaborar um pouco mais com base no meu código.

Talvez seja melhor dar uma olhada na variante de Aleksandr Slavskii. Eu não trabalhei com MQL4 e também com hedging.

Ou preste atenção aqui e, por via das dúvidas, aqui.

 
JRandomTrader #:

Talvez seja melhor dar uma olhada na variante de Aleksandr Slavskii. Não trabalhei com MQL4 e também não trabalhei com hedging.

Ou preste atenção aqui e, por via das dúvidas, aqui.

Não é melhor. Essas são funções usuais do fxsaber.

Sua variante é bastante aceitável, mas você precisa substituir as ordens por transações. Lucro, comissão e swap são armazenados por transações, não por ordens.

 
Olá, tenho um problema com o VPS. Não recebo notificações em meu telefone quando o MT4 está desligado. Quando a plataforma está ligada, as notificações funcionam. Alguém pode me dar alguma dica sobre o que pode estar errado? Obrigado, senhor