Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 721

 
¿Cómo hacer una martingala adecuada?
Lo he entendido bien:
Antes de abrir cada operación, es necesario comprobar todas las operaciones en este símbolo con este mago y si la última operación en la fecha con una pérdida, respectivamente, aumentar el lote?
 
Roman Sharanov:
¿Cuál es la forma correcta de hacer una martingala?
Lo he entendido bien:
Antes de abrir cada operación, hay que comprobar todas las operaciones de este símbolo con este mago y si la última operación por fecha es con pérdidas, aumentar el lote respectivamente?

Es así

 
Sergey Gritsay:

Es así

sólo que no entiendo cómo calcular la transacción más reciente de todas ellas

 
Amigos, ¿alguien se ha encontrado con la necesidad de obtener los datos del indicador basado en otro indicador, por ejemplo, RSI superpuesto a RSI.
 
Roman Sharanov:

No entiendo cómo calcular la transacción más reciente de todas ellas

Es algo así.

double  ProfitLastDeals()
  {
   double m_profit=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=m_magic)continue;
      if(OrderSymbol()!=m_symbol)continue;
      if(OrderType()==m_type)
        {
         m_profit=OrderProfit();
        }
     }
   return(m_profit);
  }
 
Sergey Gritsay:
Amigos, ¿alguien se ha encontrado con que necesito obtener los datos del indicador basados en otro indicador, por ejemplo, RSI superpuesto a RSI.

Todo resuelto, la pregunta ya no es relevante

 
Roman Sharanov:

Sólo que no entiendo cómo calcular la más reciente de todas las operaciones

Perdón, el último ejemplo selecciona entre abierto, entre cerrado debería ser así

double  ProfitLastDealsHistory()
  {
   double m_profit=0;
   int total=OrdersHistoryTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderMagicNumber()!=m_magic)continue;
      if(OrderSymbol()!=m_symbol)continue;
      if(OrderType()==m_type)
        {
         m_profit=OrderProfit();
        }
     }
   return(m_profit);
  }
 

Comportamiento extrañode iBarShift(). Devuelve el índice (-1) con la banderaexacta =false comprobada explícitamente.

El error se produce aleatoriamente en cualquier momento, no hay forma de detectarlo manualmente.

Al obtener un índice negativo el código escribe en la consola los parámetros de la petición ejecutada y su resultado

2019.01.04 10:40:24.047 CCC (GBPUSD,M1) Neg index: NZDUSD TimeCurrent: 2019.01.04 09:40:23 Request: 2019.01.04 09:40:23 TimeLastTick: 2019.01.04 09:40:23.44
2019.01.04 10:40:24.047 CCC (GBPUSD,M1) LastError: 0

Solicitud - el momento en que se solicita el índice de barras

TimeLastTick es la hora del último tick para el símbolo solicitado;MqlTick[] se toma justo después del error.

¿Cuáles pueden ser las razones de este comportamiento, tal vez alguien ha encontrado?

 
SemenTalonov:

Comportamiento extrañode iBarShift(). Devuelve el índice (-1) con la banderaexacta =false comprobada explícitamente.

El error se produce aleatoriamente en cualquier momento, no hay forma de detectarlo manualmente.

Al obtener un índice negativo el código escribe en la consola los parámetros de la petición ejecutada y su resultado

Solicitud - el momento en que se solicita el índice de barras

TimeLastTick es la hora del último tick para el símbolo solicitado;MqlTick[] se toma justo después del error.

¿Cuáles pueden ser las razones de este comportamiento, tal vez alguien ha encontrado?

¿Qué dice la documentación sobre exact == false?
 
Artyom Trishkin:
¿Qué dice la documentación sobre exact == false?

Valor devuelto si no se encontró ninguna barra en el momento especificado. Siexact=false iBarShift devuelve el índice de la barra más cercana con tiempo de apertura menor que el especificado (time_open<time). Si no se encuentra una barra de este tipo (no hay historial antes de la hora especificada), la función devolverá -1.

Pero tenemos historia, es un hecho. Todo ocurre en la barra más nueva (0-ésima por serie temporal).