[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 345

 
alsu >> :

OrderSelect (0,SELECT_BY_POS, MODE_HISTORY) - selecciona el último pedido del historial

OrderSelect (1,SELECT_BY_POS, MODE_HISTORY) - el penúltimo pedido

en consecuencia, puede averiguar OrderProfit() para cada uno de ellos


muchas gracias

 
En realidad el último es OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)
 
vademur писал(а) >>

Por favor, indique qué causó el error y cómo solucionarlo, se produce en el registro del probador:

19:20:11 TestGenerator: error de datos no coincidentes (valor bajo 1,3676 en 2009.05.13 00:00 y precio 1,3676 no coincidentes)
19:20:11 TestGenerator: error de datos no coincidentes (valor alto 1,3696 a las 01:00 de 2009.05.13 y precio 1,3696 no coinciden)
19:20:11 TestGenerator: error de datos no coincidentes (valor alto 1,3700 a las 02:30 de 2009.05.13 y precio 1,3700 no coinciden)
19:20:11 TestGenerator: error de datos no coincidentes (valor alto 1,3700 en 2009.05.13 03:30 y precio 1,3700 no coinciden)

He probado a borrar los precios y a subirlos de nuevo, quizás estoy haciendo algo mal, todo parece estar bien en el código.

Permítanme reformular la pregunta. ¿Dónde puedo conseguir una buena historia o dónde puedo leer sobre ella?

 
alsu >> :
Silen escribió (a) >>

En primer lugar, aprende a responder correctamente. Comentarios como el tuyo no sirven a nadie.

El error fue devuelto por GetLastError() después de ejecutar iTime(). Aquí hay un código de muestra...

//+------------------------------------------------------------------+
//|                                                   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 >> :
En realidad el último es OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)

Sí, es cierto, ya lo he contestado yo mismo en el mismo hilo :))) https://www.mql5.com/ru/forum/111497/page227#204964

 
Silen >> :

El error fue devuelto por GetLastError() después de ejecutar iTime(). Aquí hay un código de muestra...


Probado.

Mientras se ejecuta la función init(), los nuevos datos de los símbolos pueden estar (y obviamente están) aún no disponibles. De ahí el error. Sólo hay una forma de combatirlo: no intentes analizar los datos en la función init().

 
alsu >> :

Probado.

Durante la ejecución de init(), los datos del nuevo símbolo pueden estar (y obviamente están) aún no disponibles. De ahí el error. Sólo hay una forma de combatirlo: no intentes analizar los datos en la función init().

Gracias, pero ¿hay alguna garantía de que los datos estén disponibles en start()?

 

Buscando un script o indicador para ver la distribución del volumen de ticks directamente en la barra.

como en esta foto de la rama ¿Has visto esta foto?


 

Buenas tardes, ¿podría decirme por favor

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

}

Necesito el beneficio de la última orden cerrada pero es la primera.

 
vik-777 >> :

Buenas tardes, por favor, aconséjeme

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

}

Necesito un beneficio de la última orden cerrada pero es la primera, ¿qué está mal en el código?

Arriba...

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

Razón de la queja: