[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 126

 
eddy:
Bem, o que são as perdas e o fator de redução ?

perdas - negócios não-lucrativos

DiminaseFactor - o grau de redução do lote em uma série de negócios perdidos.

 

Sergey_Rogozin:

Se o DiminaseFactor=3 e asperdas=3, então, de acordo com a fórmula, obtemos Lote=0!!!

Em caso de perdas>3, obtemos Lote<0

é por isso que o negócio não será aberto, esse é o cálculo)

se houver muitos negócios perdidos

 
sergeev:
portanto, nada vai acontecer. A função Funk2 - não retorna nenhum valor. é nula

Neste caso, a função em questão é

void TestFunction (double &return_value1, double &return_value2)
 
sergeev:
Função Funk2
funk:)
 
eddy:

é por isso que o negócio não vai abrir, é com isso que contamos)

se já houver muitas perdas.

Isso encerra a possibilidade de se envolver de qualquer forma.

De onde virão então os negócios lucrativos? ))))

 
Sergey_Rogozin:

Assim, fecha a possibilidade de se ligar de qualquer forma.

Portanto, não defina o Fator de Diminuição ou o defina pequeno)
 
Sergey_Rogozin:

perdas - negócios não-lucrativos

DiminaseFactor - a medida em que o lote é reduzido em uma série de negócios perdidos.

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:

Sim, é exatamente disso que estou falando.

O que acontece quando as perdas / DecaseFactor >= 1 ????

Ahhhh! abre-se com o lote inicial.

Obrigado.

 
Sergey_Rogozin:

Sim, é exatamente disso que estou falando.

O que acontece quando as perdas / DecaseFactor >= 1 ????

será dividido por 3 se o anterior não era rentável, se o lote for inferior ao mínimo na divisão então a função de lote mínimo terá efeito
lot = minlot;
 
Martingeil:
O anterior não era rentável e se o lote for menor que o lote mínimo, a função de lote mínimo assumirá o controle.

Sim, obrigado!

Entendi.

Razão: