Ayuda a la codificación - página 422

 
Mastercash:
¡He puesto el uso de moneymanagement en false.... pero sobre los parámetros de Lots, no se trata de los Lots sino del número de órdenes abiertas.no quiero que el ea abra más de 5 órdenes...... en un momento dado, por eso he puesto el parámetro NumberofTrades en 5, en los parámetros de entrada pero aún así me reta, y toma más de 5 órdenes, amenazando así mis moneymanagements!

Mastercash

Este es el resultado de las pruebas realizadas:

Como puedes ver nunca abrió más de 5 órdenes para el mismo símbolo y el mismo número mágico al mismo tiempo

Archivos adjuntos:
5_test.gif  87 kb
 

ok, puedo ver...solo que no quiero que tome mas de 5 ordenes para diferentes simbolos....e.g, digamos que hay señal de comercio de 10 simbolos dentro de los ultimos 20 minutos....el ea deberia tomar solo las primeras 5 señales de comercio, entonces cuando cualquiera de esas cinco ordenes se cierran, el puede tomar una mas, asegurandose que las ordenes en curso a traves de varios simbolos no excedan 5.Pero sigue excediendo 5, no importa.....A veces toma 5 mismas ordenes del mismo simbolo lo cual tambien esta mal.

mladen:
Mastercash

Este es el resultado de las pruebas:

Como se puede ver nunca abrió más de 5 órdenes para el mismo símbolo y el mismo número mágico al mismo tiempo
 
Mastercash:
ok, ya veo...solo que no quiero que tome mas de 5 ordenes para diferentes simbolos....e.g, digamos que hay señal de trading de 10 simbolos dentro de los ultimos 20 minutos....el ea deberia tomar solo las primeras 5 señales de trading, luego cuando cualquiera de esas cinco ordenes se cierren, puede tomar una mas, asegurandose que las ordenes en curso a traves de varios simbolos no excedan 5.Pero sigue excediendo 5, no importa.....A veces toma 5 mismas ordenes del mismo simbolo lo cual tambien esta mal.

Si quiere que tenga un máximo de 5 órdenes en todos los símbolos, vaya a la línea 144(if( OrderSymbol() != Symbol() ) continue;) y elimínela. Y mantén el mismo número mágico para todas las instancias en todos los símbolos (para que pueda contar las órdenes abiertas sólo por ese EA en todos los símbolos)

 

Hola Mladen

Tengo un bonito indi que no se refresca cuando se fija en un TF más alto.

Como se puede ver en el gráfico cuando no edito, se queda atascado. ¿Podrías ayudarme a resolver este problema?

Agrego el indicador y una captura de pantalla

Archivos adjuntos:
 
wolfsch:
Hola Mladen

Tengo un bonito indi que no se refresca cuando se fija en un TF más alto.

Como se puede ver en el gráfico cuando no edito, se queda atascado. ¿Podríais ayudarme a solucionar ese problema?

Añado el indicador y una captura de pantalla

wolfsch

Eso sólo puede ocurrir en el backtest visual (es un error que metatrader no corrigió durante al menos 7-8 meses, y es un error de metatrader no del indicador) y le ocurre a todos los indicadores multi time frame cuando se hace backtest visual

En el uso normal funciona bien (probado ahora mismo por si acaso, y todo funciona como se supone que funciona en los gráficos regulares)

 

Gracias, voy a trabajar en esto y me pondré en contacto contigo ......

mladen:
Si quieres que tenga un máximo de 5 órdenes en todos los símbolos, ve a la línea 144(if( OrderSymbol() != Symbol() ) continue;) y elimínala. Y mantén el mismo número mágico para todas las instancias en todos los símbolos (para que pueda contar las órdenes abiertas sólo por ese EA en todos los símbolos)
 
mladen:
TFI

El búfer 3 es el correcto (es el búfer de "tendencia" que tiene valores 1 para la pendiente ascendente y -1 para la pendiente descendente). Usted está utilizando los turnos 1 y 2, por lo tanto está probando la primera barra cerrada.

La parte de compra del código está bien.

Ha omitido la parte

if(trendc!=trendp)

de la hormiga de la parte de la venta que podría estar causando un problema

Hola Mladen,

muchas gracias por ser de ayuda. He cambiado el código de acuerdo con

a su sugerencia, es el comercio sin problemas, el cálculo de pip es también bien.

Pero ahora ya no abre operaciones cortas (podría ser también una estrategia ;-)).

Sólo cierra posiciones largas.

¿Podría aconsejarme una vez más?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Por favor, vea la captura de pantalla adjunta para más detalles.

Gracias de antemano.

Con saludos cordiales,

TFI

Archivos adjuntos:
backtest.jpg  163 kb
 
tfi_markets:
Hola Mladen,

muchas gracias por ser de ayuda. He cambiado el código de acuerdo con

a su sugerencia, es el comercio sin problemas, el cálculo de pip es también bien.

Pero ahora ya no abre operaciones cortas (podría ser también una estrategia ;-)).

Sólo cierra posiciones largas.

¿Podría aconsejarme una vez más?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Por favor, vea la captura de pantalla adjunta para más detalles.

Gracias de antemano.

Con saludos cordiales,

TFI

TFI

Intenta algo como esto :

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//-----------------------------------------------------

//

//-----------------------------------------------------

int clongs = 0;

int cshorts = 0;

for (i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

 

mladen,

He hecho el cambio en el número 144 y he unificado el número mágico, "MagicNumber" a través de los símbolos instances....It es ahora tomar un máximo de 5 operaciones a la vez, pero ahora repite las operaciones en el mismo símbolo al mismo tiempo, por ejemplo, si recibir una señal de comercio SELL en EURUSD , se colocará que la orden de venta EURUSD 5 veces. Vea la imagen de la orden en vivo que tomó así:

Mastercash:
Gracias, voy a trabajar en esto y me pondré en contacto con usted ......
Archivos adjuntos:
apcorrimage.png  39 kb
 
Mastercash:
mladen, he hecho el cambio en el número 144 y he unificado el número mágico, "MagicNumber" a través de las instancias de los símbolos....It es ahora tomar un máximo de 5 operaciones a la vez, pero ahora repite las operaciones en el mismo símbolo al mismo tiempo, por ejemplo, si recibe una señal de comercio SELL en EURUSD , se colocará esa orden de venta EURUSD 5 veces. Vea la imagen de la orden en vivo que tomó así:

Eso no depende de esa parte del código

Tienes que añadir un check en el resto del código para no abrir una orden en la misma barra y el mismo símbolo