Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1489

 
Maksim Burov Comment nel codice EA?
Quali sono le opzioni per risolvere questo problema?
Influisce sulla velocità di ottimizzazione?

Non è necessario utilizzare kanvas.

Affinché il commento non rallenti il tester con la visualizzazione, è necessario che il commento non venga chiamato più spesso di 30 millisecondi.

Ad esempio così:

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
Oppure usare Print invece di Comment se è importante non saltare i valori.

Se è importante una migliore visualizzazione dell'output di qualsiasi valore, è meglio usare kanvas.

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov commento non influisce sulla velocità di ottimizzazione.
 
Maksim Burov #:

Le informazioni cambiano periodicamente.
Ad esempio, voglio vedere la posizione con il prezzo di apertura più basso. Oppure conoscere il tick dell'ultima posizione chiusa.
Si può scrivere tutto nella stampa, ma non è comodo da guardare, si può sbagliare. E così posso vedere immediatamente dove ho degli errori.

Le informazioni non cambiano a ogni tick? Nikolay ha anche suggerito che si può semplicemente fare l'output dopo un certo timeout, riducendo così la frequenza di questo output.
 

Grazie mille per il vostro aiuto.
Ora ho un altro compito.

C'è una funzione che conta il profitto di tutti gli ordini chiusi dopo un certo tick.
L'ora di chiusura dell'ordine (posizione) è stata aggiunta per il controllo.
Poiché tutto è stato scritto in MQL4, e ora viene riscritto in MQL5, è sorta la domanda su come eseguire correttamente e con competenza questo controllo.

In poche parole, come riscrivere il codice in 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 #:

Grazie a tutti per il vostro aiuto.
Ora un'altra sfida.

C'è una funzione che conta il profitto di tutti gli ordini chiusi dopo un certo tick.
L'ora di chiusura dell'ordine (posizione) è stata aggiunta per il controllo.
Poiché tutto è stato scritto in MQL4, e ora viene riscritto in MQL5, è sorto il problema di come eseguire correttamente e con competenza questo controllo.

In poche parole, come riscrivere il codice in 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);
          ...
         }

Qualcosa del genere.

 
Maksim Burov #:

Grazie a tutti per il vostro aiuto.
Ora un'altra sfida.

C'è una funzione che conta il profitto di tutti gli ordini chiusi dopo un certo tick.
L'ora di chiusura dell'ordine (posizione) è stata aggiunta per il controllo.
Poiché tutto è stato scritto in MQL4, e ora viene riscritto in MQL5, è sorto il problema di come eseguire correttamente e con competenza questo controllo.

In poche parole, come riscrivere il codice in MQL5)

Dato che non sono gli ordini (post precedente), ma le transazioni ad essere ricercate, è più conveniente utilizzare questo codice

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

Qualcosa del genere.

Non ci sono riuscito. Puoi spiegare meglio il mio codice?

 
Maksim Burov #:

Non ci sono riuscito. Puoi spiegarmi meglio il mio codice.

Forse sarebbe meglio guardare la variante di Aleksandr Slavskii. Non ho lavorato con MQL4 e nemmeno con l'hedging.

Oppure presta attenzione qui e, per sicurezza, qui.

 
JRandomTrader #:

Forse sarebbe meglio consultare la variante di Aleksandr Slavskii. Non ho lavorato con MQL4 e nemmeno con l'hedging.

Oppure prestate attenzione qui e, per sicurezza, qui.

Non meglio. Queste sono le solite funzioni di fxsaber.

La tua variante è abbastanza accettabile, solo che devi sostituire gli ordini con le transazioni. I profitti, le commissioni e gli swap sono memorizzati dalle transazioni, non dagli ordini.

 
Salve, ho un problema con il VPS. Non ricevo le notifiche sul mio telefono quando la MT4 è spenta. Quando la piattaforma è accesa, le notifiche funzionano. Qualcuno può darmi qualche consiglio su cosa potrebbe essere sbagliato? Grazie
Motivazione: