Ayuda a la codificación - página 407

 

Hola Chicos, necesito su ayuda en un indicador que hice. Básicamente, es un probador que se supone que se utiliza sólo para optimizar los ajustes de una estrategia (y también probar sus actuaciones). En el modo de prueba (Optimizar puesto en Falso), funciona muy bien y da la tasa de ganancia y el balance para los parámetros por defecto. Pero tengo problemas para hacer que la función de optimización funcione. El resultado para los mejores ajustes siempre termina siendo el valor más bajo (PeriodMin). Me pregunto si es la forma en que estoy utilizando los búferes declarados dentro de la función doble de optimización (ver las líneas 616 y 617, y las líneas 746 y 747 utilizadas para liberar los búferes). Supongo que no es sólo eso, porque si no utilizo estos búferes (poniendo AllowMultipleOpenTrades en False), sigue sin dar resultados coherentes. Si alguien puede echar un vistazo y ayudar, se lo agradecería. Muchas gracias.

Archivos adjuntos:
 
airquest:
No estoy seguro de lo que estás tratando de hacer. ¿Quizás esto?

Me temo que no. Permítanme ilustrar con una captura de pantalla. En la flecha superior rosa se puede ver claramente que la barra roja de la BAJA es mucho más grande que la barra azul de la ALTA. ¡¡Sin embargo, la salida correspondiente en el indicador Linear Bar Diff está por encima de cero!! (ver flecha rosa inferior). Cuando la barra roja de la BAJA es mayor que la barra azul de la ALTA, la diferencia de ambas barras debería ser negativa, no positiva. Las flechas verdes muestran otro ejemplo del mismo problema.

Saludos cordiales

Archivos adjuntos:
example.png  25 kb
 
mrcodix:
No, me temo que no. Permítanme ilustrar con una captura de pantalla. En la flecha superior rosa se puede ver claramente que la barra roja de la BAJA es mucho más grande que la barra azul de la ALTA. ¡¡Sin embargo, la salida correspondiente en el indicador Linear Bar Diff está por encima de cero!! (ver flecha rosa inferior). Cuando la barra roja de la BAJA es mayor que la barra azul de la ALTA, la diferencia de ambas barras debería ser negativa, no positiva. Las flechas verdes muestran otro ejemplo del mismo problema. Saludos cordiales

¿Así que tal vez esto? Tienes que ver que los buffers 3 y 4 no están relacionados con High VS Open y Low VS Open, sino con Close VS Open.

Archivos adjuntos:
 
mrcodix:
Me temo que no. Permítanme ilustrar con una captura de pantalla. En la flecha superior rosa se puede ver claramente que la barra roja de la BAJA es mucho más grande que la barra azul de la ALTA. ¡¡Sin embargo, la salida correspondiente en el indicador Linear Bar Diff está por encima de cero!! (ver flecha rosa inferior). Cuando la barra roja de la BAJA es mayor que la barra azul de la ALTA, la diferencia de ambas barras debería ser negativa, no positiva. Las flechas verdes muestran otro ejemplo del mismo problema. Saludos cordiales

O esto es con la opción de usar Alto/Bajo VS Abierto o Cierre VS Abierto.

Archivos adjuntos:
 
airquest:
Hola Chicos, necesito vuestra ayuda en un indicador que he hecho. Básicamente, es un probador que se supone que se utiliza sólo para la optimización de los ajustes de una estrategia (y también probar sus actuaciones). En el modo de prueba (Optimizar puesto en Falso), funciona muy bien y da la tasa de ganancia y el balance para los parámetros por defecto. Pero tengo problemas para hacer que la función de optimización funcione. El resultado para los mejores ajustes siempre termina siendo el valor más bajo (PeriodMin). Me pregunto si es la forma en que estoy utilizando los búferes declarados dentro de la función doble de optimización (ver las líneas 616 y 617, y las líneas 746 y 747 utilizadas para liberar los búferes). Supongo que no es sólo eso, porque si no utilizo estos búferes (poniendo AllowMultipleOpenTrades en False), sigue sin dar resultados coherentes. Si alguien puede echar un vistazo y ayudar, se lo agradecería. Muchas gracias.

airquest

Tus arrays recTP[] y recSL[] en la línea 602 no están redimensionados (son de tamaño 0, tal y como están declarados al principio del bucle), Intenta redimensionarlos antes del bucle for()

 
airquest:
O esto es con la opción de usar High/Low VS Open o Close VS Open.

No, esto es lo que quería decir.

int inicio()

{

int barras_contadas=IndicadorContado();

int i;

//int UpDays, DownDays, NeutralDays;

double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = High - Open;

BarL = Abierto - Mínimo;

BarC = Cierre - Apertura;

//si(BarC>0) UpDays +=1;

//en caso contrario, si(BarC<0) DownDays +=1;

//else if(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

Más o menos lo he resuelto yo ahora pero gracias por el esfuerzo de todas formas.

Puede alguien decirme por qué este indicador: Candles Ratio " Metatrader Files no muestra la salida de las últimas velas? No parece que lo haga en la imagen que se muestra.

 
mladen:
airquest Tus arrays recTP[] y recSL[] en la línea 602 no se redimensionan (son de tamaño 0, tal y como se declaran al principio del bucle), Intenta redimensionarlos antes del bucle for()

Gracias Mladen, lo hice, pero todavía la optimización no da resultados correctos. Si pongo la optimización en True, da el valor más bajo como la mejor configuración (período de banda = 5), mientras que en False y BandsPeriod por defecto en 40, por ejemplo, muestra una mejor tasa de ganancias que con 5. básicamente la idea de la optimización es encontrar qué ajustes dan la mejor tasa de ganancias. He releído el código cientos de veces y no puedo encontrar lo que está mal. si usted tiene alguna idea, de lo contrario tal vez es una causa perdida lol.

Esto es con el ArrayResize añadido. También se han corregido algunos errores, pero sigue sin dar los mismos resultados que sin la optimización:

Archivos adjuntos:
 
airquest:
Gracias Mladen, lo hice, pero todavía la optimización no da resultados correctos. Si pongo Optimize en True, da el valor más bajo como la mejor configuración (periodo de banda = 5), mientras que en False y BandsPeriod por defecto en 40, por ejemplo, muestra una mejor tasa de ganancias que con 5. básicamente la idea de la optimización es encontrar qué ajustes dan la mejor tasa de ganancias. He releído el código cientos de veces y no puedo encontrar lo que está mal. si usted tiene alguna idea, de lo contrario tal vez es una causa perdida lol. Esto es con el ArrayResize añadido. También se arreglaron algunos errores, pero todavía no da los mismos resultados que sin la optimización:

No estoy seguro de por qué, pero al comprobar los resultados escribiendo un archivo CSV, el total de las operaciones, las ganancias y el saldo se multiplican por un factor de 10 : http://clip2net.com/s/38YHODl...

 
airquest:
No sé por qué, pero al comprobar los resultados escribiendo un archivo CSV, el total de operaciones, las ganancias y el saldo se multiplican por un factor de 10: Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

airquest

Por lo que veo el total de operaciones y las ganancias están bien (si no tendrían que terminar en 0)

 
mladen:
airquest Por lo que veo las operaciones totales y las ganancias están bien (si no tendrían que terminar en 0)

Bueno, aún así... Aquí están algunas pruebas :

- Configuración por defecto (sin optimización, WriteCSV a True) : http://clip2net.com/s/38YSV53

- Optimización en True, PeriodMin en 20 y PeriodMax en 20 : http://clip2net.com/s/38YT2hN

El primero da valores coherentes (el archivo CSV y los resultados en pantalla coinciden). Eso es normal, porque ambos provienen de las mismas variables. Pero en el segundo, los resultados de opti se multiplican casi por 10 en comparación con los resultados de pantalla. Aunque, deberían terminar en los mismos resultados...

De todos modos, no hay prisa, tal vez con el tiempo voy a encontrar lo que está mal. Gracias por tu amable ayuda Mladen.