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

 
Karputov Vladimir:
Sonho11:

Boa tarde, aqui está o problema... há uma função de paragem de reboque...

Como alterá-lo para arrastar um número ilimitado de ordens em vez de apenas uma ...


Eu tenho um destes, arrasta tudo.
extern int             TrailingStep = 10;     //Шаг трейлинга
extern int             TrailingStop = 30;     //Трейлинг стоп
//+------------------------------------------------------------------+
//Трейлинг стоп
void Trailing()
{
 int err = GetLastError();
 err = 0;
 
 for(int i = OrdersTotal()-1; i>=0; i--)
 {
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
   {
    if(OrderType() == OP_BUY)
    {     
     if(Ask - OrderOpenPrice() > TrailingStop*Point)
     {
      if(OrderStopLoss() < Ask - (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TrailingStop*Point,Digits),OrderTakeProfit(),0,clrGreen))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на покупку! Код ошибки: ",err,".");
       }
      }
     }
    }
    if(OrderType() == OP_SELL)
    {
     if(OrderOpenPrice() - Bid > TrailingStop*Point)
     {
      if(OrderStopLoss() > Bid + (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TrailingStop*Point,Digits),OrderTakeProfit(),0,clrRed))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на продажу! Код ошибки: ",err,".");
       }
      }
     }
    }
   }
  }
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
Eu tenho um destes, fode tudo.
É praticamente a mesma coisa, talvez esteja a chamar-lhe no lugar errado.
 
Alexey Viktorov:
Não o pode fazer através do OnTimer()?

Estou a fazê-lo por temporizador. Já o descobri, obrigado, só precisava de adicionar a função ChartRedraw em cada laço para actualizar o gráfico. Raios, eles adicionaram muitas complexidades em mql5 após mql4, mas talvez seja para o melhor...

 
Outra questão, como pode uma variável data/hora (tipo data/hora) ser convertida em NÚMERO de segundos depois de 1970? Porque se equiparar o tempo a um inteiro normal, esta variável será de facto igual a este número de segundos, mas haverá um aviso"possível perda de dados devido à conversão do tipo", é um pouco irritante, há alguma forma de resolver o problema?

 
loleg1991:
Outra questão, como pode uma variável data/hora (tipo data/hora) ser convertida em NÚMERO de segundos após 1970? Porque se equivaler a um valor de tempo inteiro regular, esta variável será de facto igual a este número de segundos, mas haverá um aviso de"possível perda de dados devido à conversão do tipo", é um pouco irritante, há alguma forma de resolver o problema?

Ler "Conversão do tipo numérico" na documentação
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Outra questão, como pode uma variável data/hora (tipo data/hora) ser convertida em NÚMERO de segundos após 1970? Porque se se equiparar a um valor de tempo inteiro regular, esta in-variável será realmente igual a este número de segundos, mas haverá um aviso de"possível perda de dados devido à conversão do tipo", é um pouco incómodo, há alguma forma de resolver o problema?

data/hora é o número de segundos

https://www.mql5.com/ru/docs/basis/types/integer/datetime

.

https://www.mql5.com/ru/docs/convert/stringtotime

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Outra questão, como pode uma variável data/hora (tipo data/hora) ser convertida em NÚMERO de segundos após 1970? Porque se o equiparar a um valor inteiro regular de tempo, esta in-variável será realmente igual a este número de segundos, mas haverá um aviso de"possível perda de dados devido à conversão do tipo", é um pouco irritante, há alguma forma de resolver o problema?

Se se refere não como data, mas como número de segundos, então converta-o explicitamente para tipo longo.
 
Alexey Kozitsyn:
Se pretende exibir o número de segundos, mas não a data, então faça dele explicitamente um tipo longo.
Sim, referia-me à exposição, obrigado, que ajuda.
 
loleg1991:
Sim, referia-me à exposição, obrigado, que ajuda.
De nada)
 

Olá, poderia por favor dizer-me se é possível ao Consultor Especialista adicionar um objecto como um botão ou um interruptor para a tabela, e em caso afirmativo, como?