[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 126

 
eddy:
Nun, was sind Verluste und der DecreaseFactor ?

Verluste - unrentable Geschäfte

DecreaseFactor - der Grad der Lot-Reduzierung bei einer Reihe von Verlustgeschäften.

 

Sergey_Rogozin:

Wenn DecreaseFactor=3 und Verluste=3, dann erhalten wir nach der Formel Lot=0 !!!

Im Falle von Verlusten>3 ergibt sich Lot<0

deshalb wird das Geschäft nicht eröffnet, das ist die Berechnung)

wenn es zu viele Verlustgeschäfte gibt

 
sergeev:
Es wird also nichts passieren. Die Funktion Funk2 - gibt keinen Wert zurück. Sie ist ungültig

In diesem Fall handelt es sich um die Funktion

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

Das ist der Grund, warum das Geschäft nicht zustande kommt, darauf zählen wir)

wenn es bereits eine Menge Verluste gibt.

Damit ist die Möglichkeit, sich überhaupt zu engagieren, ausgeschlossen.

Woher sollen dann die profitablen Geschäfte kommen? ))))

 
Sergey_Rogozin:

Damit wird die Möglichkeit, sich überhaupt einzuschalten, verschlossen.

Setzen Sie also den DecreaseFactor nicht oder nur sehr klein ein)
 
Sergey_Rogozin:

Verluste - unrentable Geschäfte

DecreaseFactor - das Ausmaß, in dem das Lot bei einer Reihe von Verlustgeschäften reduziert wird.

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:

Ja, das ist genau das, wovon ich spreche.

Was passiert, wenn Verluste / DecreaseFactor >= 1 ????

Ahhhh! Es beginnt mit dem ersten Lot.

Danke.

 
Sergey_Rogozin:

Ja, das ist genau das, wovon ich spreche.

Was passiert, wenn Verluste / DecreaseFactor >= 1 ????

wird durch 3 geteilt, wenn die vorhergehende unrentabel war; ist die Partie bei der Teilung kleiner als das Minimum, wird die Funktion der minimalen Partie wirksam
lot = minlot;
 
Martingeil:
War die vorherige unrentabel, wird das Los durch 3 geteilt. Ist das Los kleiner als das Mindestlos, wird die Funktion des Mindestloses übernommen.

Ja, ich danke Ihnen!

Ich hab's.