¡Salud! ¡Salud! - página 3

 
Todo funciona bien si establezco un tamaño de lote fijo, pero quiero un tamaño de lote dinámico. Así que pensé en el script anterior pero no funciona y no sé el problema. @raptor quiero usar $100 del balance de $1000 que entiendo es 0.1 lote ya que mi apalancamiento es de 1:100 pero lo quiero dinámico de manera que si el sistema se beneficia y el balance se vuelve más alto digamos que el nuevo balance se vuelve de $2000 quiero que ahora abra operaciones con $200(0.2 lote) respetando el porcentaje que establezca es decir 10%, 20% o cualquiera del balance/margen que establezca. @ onewithzachy ordersend está bien ya que funciona si establezco un tamaño de lote fijo, es decir,
double lots=0.1;
pero cuando trato de dinamizarlo como abajo dice que el tamaño del lote es incorrecto.Mi cuenta es micro y soporta un lote mínimo de 0.01.
extern int LotPercentage=10; // use 10% of balance as lot size

int start()
{

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()*/

...

return 0;

}
También esto devuelve el mismo error mientras que su aún más simple
double lots;
double Balance=AccountBalance();
if(Balance<=500){lots=0.1;}                // If my account has $500 or less the lot will be 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;}                      // If account balance if over 10000 lot is 2

if(/*opening criteria met*/){
OrderSend(Symbol(),OP_BUY,lots,...)
}
Por favor, lea los comentarios que he incluido en el código para entender mejor.
 

NO HAGA ESTO CON DINERO REAL.

¿QUIERES PERDER EL 10% o ABRIR UNA POSICIÓN CON EL 10%? (respuesta : ¡la primera!)

double lots;                               // <<== value is zero
double Balance=AccountBalance();

if(Balance<=500){lots=0.1;}                // What the lots if Balance > 500 && <= 1000 ?

if(Balance<1500&&Balance>1000){lots=0.3;}  // read this carefully : if balance bigger than but not equal with 1000
                                           // AND balance also smaller but not equal than 1500.
                                           // Question : what's the lot if balance equal with 1000 and 1500 ?
 

Quiero abrir posiciones con el 10% de la misma manera que alguien puede depositar $1000 en su cuenta y abrir posiciones con 0.1 lotes (10% si el apalancamiento es 1:100).

onewithzachy tienes razón lo hice modificar a la de abajo y funcionó, pero la prueba de la estrategia salió más pobre supongo que es mejor usar lotes fijos.

double Balance=AccountBalance();
if(Balance<=500||(Balance>500&&Balance<1000)){lots=0.1;}
if((Balance<=1500&&Balance>=1000)||(Balance>1500&&Balance<2000)){lots=0.3;}
if((Balance<=2500&&Balance>=2000)||(Balance>2500&&Balance<3000)){lots=0.5;}
if((Balance<=3500&&Balance>=3000)||(Balance>3500&&Balance<4000)){lots=0.7;}
if((Balance<=4500&&Balance>=4000)||(Balance>4500&&Balance<5000)){lots=0.9;}
if((Balance<=5500&&Balance>=5000)||(Balance>5500&&Balance<6000)){lots=1.1;}
if((Balance<=6500&&Balance>=6000)||(Balance>6500&&Balance<7000)){lots=1.3;}
if((Balance<=7500&&Balance>=7000)||(Balance>7500&&Balance<8000)){lots=1.5;}
if((Balance<=8500&&Balance>=8000)||(Balance>8500&&Balance<9000)){lots=1.7;}
if((Balance<=9500&&Balance>=9000)||(Balance>9500&&Balance<10000)){lots=1.9;}
if(Balance>10000){lots=2;} 
 
jameslarry:
Todo funciona bien si establezco un tamaño de lote fijo, pero quiero un tamaño de lote dinámico. Así que pensé en el script anterior pero no funciona y no sé el problema. @raptor quiero usar $100 del balance de $1000 que entiendo es 0.1 lote ya que mi apalancamiento es de 1:100 pero lo quiero dinámico de manera que si el sistema se beneficia y el balance se vuelve más alto digamos que el nuevo balance se vuelve de $2000 quiero que ahora abra operaciones con $200(0.2 lote) respetando el porcentaje que establezca es decir 10%, 20% o cualquiera del balance/margen que establezca. @ onewithzachy ordersend está bien ya que funciona si establezco un tamaño de lote fijo,pero cuando trato de dinamizarlo como abajo dice que el tamaño del lote es incorrecto. Mi cuenta es micro y soporta un lote mínimo de 0.01. También esto devuelve el mismo error mientras que su aún más simple Por favor, lea los comentarios que he incluido en el código para entender mejor.
Creo que tienes un gran malentendido de cómo funcionan las cosas . El requisito de margen y el riesgo no son la misma cosa ... si usted crea un tamaño de posición basado en un requisito de margen de $ 100 y su comercio pierde usted puede perder mucho más, o menos, de sus $ 100 ... El requisito de margen cambia con el apalancamiento. . . El riesgo no lo hace.
 
No, espera, sí que ha añadido un poco de turbo, lo he probado mal. Sería genial si pudiera calcularlo usando una fórmula en lugar de toneladas de declaraciones if. ¿Es posible derivar una fórmula?
 
ok arriesgado en algunas situaciones p.e. en 2012 habría perdido con turbo pero ganado sin
 
¿Cuál es la forma más segura?
 
jameslarry:
No, espera, sí que ha añadido un poco de turbo, lo he probado mal. Sería genial si pudiera calcularlo usando una fórmula en lugar de toneladas de declaraciones if. ¿Es posible derivar una fórmula?
Sí, traza tus puntos en un gráfico y luego puedes elaborar una ecuación lineal para ello en la forma y = mx + c
 
jameslarry:
¿Cuál es la forma más segura?
Hacer lo que . . . no has explicado realmente lo que quieres hacer . . a pesar de que se te han hecho preguntas específicas . . si ignoras las preguntas que te hacen para que te ayuden entonces te ignorarán muy rápidamente.