Heeeelp ! heeeelp !

 

J'ai essayé un script auquel j'ai pensé mais le test de stratégie donne une erreur de taille de lot incorrecte. Je ne sais pas si les données historiques ne supportent pas certaines fonctions ou quoi. Le script est pour EURUSD seulement. Qu'est-ce que je fais de mal ou est-ce un problème de testeur de stratégie ?

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:

J'ai essayé un script auquel j'ai pensé mais le test de stratégie donne une erreur de taille de lot incorrecte. Je ne sais pas si les données historiques ne supportent pas certaines fonctions ou quoi. Le script est pour EURUSD seulement. Qu'est-ce que je fais de mal ou est-ce un problème de testeur de stratégie ?

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

Tu n'as pas besoin d'aide, tu en as déjà une(https://www.mql5.com/en/forum/140034)!. Et pourtant vous vous plantez !

 
Bonjour, le code que j'ai obtenu apporte une erreur de "division par zéro" et l'autre est gros et non testé, je veux juste quelque chose de simple comme le script que j'ai. Pouvez-vous vérifier mon script et me dire où je me trompe ? Si le solde est de 1000 $ et l'effet de levier est de 1:100, je veux qu'il soit négocié avec 0,1 lot, c'est aussi simple que cela, mais il s'avère être un casse-tête. Une fois que j'ai calculé (10/100)*AccountBalance() pour obtenir 100 $, comment puis-je l'obtenir à 0,1 pour l'ordre d'envoi. Je ne veux pas non plus d'un script qui gère le stop loss pour moi, juste la partie lot.
 
jameslarry:
Bonjour le code que j'ai obtenu là apporte une erreur "zero divide" et l'autre est gros et non testé.
Alors teste-le... tu veux que d'autres personnes écrivent ton code pour toi et le testent aussi ? ??
 
Oui, je demande juste ce que je fais de mal dans mon code. Je teste également le code que Onewitch m'a donné mais il semble faire quelque chose avec SL que je ne veux pas que le script fasse.
 
jameslarry:
Oui, je demande juste ce que je fais de mal dans mon code. Je teste aussi le code mais il semble faire quelque chose avec SL que je ne veux pas que le script fasse.
A quel moment d'une transaction perdante voulez-vous subir la perte maximale que vous avez choisie ?
 
Lisez ce fil de discussion: https://www.mql5.com/en/forum/134659
 
Bonjour, j'ai aussi essayé ceci mais j'ai eu la même erreur que ci-dessus, peut-être que AccountBalance() et AccountFreeMargin() ne fonctionnent pas sur le testeur de stratégie. Voici le code car je commence avec un solde de $3000 dans le test mais il continue à donner l'erreur 4051 invalid lots amount. Et si je peux me permettre de demander si j'ai 3000 $, la valeur de AccountBalance() serait-elle de 3000 ou autre chose ? Désolé si je dérange.
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:
Bonjour, j'ai également essayé ceci mais cela a donné la même erreur que ci-dessus, peut-être que AccountBalance() et AccountFreeMargin() ne fonctionnent pas sur le testeur de stratégie. Voici le code car je commence avec un solde de 3000 $ dans le test mais il continue à donner l' erreur 4051 invalid lots amount. Et si je peux me permettre de demander si j'ai 3000 $, la valeur de AccountBalance() serait-elle de 3000 ou autre chose ? Désolé si je dérange.

Oh là là,

Vous obtenez cette erreur parce que ... vous n'avez pas calculé le coût d'ouverture de ce montant de lot. Lisez vos autres fils de discussion https://www.mql5.com/en/forum/140034 et https://www.mql5.com/en/forum/140034/page2#649957

 
Comment puis-je le corriger et qu'est-ce que AccountBalance() retourne, est-ce sa valeur en $ ou en d'autres unités ?
 
jameslarry:
Comment puis-je le corriger et que renvoie AccountBalance(), est-ce sa valeur en $ ou en d'autres unités ?

Il revient dans la devise de votre compte. Je vous ai donné la pièce jointe icihttps://www.mql5.com/en/forum/140034

Comment le corriger en utilisant le calcul du lot correctement comme celui-ci https://www.mql5.com/en/forum/140034

Raison: