Heeeelp! heeeelp!

 

Ciao ancora sul problema del lotto, ho provato uno script qui che ho pensato, ma il test della strategia dà un errore di dimensione del lotto sbagliato. Non so se i dati storici non supportano alcune funzioni o cosa. Lo script è solo per EURUSD. Cosa sto facendo di sbagliato o è un problema di strategy tester?

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:

Ciao ancora sulla questione del lotto, ho provato uno script qui che ho pensato, ma il test della strategia dà un errore di dimensione del lotto sbagliato. Non so se i dati storici non supportano alcune funzioni o cosa. Lo script è solo per EURUSD. Cosa sto facendo di sbagliato o è un problema di strategy tester?

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

Non hai bisogno di aiuto, ne hai già uno(https://www.mql5.com/en/forum/140034)! Eppure ti sbagli!

 
Ciao il codice che ho ottenuto porta un errore "zero divide" e l'altro è grande e non testato voglio solo qualcosa di semplice come lo script che ho. Puoi controllare il mio script e dirmi dove sto sbagliando? Se il saldo è di $1000 e la leva è 1:100, voglio che il trading avvenga con 0,1 lotti, solo questo è semplice, ma si sta rivelando un mal di testa. Una volta che ho calcolato (10/100)*AccountBalance() per ottenere $100 come faccio a portarlo a 0.1 per il sake OrderSend. Inoltre non voglio uno script che gestisca lo stop loss per me solo la parte dei lotti.
 
jameslarry:
Ciao il codice che ho ottenuto porta un errore "zero divide" e l'altro è grande e non testato
Quindi testalo. . . vuoi che altre persone scrivano il tuo codice per te e lo testino anche?
 
Sì, sto solo chiedendo cosa sto facendo di sbagliato nel mio codice. Sto anche testando il codice che onewitch mi ha dato ma sembra fare qualcosa con SL che non voglio che lo script faccia
 
jameslarry:
Sì, sto solo chiedendo cosa sto facendo di sbagliato nel mio codice. Sto anche testando il codice ma sembra fare qualcosa con SL che non voglio che lo script faccia
A che punto di un trade perdente vuoi sperimentare la tua perdita massima scelta?
 
 
Ciao ho anche provato questo ma ha dato lo stesso errore di cui sopra forse AccountBalance() e AccountFreeMargin() non funzionano su strategy tester ecco il codice perché sto iniziando con un saldo di $3000 nel test ma continua a dare l'errore 4051 invalid lots amount. E se posso chiedere se ho $3000 il valore di AccountBalance() sarebbe 3000 o qualcos'altro. Mi dispiace se sto disturbando.
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:
Ciao ho anche provato questo ma ha dato lo stesso errore di cui sopra forse AccountBalance() e AccountFreeMargin() non funzionano su strategy tester ecco il codice perché sto iniziando con un saldo di $3000 nel test ma continua a dare l' errore 4051 quantità di lotti non valida. E se posso chiedere se ho $3000 il valore di AccountBalance() sarebbe 3000 o qualcos'altro. Mi dispiace se sto disturbando.

Oh, cielo,

Si ottiene quell'errore, perché ... non hai calcolato il costo per aprire quella quantità di lotto. Leggi il tuo altro thread https://www.mql5.com/en/forum/140034 e https://www.mql5.com/en/forum/140034/page2#649957

 
come posso correggerlo e cosa restituisce AccountBalance() è il suo valore in $ o altre unità.
 
jameslarry:
come posso correggerlo e cosa restituisce AccountBalance() è il suo valore in $ o altre unità.

Ritorna nella valuta del tuo account. Ti ho dato l'allegato quihttps://www.mql5.com/en/forum/140034

Come si fa a correggerlo usando il calcolo del lotto correttamente come questo https://www.mql5.com/en/forum/140034

Motivazione: