¡Problemas encontrados durante las pruebas de espalda y no se puede encontrar la causa raíz! - página 3

 

¿IHighest() devuelve la barra entre el periodo a la izquierda o a la derecha de 'i'?

 MaxH = High[iHighest(NULL,0,MODE_HIGH,period,i)];

Además, por favor, también se refieren a mi post anterior justo en frente de este post.

 

Estimado JollyDragon,

Feliz de que usted ve que el indicador de volver a calcular.

El código fisher es siempre el mismo, es fácil de identificar.

el código sólo re-inyectar un dato, como muchos indicador hace por algún medio, ( que almacenan el valor pasado ot datos en la barra 1 2 3 ), este indicador no lo hacen, que por qué volver a calcular :

 for(i=limit-1; i>=0; i--)
     {
      MaxH = High[iHighest(NULL,0,MODE_HIGH,Solar_period,i)];
      MinL = Low[iLowest(NULL,0,MODE_LOW,Solar_period,i)];
      price = (High[i]+Low[i])/2;
      Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
      Value=MathMin(MathMax(Value,-0.999),0.999);
      ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      Value1=Value;
      Fish1=ExtBuffer0[i];
     
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=Solar_limit;
      else ExtBuffer1[i]=-Solar_limit;
     }
 
jollydragon:

¿IHighest() devuelve la barra entre el periodo a la izquierda o a la derecha de 'i'?


A la izquierda
 

ffoorr,GumRai, gracias.

Aunque el código almacena los datos de la barra1, puedes ver que no recalcula las barras a la izquierda de la barra0.

Así que todavía estoy confundido sobre la causa del rediseño, ya que no hay ningún código que recalcule las barras anteriores a la barra0.

for(i=limit-1; i>=0; i--)
     {
      MaxH = High[iHighest(NULL,0,MODE_HIGH,period,i)];
      MinL = Low[iLowest(NULL,0,MODE_LOW,period,i)];
      price = (High[i]+Low[i])/2;
      Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
      Value=MathMin(MathMax(Value,-0.999),0.999);
      ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      Value1=Value;
      Fish1=ExtBuffer0[i];
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;
     }
 

No sabemos qué valor se le da al límite.

Sugiero encarecidamente que haga clic con el botón derecho del ratón en este indicador y lo mueva a la papelera.

      ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      Value1=Value;
      Fish1=ExtBuffer0[i];

Asumiendo que Fish1 es una variable global o estática y que la última barra es recalculada

A Fish1 se le da un valor basado en los datos de la barra[0] cuando i==0

Entonces cuando la barra[1] se recalcula, el valor de Fish1, creado en la barra[0] se utiliza para crear un valor para la barra[1]

No sé qué es lo que pretende el indicador, pero cualquier indicador que utilice datos pertenecientes a una barra i y luego los utilice en una barra anterior es un mal indicador.

 
GumRai:

No sabemos qué valor se le da al límite.

Por favor, consulte el post 20 donde se adjuntó todo el archivo del indicador. A continuación se pegó de nuevo.

Archivos adjuntos:
solarjoy.mq4(6.11 KB) borrar
GumRai:

Entonces cuando la barra[1] es recalculada, el valor para Fish1, creado en la barra[0] es usado para crear un valor para la barra[1]

No sé lo que el indicador pretende hacer, pero cualquier indicador que utiliza los datos pertenecientes a i bar y luego utiliza que en una barra anterior es un mal indicador.

Puedes ver que 'i' cambia de 'límite-1' a '0', es decir, de izquierda a derecha para el cálculo de las barras.

Así que el valor de Fish1 calculado en bar[1] se utiliza para crear un valor para bar[0]. ¿Por qué piensas lo contrario?

Por lo tanto no creo que este indicador sea ese tipo de indicador malo de acuerdo a mi entendimiento en el código.

De todos modos, finalmente observé el re-dibujo y aprueba que es ese tipo de indicador malo.

Sin embargo, necesito saber cómo corregir el código para evitar el re-dibujo como auto-mejora.

for(i=limit-1; i>=0; i--)
     { 
       ...
      }
 

Este fisher no repinta, se ve bien, compárese con solar_joy, la señal es una barra tarde, pero es el mismo indicador.

https://www.forex-tsd.com/metatrader-4/474-fisher-14.html#post214965

El problema no son los indicadores, son perfectos, es el mercado que siempre cambia, nunca es el mismo.

Un indicador que da una señal perfecta en un mercado de tendencia, sólo dará una señal falsa en otro mercado.

Uno siempre tendrá que filtrar las señales de un buen oscilador, ya sea usando StopLoss y TakeProfit,

Si se utiliza un indicador de tendencia.


Creo que el indicador fisher si funciona, solo se retrasa una barra, se recalcula, no se repinta, este se repinta, ponlo en un EA en el tester, y veras :

https://www.forex-tsd.com/ideas-suggestions/25934-bulletproof-11.html#post351354

 
jollydragon:

Así que el valor de Fish1 calculado en la barra[1] se utiliza para crear un valor para la barra[0]. ¿Por qué se piensa lo contrario?

De acuerdo, es justo, pero el código al que me refería no incluía ningún cálculo para el límite y no iba a buscar en 3 páginas para ver si estaba incluido en otro lugar.

Así que este indicador no recalcula para la barra[1] en cada tick.

Pero aún así

 ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
 Fish1=ExtBuffer0[i];

permitirá cálculos diferentes en la primera ejecución en barras cerradas a lo que hace en la barra actual.

Lo que hará en el primer tick de una nueva barra es

ExtBuffer0[0]=0.5*MathLog((1+Value)/(1-Value))+0.5*ExtBuffer0[1];

En los siguientes ticks de la misma barra calculará

ExtBuffer0[0]=0.5*MathLog((1+Value)/(1-Value))+0.5*ExtBuffer0[0];

Lo que es una especie de composición

 

Esto es negociable, el solar_joy/fischer da una señal una barra antes, en comparación con un fisher no recalculado,

Entonces tome la señal en la barra 1 y 2, y vaya a ver si la señal sigue ahí en la barra 2 y 3.

Si la señal se ha desvanecido entonces cierre la orden.

  if(Joy2 <= EA_Limit && Joy1 >= EA_Limit)  open_order( OP_BUY); 
 if( (Joy3 <= EA_Limit && Joy2 >= EA_Limit)== false ) close_order( OP_BUY); 
 
ffoorr:

Este fisher no se repinta, se ve bien, compara con solar_joy, la señal es una barra tarde, pero es el mismo indicador.

https://www.forex-tsd.com/metatrader-4/474-fisher-14.html#post214965

Creo que el indicador fisher si funciona, solo tiene una barra de retraso, recalcula, no repinta, este repinta, ponlo en un EA en el tester, y veras :

https://www.forex-tsd.com/ideas-suggestions/25934-bulletproof-11.html#post351354


Estimado ffoorr, no puedo abrir las páginas y no puedo acceder al sitio, www.forex-tsd.com. Tal vez mi configuración de Internet tiene algún problema.

Por favor, centrémonos en mi código. Son sólo unas 10 líneas de códigos para el contenido principal.

Sin embargo, sigue siendo tan difícil para nosotros encontrar la causa raíz para el repintado de las barras históricas.