[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