Un bug nella funzione OrderSend() ? - pagina 5

 
Sepulca:

La statica funziona al 100%. Ecco il test:

E i risultati:


Beh, per me funziona come prima... Nessun cambiamento! Ho anche la funzione di aprire una nuova barra:

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

che funziona anche correttamente. Ecco perché il mio codice viene preso di mira senza motivo. E la domanda era generalmente corretta. A quanto pare il tester è difettoso, quindi le letture sono tutte sbagliate. Su M5 è in qualche modo più pulito, su M15 anche l'H1 è già simile.

 
hoz:


Beh, funziona come prima... Non c'è nessun cambiamento! Ho anche una nuova funzione di apertura del bar:

che funziona anche bene. Ecco perché il mio codice viene criticato senza motivo. Ma la domanda era corretta in generale. A quanto pare il tester è difettoso e le letture sono sbagliate. Su M5 è in qualche modo più pulito, su M15 anche H1 è già abissale.


Consiglierei di scrivere subito if(lastBar<currBar), anche se non cambierà quasi nulla. Passerò ulteriormente in rassegna i suoi post, forse dirò qualcos'altro.
 
hoz:


Beh, funziona come prima... Non c'è nessun cambiamento! Ho anche una funzione per aprire una nuova barra:

che funziona anche bene. Ecco perché il mio codice viene criticato senza motivo. Ma la domanda era corretta in generale. Apparentemente il tester è difettoso e le letture sono sbagliate. Su M5 è in qualche modo più pulito, su M15 anche H1 è già abissale.



Può aiutare. La tua funzione start() è un po' rielaborata. Non è entrato in profondità, ma comunque:

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



Potrebbe aiutare. La tua funzione start() è un po' rielaborata. Non è entrato in profondità, ma comunque:


Bene, qui il tempo di calcolo è preso dalla barra precedente. Non sembra logico. Abbiamo bisogno della barra attuale.
 
PapaYozh:

Personalmente, non ho mai incontrato uno statik che non funzionasse.

Ecco un esempio di esperto, se volete controllare su un grafico:

1. Avviare l'Expert Advisor.

2. Cambiare il TF.

3. Assicuratevi che il cc non diventi di nuovo 20.

 
hoz:


Beh, funziona come prima... Non c'è nessun cambiamento! Ho anche una nuova funzione di apertura del bar:

che funziona anche bene. Ecco perché il mio codice viene criticato senza motivo. Ma la domanda era corretta in generale. Apparentemente il tester è difettoso e le letture sono sbagliate. Su M5 è in qualche modo più chiaro, e su M15 anche H1 è già abissale.

Per quanto riguarda la sua situazione:

Il tempo è stato inizializzato una volta - quando si avvia l'EA, non sarà inizializzato di nuovo, quindi quando si passa da M1 a D1 si dovrà aspettare circa un giorno per l'aggiornamento del grafico :(

 
tara:

Si applica alla tua situazione:

Il tempo è stato inizializzato una volta - quando si avvia l'EA, non sarà inizializzato di nuovo, quindi quando si passa da M1 a D1 si dovrà aspettare circa un giorno perché il grafico si aggiorni :(



L'Expert Advisor lavora su un TF specifico. Perché avrei bisogno di cambiarlo?
 
tara:

3. Assicuratevi che il cc non sia diventato di nuovo 20.

Questa è una caratteristica documentata degli EA.
 
TheXpert:
Questa è una caratteristica documentata degli EA.


Cos'è Static allora? È più un Fatalic...


A proposito, dove è documentato?

 
hoz:

L'Expert Advisor lavora su un TF specifico. Perché dovrei improvvisamente aver bisogno di cambiarlo?

Si può semplicemente cambiare qualche parametro. La reazione avverrà solo dopo il primo tick di una nuova barra sul TF impostato.

Ma tu stesso ti sei chiesto perché l'Expert Advisor è inspiegabile su un TF superiore:)