Errori, bug, domande - pagina 846

 
Ditemi, c'è una funzione che può inviare una posizione per un ulteriore lavoro (modifica) usando , ulong deal; // Ticket deal, se è fatto dal biglietto del deal, ricordato prima? Probabilmente, una tale scelta richiederebbe qualche algoritmo complesso - come la mano sinistra per spazzolare l'orecchio destro?
 
Dimka-novitsek:
Ditemi, c'è una funzione che può inviare una posizione per un ulteriore lavoro (modifica) usando , ulong deal; // Ticket deal, se è fatto dal biglietto del deal, ricordato prima? Probabilmente, questa scelta richiederà qualche algoritmo complesso, come la mano sinistra che spazzola l'orecchio destro?
Ogni trade ha un identificatore di posizione. Utilizzando questo identificatore, proveremo a cercare la posizione stessa.
 

Buona sera a tutti! Vedo che la gente di questo ramo è interessata. A proposito del campionato...

Ancora non controllato i miei dati inviati dalle informazioni chiuse per il campionato, anche se l'esperto - controllato!

Quando saranno controllati?

 
Leo:

Buona sera a tutti! Vedo che la gente è interessata a questo ramo. A proposito del campionato...

Ancora non controllato i miei dati inviati dalle informazioni chiuse per il campionato, anche se l'esperto - controllato!

Quando saranno controllati?

Se il robot viene controllato senza errori, non c'è da preoccuparsi. Per quanto ho capito, l'esperto viene controllato automaticamente, ma i dati personali vengono controllati manualmente.
 
Leo:

Buona sera a tutti! Vedo che la gente è interessata a questo ramo. A proposito del campionato...

Ancora non controllato i miei dati inviati dalle informazioni chiuse per il campionato, anche se l'esperto - controllato!

Quando saranno controllati?

È stato consigliato altrove: se ci sono domande, un concorrente registrato può facilmente scrivere il suo problema nella sezione "Discussione" della sua pagina di campionato. Il messaggio arriverà al destinatario molto più velocemente che attraverso il forum.
 

Ho una domanda.

C'è un pezzo di codice dell'articolo che definisce l'inizio di una nuova barra.

   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// копируем время текущего бара в элемент New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, успешно скопировано
     {
      if(Old_Time!=New_Time[0]) // если старое время не равно
        {
         IsNewBar=true;   // новый бар
         if(MQL5InfoInteger(MQL5_DEBUGGING)) 
            Print("Новый бар",New_Time[0],"старый бар",Old_Time);
            Old_Time=New_Time[0];   // сохраняем время бара
        }
     }
   else
     {
      Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
      ResetLastError();
      return;
     }

//--- советник должен проверять условия совершения новой торговой операции только при новом баре
   if(IsNewBar==false)
     {
      return;
     }

Tutto funziona bene. Ma voglio inserire il calcolo di diverse statistiche pesanti nell'ultimo if. Voglio avere dei calcoli minimi al momento di una nuova barra.

Ecco la mia domanda. Come si comporterà questo codice se le statistiche sono calcolate per un tempo relativamente lungo (diciamo 2 secondi) e lo scarto tra i tick della vecchia e della nuova barra è minimo.

Per quanto ho capito, mentre lafunzione OnTick() sta calcolando i tick sarà saltata ma il prossimo tick sarà nuovo per l'EA, anche se non è il primo della barra.

Il controllo manuale non ha ancora funzionato

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
St.Vitaliy: Come si comporterà questo codice, se la statistica viene letta per un tempo relativamente lungo (diciamo 2 secondi)
Se la funzione OnTick() viene eseguita per 2 secondi, allora tutte le quotazioni che arrivano durante questo periodo saranno ignorate dall'Expert Advisor. È questo il punto che voleva chiarire? Una "nuova" quotazione per l'Expert Advisor sarà una quotazione che arriva immediatamente dopo l'esecuzione della funzione OnTick(), anche se questa quotazione non è il "primo tick della barra".
 
Yedelkin:
Se la funzione OnTick() viene eseguita per 2 secondi, allora tutte le quotazioni che arrivano durante questo intervallo di tempo saranno ignorate dall'EA. È questo il punto che voleva chiarire?

Qui, questi 2 secondi sono ignorati (e i tick durante questo tempo), ma al terzo tick, per esempio, arriverà un altro tick e il codice lo percepirà come nuovo nella barra?

Questo è indirettamente confermato dal fatto che quando eseguo l'EA, il tick successivo è sempre il primo.

Se la statistica è calcolata per 90 secondi, la condizione per un nuovo tick su M1 sarà eseguita almeno una volta?

 
Yedelkin:
Ogni trade ha un identificatore di posizione. Usa questo identificatore per cercare la posizione stessa.
Grazie!!!
 
St.Vitaliy: Qui, questi 2 secondi sono ignorati (e i tick durante questo tempo), ma al terzo, per esempio, arriverà un altro tick e il codice lo accetterà come un nuovo tick nella barra? Indirettamente è dimostrato dal fatto che quando eseguo l'EA, il prossimo tick è sempre il primo. Faccio una domanda diversa, se le statistiche saranno calcolate per 90 secondi, la condizione per un nuovo tick su M1 sarà mai soddisfatta?

Beh, l'ho già finito qui sopra. Ripeto: la "nuova" quotazione per l'Expert Advisor è una quotazione che arriva subito dopo il completamento della prossima funzione OnTick(), anche se questa quotazione non è il "primo tick di una barra". La tua condizione di una nuova barra che arriva

if(Old_Time!=New_Time[0])

sarà controllato solo dopo che l'Expert Advisor ha terminato l'elaborazione della quotazione arrivata sulla barra "precedente". ...Se la funzione OnTick() viene eseguita per 90 secondi ed è iniziata alle 00.00.00, la "condizione per un nuovo tick su M1 sarà eseguita ad un certo punto", cioè dopo le 00.01.30.

Motivazione: