¡Problemas encontrados durante las pruebas de espalda y no se puede encontrar la causa raíz!

 

Por favor, refiérase a la captura de pantalla de abajo después de la prueba de espalda.

3 preguntas sobre las cosas extrañas se muestran en la imagen también.

He leído el uso de iCustom y comprobar mi EA y el indicador una y otra vez, finalmente no puede encontrar la causa raíz.

¡Por favor, ayuda urgente y muchas gracias !

(*. Puede hacer clic en la captura de pantalla para abrirla y ampliarla para ver las preguntas más claramente)

Estos son los códigos críticos para el indicador "Reverse" (otros códigos fueron reemplazados por "..." para que quede claro para los códigos críticos):

int OnInit()
  {
   IndicatorBuffers(8);
   ....
   SetIndexBuffer(6,ExtBuffer1);
   ....
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ...
   ...

   for(i=limit-1; i>=0; i--)
     {
      ...
      Value=...;
      ExtBuffer0[i]=MathLog((1+Value)/(1-Value));
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;
     }

   ...
   ...
  }

Estos son los códigos críticos en el EA para usar el indicador (otros códigos fueron reemplazados con "..." para que quede claro para los códigos críticos):

...
...

void Reverse()
  {
   Joy1=iCustom(Symbol(),0,"Reverse",6,1);
   Joy2=iCustom(Symbol(),0,"Reverse",6,2);
  }

void openPosition()
  {
   ...
   if(Joy2<=-10 && Joy1>=10) 
    {
    r=OrderSend(Symbol(),OP_BUY,lotSize,Ask,slippage,0,0,TradeComment,MAGIC,0,clrMediumBlue);
    ...
    }
   else if(Joy2>=10&& Joy1<=-10) 
    {
    r=OrderSend(Symbol(),OP_SELL,lotSize,Bid,slippage,0,0,TradeComment,MAGIC,0,clrMediumVioletRed);
    ...
    }
   ...
   }
void closePosition()
  {
   ...
    if(openType==OP_BUY && Joy2>=10 && Joy1<=-10)
     for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrDodgerBlue);
            ...
            }
   else if(openType==OP_SELL && Joy2<=-10 && Joy1>=10) 
    for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Ask,slippage,clrDeepPink);
            ...
            }
   ...  
  }
void OnTick()
  {
   ...
   Reverse();
   openPosition();
   closePosition(); 

}

 

Ahora he vuelto a crear el archivo del indicador y el problema del dibujo de la línea amarilla se ha resuelto.

Sin embargo, esos otros 2 problemas todavía no tienen ninguna idea. ¡Por favor, ayuda!

 

El problema probablemente proviene de su indicador

 if(ExtBuffer0[i]>= 0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;

compruebe también su EmptyValue

 
ffoorr:

El problema probablemente viene de su indicador

compruebe también su EmptyValue

Estimado ffoorr, no debería haber ningún valor vacío como se puede ver con la línea amarilla.

 

qué pasa si if(ExtBuffer0[i]==0)

siguiendo lo que hay en tu SetIndexEmptyValue, tendrías un agujero, una nada,

La línea no se imprimiría hasta los dos datos siguientes.


Si no es así comprueba el índice de tu indicador, parece que la señal está una barra atrasada

De lo contrario, nadie puede saber sin ver el código del indicador


¿Estás usando algún indicador de fisher?

 

Estimado ffoorr, muchas gracias por la ayuda. Pero he comprobado el indicador con los códigos y puedo confirmar que no hay ningún valor vacío.

Volví a instalar tick story y MT4, el problema sigue ahí. Así que sigo comprobando.

 

jollydragon

si no hay SetindicatorEmptyValue, entonces el emptyvalue es EMPTY_VALUE

entonces si codificas if( ExtBuffer1[i]!= 10 ) Open_Order()

si ExtBuffer1[i] es == EMPTY_VALUE , tendrás un pedido


Pero tampoco puedo saber si esta es la causa del problema

 

Estimado ffoorr, he añadido códigos para mostrar los datos deExtBuffer1[i] si ExtBuffer1 no es 10 o -10.Finalmente no conseguí nada y demuestra que ExtBuffer1 es 10 o -10para cada barra.

También he actualizado el indicador a sólo 2 buffers con 2 líneas. Se puede ver 1 en blanco y 1 en amarillo. Yo uso los datos de la línea amarilla en mi EA.

Por favor, refiérase a los datos de abajo, se puede ver cuando la orden cambia, exactamente fue causada porque los datos de la línea amarilla consiguió está cambiando. 1' abajo significa los datos de la línea amarilla de la barra justo antes de que la orden se abra o se cierre, 2' significa los datos de la línea amarilla de la barra antes de '1'. Así es también como manejo la apertura y el cierre de la orden.

También he comprobado el código del indicador una y otra vez, por lo que puedo confirmar que el indicador se calcula en base a las barras anteriores y por lo tanto no es un indicador fisher.

Sin embargo, se puede ver el cambio de las órdenes todavía no es coherente con la línea amarilla (señal).

¡Es muy extraño! ¿Cuál puede ser la posible causa raíz? ¿Quién puede ayudar y estaré muy agradecido?

2013.04.30 04:00:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 08:30:01:    1:  10.0, 2: -10.0-error:       0

2013.04.30 08:30:02:    1:  10.0, 2: -10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 16:03:26:    1:  10.0, 2:  10.0-error:       0

 
Oh, Dios mío. Todavía no tengo ni idea con esto. ¿Qué es lo que pasa?
 
jollydragon: Oh, Dios mío. Todavía no tengo ni idea con esto. ¿Qué es lo que está mal?
  1. ¿Cómo diablos vamos a saberlo? No has publicado todo el código (sin indicador, sin iCustom, sin bucles)
  2. Usted dice, el indicador todavía tiene un 10, pero la (primera) imagen muestra huecos. No tenemos ni idea de dónde estaba el cursor. ¿Estaba sobre el hueco?
  3. No tienes ni idea porque no tienes información. Añade sentencias print antes y dentro de if incluyendo los valores de las variables y rastrea.
 

Queridos, de hecho he restado los códigos críticos para usted para ahorrar su tiempo.

Sin embargo, su ayuda es muy apreciada y aquí me permiten adjuntar los archivos de ambos EA y el indicador.

Por favor, tenga en cuenta los nombres de los archivos cambiaron automáticamente después de adjuntar. Hay una letra aleatoria insertada entre 2 palabras. En mi ordenador, son "Trade Joy" y "Solar Joy".

Esperando la solución. :-)

Archivos adjuntos:
tradebjoy.mq4  12 kb
trademjoy.ex4  17 kb
solarxjoy.mq4  7 kb
solarcjoy.ex4  8 kb