Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 587

 
Karputov Vladimir:
Dream11:

Buon pomeriggio, ecco un problema... c'è una funzione di trailing stop...

Come cambiarlo per tracciare un numero illimitato di ordini invece di uno solo ...


Ho uno di questi, che traina tutto.
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:
Ho uno di questi, si fotte tutto.
È più o meno lo stesso, forse lo stai chiamando nel posto sbagliato.
 
Alexey Viktorov:
Non potete farlo attraverso OnTimer()?

Lo faccio con il timer. L'ho già capito, grazie, avevo solo bisogno di aggiungere la funzione ChartRedraw in ogni ciclo temporale per aggiornare il grafico. Accidenti, hanno aggiunto un sacco di complessità in mql5 dopo mql4, ma forse è meglio così...

 
Un'altra domanda, come può una variabile data-ora (tipo datetime) essere convertita in NUMERO di secondi dopo il 1970? Perché se si equipara il tempo a un intero regolare, questa int-variabile sarà effettivamente uguale a questo numero di secondi, ma ci sarà un avviso"possibile perdita di dati a causa della conversione del tipo", è un po' fastidioso, c'è un modo per risolvere il problema?

 
loleg1991:
Un'altra domanda, come può una variabile data-ora (tipo datetime) essere convertita in NUMERO di secondi dopo il 1970? Perché se si equipara a un normale valore di tempo intero, questa int-variabile sarà effettivamente uguale a questo numero di secondi, ma ci sarà un avviso"possibile perdita di dati a causa della conversione del tipo", è un po' fastidioso, c'è un modo per risolvere il problema?

Leggere "Conversione del tipo numerico" nella documentazione
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Un'altra domanda, come può una variabile data-ora (tipo datetime) essere convertita in NUMERO di secondi dopo il 1970? Perché se si equipara a un regolare valore di tempo intero, questa int-variabile sarà effettivamente uguale a questo numero di secondi, MA ci sarà un avviso"possibile perdita di dati a causa della conversione del tipo", è un po' una seccatura, c'è un modo per risolvere il problema?

datetime è il numero di secondi

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:
Un'altra domanda, come può una variabile data-ora (tipo datetime) essere convertita in NUMERO di secondi dopo il 1970? Perché se lo si equipara a un normale valore intero di tempo, questa int-variabile sarà davvero uguale a questo numero di secondi, ma ci sarà un avviso"possibile perdita di dati a causa della conversione del tipo", è un po' fastidioso, c'è un modo per risolvere il problema?

Se intendete non come data, ma come numero di secondi, allora convertitelo esplicitamente in tipo lungo.
 
Alexey Kozitsyn:
Se intendete visualizzare il numero di secondi, ma non la data, allora fate esplicitamente un tipo lungo.
Sì, intendevo il display, grazie, questo aiuta.
 
loleg1991:
Sì, intendevo riguardo al display, grazie, questo aiuta.
Prego)
 

Ciao, potresti dirmi se è possibile per l'Expert Advisor aggiungere un oggetto come un pulsante o un interruttore a levetta al grafico, e se sì, come?