[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 126

 
eddy:
Ebbene, cosa sono le perdite e il fattore di diminuzione ?

perdite - operazioni non redditizie

DecreaseFactor - il grado di riduzione del lotto su una serie di trade perdenti.

 

Sergey_Rogozin:

Se DecreaseFactor=3 e perdite=3, allora secondo la formula otteniamo Lot=0 !!!

Nel caso di perdite>3, otteniamo Lot<0

ecco perché l'accordo non sarà aperto, questo è il calcolo)

se ci sono troppi trade perdenti

 
sergeev:
quindi non succederà nulla. La funzione Funk2 - non restituisce alcun valore. è nulla

In questo caso, la funzione in questione è

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

è per questo che l'accordo non si aprirà, è su questo che contiamo)

se ci sono già molte perdite.

Quindi, questo chiude la possibilità di essere coinvolti in tutto e per tutto.

Da dove arriveranno allora i trade redditizi? ))))

 
Sergey_Rogozin:

Quindi chiude del tutto la possibilità di accendersi.

Quindi non impostare il DecreaseFactor o impostarlo piccolo)
 
Sergey_Rogozin:

perdite - operazioni non redditizie

DecreaseFactor - la misura in cui il lotto viene ridotto su una serie di trade perdenti.

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:

Sì, è esattamente quello di cui sto parlando.

Cosa succede quando le perdite / DecreaseFactor >= 1 ????

Ahhhh! Si apre con il Lotto iniziale.

Grazie.

 
Sergey_Rogozin:

Sì, è esattamente quello di cui sto parlando.

Cosa succede quando le perdite / DecreaseFactor >= 1 ????

sarà diviso per 3 se il precedente non era redditizio, se il lotto è inferiore al minimo alla divisione allora la funzione lotto minimo avrà effetto
lot = minlot;
 
Martingeil:
Se il precedente non era redditizio, il lotto sarà diviso per 3. Se il lotto è inferiore al lotto minimo, la funzione lotto minimo subentrerà.

Sì, grazie!

Capito.

Motivazione: