Heeeelp! heeeelp! - pagina 3

 
Tutto funziona bene se imposto una dimensione fissa del lotto, ma io voglio una dimensione dinamica del lotto. Così ho pensato allo script di cui sopra ma non funziona e non conosco il problema. @raptor voglio usare $100 del bilancio di $1000 che capisco sia 0.1 lotto dato che il mio leverage è 1:100 ma lo voglio dinamico in modo che se il sistema guadagna e il bilancio diventa più alto diciamo che il nuovo bilancio diventa $2000 voglio che ora apra le operazioni con $200(0.2 lotto) rispettando la percentuale che ho impostato cioè 10%, 20% o qualsiasi bilancio/margine che ho impostato. @ onewithzachy ordersend va bene poiché funziona se imposto una dimensione fissa del lotto cioè
double lots=0.1;
ma quando provo a dinamizzarlo come qui sotto mi dice dimensione del lotto sbagliata. Ilmio conto è micro e supporta un lotto minimo di 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;

}
Anche questo restituisce lo stesso errore mentre è ancora più semplice
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,...)
}
Si prega di leggere i commenti che ho incluso nel codice per capire meglio.
 

NON FARLO CON SOLDI VERI.

Vuoi perdere il 10% o aprire una posizione con il 10%? (risposta: la prima!)

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 ?
 

Voglio aprire una posizione con il 10% nello stesso modo in cui qualcuno può depositare $1000 sul proprio conto e aprire posizioni con 0,1 lotti (10% se la leva è 1:100).

onewithzachy hai ragione, l'ho modificato nel modo seguente e ha funzionato, ma il test della strategia è uscito più povero, credo che sia meglio usare lotti fissi.

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:
Tutto funziona bene se imposto una dimensione fissa del lotto, ma io voglio una dimensione dinamica del lotto. Così ho pensato allo script di cui sopra ma non funziona e non conosco il problema. @raptor voglio usare $100 del bilancio di $1000 che capisco sia 0.1 lotto dato che il mio leverage è 1:100 ma lo voglio dinamico in modo che se il sistema guadagna e il bilancio diventa più alto diciamo che il nuovo bilancio diventa $2000 voglio che ora apra le operazioni con $200(0.2 lotto) rispettando la percentuale che ho impostato cioè 10%, 20% o qualsiasi bilancio/margine che ho impostato. @ onewithzachy ordersend va bene poiché funziona se imposto una dimensione fissa del lotto,ma quando provo a dinamizzarlo come qui sotto, dice che la dimensione del lotto è sbagliata. Il mio conto è micro e supporta un lotto minimo di 0,01. Anche questo restituisce lo stesso errore mentre è ancora più semplice Si prega di leggere i commenti che ho incluso nel codice per capire meglio.
Penso che tu abbia una grande incomprensione di come funzionano le cose. Il requisito di margine e il rischio non sono la stessa cosa ... se crei una posizione basata su un requisito di margine di 100$ e il tuo trade perde puoi perdere molto di più, o meno, dei tuoi 100$ ... Il requisito di margine cambia con la leva... Il rischio no.
 
No, aspetta, ha aggiunto un po' di turbo che avevo testato in modo sbagliato. Sarebbe bello se potessi calcolarlo usando una formula piuttosto che tonnellate di dichiarazioni if. È possibile ricavare una formula?
 
ok rischioso in alcune situazioni ad esempio nel 2012 avrebbe perso con il turbo ma guadagnato senza
 
Qual è il modo più sicuro?
 
jameslarry:
No, aspetta, ha aggiunto un po' di turbo che avevo testato in modo sbagliato. Sarebbe bello se potessi calcolarlo usando una formula piuttosto che tonnellate di dichiarazioni if. È possibile ricavare una formula?
Sì, traccia i tuoi punti su un grafico e poi puoi elaborare un'equazione lineare per esso nella forma y = mx + c
 
jameslarry:
Qual è il modo più sicuro?
Per fare cosa... non hai spiegato cosa vuoi fare... nonostante ti siano state fatte domande specifiche. . . se ignori le domande che ti vengono poste in modo che tu possa essere aiutato, allora sarai ignorato molto rapidamente.