[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 126

 
eddy:
Que sont les pertes et le facteur de réduction ?

pertes - opérations non rentables

DecreaseFactor - le degré de réduction du Lot sur une série de trades perdants.

 

Sergey_Rogozin:

Si DecreaseFactor=3 et pertes=3, alors selon la formule nous obtenons Lot=0 ! !!

Dans le cas de pertes>3, nous obtenons Lot<0

c'est pourquoi le marché ne sera pas ouvert, c'est le calcul)

s'il y a trop de transactions perdantes

 
sergeev:
donc rien ne se passera. La fonction Funk2 - ne renvoie aucune valeur. Elle est nulle.

Dans ce cas, la fonction en question est

void TestFunction (double &return_value1, double &return_value2)
 
sergeev:
Fonction Funk2
funk:)
 
eddy:

c'est pour ça que le marché ne s'ouvrira pas, c'est sur ça qu'on compte)

s'il y a déjà beaucoup de pertes.

Cela exclut donc toute possibilité de s'impliquer.

D'où viendront alors les transactions rentables ? ))))

 
Sergey_Rogozin:

Donc ça exclut la possibilité de s'allumer du tout.

Donc, ne définissez pas le facteur de réduction ou définissez-le de manière faible.)
 
Sergey_Rogozin:

pertes - opérations non rentables

DecreaseFactor - la mesure dans laquelle le lot est réduit lors d'une série de transactions perdantes.

extern string a = "ЛОТ ММ";
extern bool   MM=false;      // если false - то работает обычный лот, если true - работает ММ
extern double Lots = 0.1;    // обычный лот
extern double balans = 200;  // баланс при увеличении которого, следующий лот будет увеличен на лот MaximumRisk При ММ
double MaximumRisk = 0.1;    // лот прибавляемый к предыдущему при ММ
double DecreaseFactor = 3.0; // если позиция проигрышная то следующая позиция откроется с лотом /3 При ММ



double LotsOptimized() {
double lot = Lots;
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
if (MM){
int orders = OrdersHistoryTotal();
int losses = 0;
lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 2);
if (DecreaseFactor > 0.0) {
for (int i = orders - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
Print("Error in history!");
break;
}
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (OrderProfit() > 0.0) break;
if (OrderProfit() < 0.0) losses++;
}
if (losses > 1) lot = NormalizeDouble(lot - lot * losses / DecreaseFactor, 2);
}}
if(lot < minlot) lot = minlot;
if(lot > maxlot) lot = maxlot;
return (lot);}
 
Martingeil:

Oui, c'est exactement ce dont je parle.

Que se passe-t-il lorsque les pertes / DecreaseFactor >= 1 ? ???

Ahhhh ! Il s'ouvre avec le Lot initial.

Merci.

 
Sergey_Rogozin:

Oui, c'est exactement ce dont je parle.

Que se passe-t-il lorsque les pertes / DecreaseFactor >= 1 ? ???

sera divisé par 3 si le précédent n'était pas rentable, si le lot est inférieur au minimum à la division, la fonction de lot minimum prendra effet.
lot = minlot;
 
Martingeil:
Le précédent n'était pas rentable et si le lot est inférieur au lot minimum, la fonction de lot minimum prendra le relais.

Oui, merci !

Je l'ai.

Raison: