Heeeelp! heeeelp!

 

Oi, ainda sobre a questão do lote, tentei aqui um roteiro que pensei, mas o teste de estratégia dá um erro de tamanho de lote errado. Eu não sei se os dados históricos não suportam algumas funções ou o quê. O script é apenas para EURUSD. O que eu estou fazendo de errado ou é um problema de teste de estratégia?

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:

Oi ainda sobre a questão do lote, tentei aqui um roteiro que pensei, mas o teste de estratégia dá um erro de tamanho de lote errado. Eu não sei se os dados históricos não suportam algumas funções ou o quê. O script é apenas para EURUSD. O que eu estou fazendo de errado ou é um problema de teste de estratégia?

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

Você não precisa de ajuda, você já tem uma(https://www.mql5.com/en/forum/140034)! No entanto, você faz asneira!

 
Olá, o código que recebi traz um erro de "zero divisão" e o outro é grande e não testado só quer algo simples como o script que tenho. Você pode verificar meu script e me dizer onde estou errado? Se o saldo for $1000 e a alavancagem for 1:100, quero que ele seja negociado com 0,1 lote tão simples quanto isso, mas está provando ser uma dor de cabeça. Uma vez calculado (10/100)*ContaBalance() para obter $100, como faço para obter 0,1 por OrderSend. Também não quero um roteiro que me permita parar de perder apenas a parte dos lotes.
 
jameslarry:
Olá, o código que recebi traz um erro de "divisão zero" e o outro é grande e não foi testado.
Então teste-o . . . você quer que outras pessoas escrevam seu código para você e teste-o também ??
 
Sim, só estou perguntando o que estou fazendo de errado em meu código. Também estou testando o código que me deu , mas parece que ele faz algo com SL, o que eu não quero que o roteiro faça.
 
jameslarry:
Sim, só estou perguntando o que estou fazendo de errado em meu código. Eu também estou testando o código, mas parece fazer algo com o SL, o que eu não quero que o script faça.
Em que ponto de um negócio perdido você quer experimentar o prejuízo máximo escolhido?
 
 
Oi eu também tentei isto mas ele deu o mesmo erro que acima talvez AccountBalance() e AccountFreeMargin() não funcionam no teste de estratégia aqui é o código porque eu começo com um saldo de $3000 no teste mas ele continua dando erro 4051 quantidade de lotes inválidos. E se eu puder perguntar se tenho $3000, o valor de AccountBalance() seria 3000 ou algo mais. Desculpe se estou com problemas.
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:
Oi eu também tentei isto mas ele deu o mesmo erro que acima talvez AccountBalance() e AccountFreeMargin() não funcionam no teste de estratégia aqui é o código porque eu começo com um saldo de $3000 no teste mas ele continua dando erro 4051 quantidade de lotes inválidos. E se eu puder perguntar se tenho $3000, o valor de AccountBalance() seria 3000 ou algo mais. Desculpe se estou com problemas.

Oh meu Deus,

Você obtém esse erro, porque ...você não calculou o custo para abrir essa quantidade de lote. Leia seu outro tópico https://www.mql5.com/en/forum/140034 e https://www.mql5.com/en/forum/140034/page2#649957

 
como corrigi-lo e o que a AccountBalance() retorna é seu valor em $ ou outras unidades.
 
jameslarry:
como corrigi-lo e o que a AccountBalance() retorna é seu valor em $ ou outras unidades.

Ele retorna na moeda de sua conta. Eu lhe dei anexo aquihttps://www.mql5.com/en/forum/140034

Como corrigi-lo use o cálculo do lote corretamente como este https://www.mql5.com/en/forum/140034