[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 345

 
alsu >> :

OrderSelect (0,SELECT_BY_POS, MODE_HISTORY) - seleziona l'ultimo ordine nella storia

OrderSelect (1,SELECT_BY_POS, MODE_HISTORY) - il penultimo ordine

di conseguenza, si può trovare OrderProfit() per ciascuno di essi


molte grazie

 
In realtà l'ultimo è OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)
 
vademur писал(а) >>

Si prega di consigliare cosa ha causato l'errore e come affrontarlo, si verifica nel log del tester:

19:20:11 TestGenerator: errore di dati non abbinati (valore basso 1,3676 al 2009.05.13 00:00 e prezzo 1,3676 non abbinato)
19:20:11 TestGenerator: errore di dati non abbinati (valore alto 1,3696 al 2009.05.13 01:00 e prezzo 1,3696 non abbinato)
19:20:11 TestGenerator: errore di dati non abbinati (valore alto 1,3700 al 2009.05.13 02:30 e prezzo 1,3700 non abbinato)
19:20:11 TestGenerator: errore di dati non abbinati (valore alto 1,3700 al 2009.05.13 03:30 e prezzo 1,3700 non abbinato)

Ho provato a cancellare i prezzi e caricare di nuovo, forse sto facendo qualcosa di sbagliato, tutto sembra essere a posto nel codice.

Permettetemi di riformulare la domanda. Dove posso trovare una buona storia o dove posso leggere qualcosa al riguardo?

 
alsu >> :
Silen ha scritto (a) >>.

Prima di tutto, imparate a rispondere correttamente. I commenti come i vostri non servono a nessuno.

L'errore è stato restituito da GetLastError() dopo aver eseguito iTime(). Ecco un codice di esempio...

//+------------------------------------------------------------------+
//|                                                   test_iTime.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    
    for(int i = 20; i > 0; i--)
    {    
      CheckTF(PERIOD_M5, i);    
      CheckTF(PERIOD_M15, i);
      CheckTF(PERIOD_M30, i);
    }
   return(0);
  }  
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   
//----
   return(0);
  }
//--------------------------------------------------------------------  
int CheckTF(int TF, int Index)
  {
    int count = 5;   
    int err;     
    int xBars;
   
   xBars = iBars(Symbol(), TF);
   err = GetLastError();
   while ( err == 4066)
   {
      Sleep(200);
      xBars = iBars(Symbol(), TF);
      err = GetLastError();
   } 
    err = GetLastError();
    datetime t0 = iTime(NULL, TF, Index);
    err = GetLastError();
    
    if( err > 0 && count >0)
    {
      Print("Error: ", err," TF: ", TF," Index: ", Index , " count: ", count);
      Sleep(200);
      count--;
      
      t0 = iTime(NULL, TF, Index);
      err = GetLastError();      
    }
   return(0);
  }  
//+------------------------------------------------------------------+
 
Roger >> :
In realtà l'ultimo è OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)

Sì, è vero, ho già risposto io stesso nello stesso thread :))) https://www.mql5.com/ru/forum/111497/page227#204964

 
Silen >> :

L'errore è stato restituito da GetLastError() dopo aver eseguito iTime(). Ecco un codice di esempio...


Testato.

Durante l'esecuzione della funzione init(), i dati del nuovo simbolo possono essere (e ovviamente sono) non ancora disponibili. Da qui l'errore. C'è solo un modo per combatterlo: non cercare di analizzare i dati nella funzione init().

 
alsu >> :

Testato.

Durante l'esecuzione di init(), i dati del nuovo simbolo possono essere (e ovviamente lo sono) non ancora disponibili. Da qui l'errore. C'è solo un modo per combatterlo: non cercare di analizzare i dati nella funzione init().

Grazie, ma c'è una garanzia che i dati saranno disponibili in start()?

 

Cerco uno script o un indicatore per vedere la distribuzione del volume dei tick direttamente sulla barra.

come in questa foto del ramo Hai visto questa foto?


 

Buon pomeriggio, potrebbe per favore dirmi

if(OrderSelect(0, SELECT_BY_POS,MODE_HISTORY)==true)
{
double x=OrderProfit();
Print("last ",x);

}

Ho bisogno del profitto dell'ultimo ordine chiuso ma è il primo.

 
vik-777 >> :

Buon pomeriggio per favore consigliare

if(OrderSelect(0, SELECT_BY_POS,MODE_HISTORY)==true)
{
doppio x=OrderProfit();
Stampa("ultimo ",x);

}

Ho bisogno di un profitto dell'ultimo ordine chiuso ma è il primo, cosa c'è di sbagliato nel codice?

Sopra...

https://www.mql5.com/ru/forum/111497/page345#245944

Motivazione: