¡Salud! ¡Salud!

 

Hola todavía en el tema del lote, ive intentó una secuencia de comandos aquí que pensé en pero la prueba de estrategia que da un error de tamaño de lote incorrecto. No sé si los datos de la historia no soporta algunas funciones o qué. El script es sólo para EURUSD. ¿Qué estoy haciendo mal o es un problema del probador de estrategias?

extern int LotPercentage=10; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/100)*AccountBalance(); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance*AccountLeverage(); // multiply this 10% balance($100) by leverage to get lot units
double lots=NormalizeDouble((LotUnits/100000),2); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000 for use in ordersend()*/

 
jameslarry:

Hola, sigo con el tema del lote, he probado un script aquí que se me ocurrió pero al probar la estrategia da un error de tamaño de lote incorrecto. No sé si los datos históricos no soportan algunas funciones o qué. El script es sólo para EURUSD. ¿Qué estoy haciendo mal o es un problema del probador de estrategias?

extern int LotPercentage=10; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/100)*AccountBalance(); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance*AccountLeverage(); // multiply this 10% balance($100) by leverage to get lot units
double lots=NormalizeDouble((LotUnits/100000),2); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000*/

No necesitas ayuda, ya tienes una(https://www.mql5.com/en/forum/140034). ¡Sin embargo, usted se equivoca!

 
Hola el código que tengo trae un error de "división cero" y el otro es grande y no probado solo quiero algo simple como el script que tengo. ¿Puedes comprobar mi script y decirme dónde me equivoco? Si el balance es de $1000 y el apalancamiento es de 1:100 quiero que opere con 0.1 lotes así de simple pero está resultando un dolor de cabeza. Una vez que calcule (10/100)*AccountBalance() para obtener $100 como lo llevo a 0.1 para OrderSend sake. También no quiero un script que gestiona la pérdida de la parada para mí sólo la parte lotes.
 
jameslarry:
Hola el código que tengo trae un error de "división a cero" y el otro es grande y no está probado
Así que pruébalo... ¿quieres que otras personas escriban tu código por ti y lo prueben también?
 
Sí, sólo estoy preguntando lo que estoy haciendo mal en mi código. También estoy probando el código que onewitch me dio pero parece que hace algo con SL que no quiero que el script haga
 
jameslarry:
Sí, sólo estoy preguntando qué estoy haciendo mal en mi código. También estoy probando el código, pero parece hacer algo con SL que no quiero que el script haga
¿En qué momento de una operación perdedora quiere experimentar su pérdida máxima elegida?
 
 
Hola también he intentado esto, pero dio el mismo error que por encima de tal vez AccountBalance () y AccountFreeMargin () no funcionan en probador de la estrategia aquí es el código porque im empezando con un saldo de $ 3000 en la prueba, pero sigue dando error 4051 cantidad lotes no válidos. Y si puedo preguntar si tengo $3000 el valor de AccountBalance() sería 3000 o algo más. Lo siento si estoy molestando.
double Balance=AccountBalance();
if(Balance<=500){lots=0.1;}
if(Balance<1500&&Balance>1000){lots=0.3;}
if(Balance<2500&&Balance>2000){lots=0.5;}
if(Balance<3500&&Balance>3000){lots=0.7;}
if(Balance<4500&&Balance>4000){lots=0.9;}
if(Balance<5500&&Balance>5000){lots=1.1;}
if(Balance<6500&&Balance>6000){lots=1.3;}
if(Balance<7500&&Balance>7000){lots=1.5;}
if(Balance<8500&&Balance>8000){lots=1.7;}
if(Balance<9500&&Balance>9000){lots=1.9;}
if(Balance>10000){lots=2;}
 
jameslarry:
Hola, también he intentado esto, pero dio el mismo error que el anterior tal vez AccountBalance() y AccountFreeMargin() no funcionan en el probador de la estrategia aquí es el código porque estoy empezando con un saldo de $ 3000 en la prueba, pero sigue dando error 4051 cantidad de lotes no válidos. Y si puedo preguntar si tengo $3000 el valor de AccountBalance() sería 3000 o algo más. Lo siento si estoy molestando.

Oh, Dios,

Te sale ese error, porque ...no has calculado el coste de abrir esa cantidad de lote. Lea su otro hilo https://www.mql5.com/en/forum/140034 y https://www.mql5.com/en/forum/140034/page2#649957

 
como lo corrijo y que devuelve AccountBalance() es su valor en $ u otras unidades.
 
jameslarry:
como lo corrijo y que devuelve AccountBalance() es su valor en $ u otras unidades.

Vuelve en la moneda de su cuenta. Te he dado el archivo adjunto aquíhttps://www.mql5.com/en/forum/140034

Como se corrige el uso del cálculo del lote correctamente como este https://www.mql5.com/en/forum/140034