Per coloro che sono interessati - è stato possibile raggiungere valori di lavoro (medi) della variabile f ottimale, con il metodo della media geometrica secondo R. Vince nell'EA incluso nella consegna standard della MT basata su MA (vedi schermata). In base alle condizioni e all'ordine di calcolo di f ottimale dal libro, il suo valore è 0,36. Dopo aver terminato il codice, posterò qui la funzione con la descrizione e l'ordine di utilizzo per calcolare i volumi dei lotti aperti nei futuri scambi secondo il libro di R. Vince.
Ehm, come si può allegare tutto questo a un EA funzionante con una semplice definizione di dimensione del lotto in % di depo? O forse non sto guadagnando abbastanza)))
Voglio dire, è tutto un gioco mentale o ha un'applicazione pratica con un effetto positivo?
Ehm, come si può allegare tutto questo a un EA funzionante con una semplice definizione della dimensione del lotto come % del deposito? Forse non sto guadagnando abbastanza)).
Voglio dire che tutto questo è un gioco mentale o ha un'applicazione pratica con un effetto positivo?
Certo, leggi R Vince - vedi i post sopra il trailer, non l'ho ancora provato io stesso su una demo... Vedremo... :-)))
Posterò la fiya qui appena avrò finito, con una descrizione.
Torniamo al codice originale, che abbiamo già stravolto alcune volte:
for (f = 0.01; f<=1.0; f=f+0.01)//цикл перебора переменной f для поиска оптимального ее значения,при котором TWR-максимально
{
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{ // и считаем относительный конечный капитал (TWR)
TWR = TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // TWR - это произведение всех HPR//if (TWR>TWR_Rez) {TWR_Rez = TWR; Print(" TWR = ",TWR_Rez, " при f = ", f);} // else break;
}
if (TWR>TWR_Rez) {
TWR_Rez = TWR;
G=MathPow (TWR_Rez, 0.001988); // 1/503 сделки по данной торговой системе, как в книжке: в степени 1/N Print(" TWR = ",TWR_Rez," G = ",G, " при f = ", f);} // если текущий TWR > результирующего, elsebreak; // то результирующий делаем равным текущему, иначе переходим на след итерацию цикла по f
}
Potrebbe essere che la variabile TWR non venga resettata a "1" ad ogni iterazione di f?
Torniamo al codice originale, che abbiamo già stravolto alcune volte:
Forse si tratta della variabile TWR che non viene resettata a "1" ad ogni iterazione di f?
Sì, un punto competente a proposito... Possibile... molto probabile. Lo controllerò questo pomeriggio e lo posterò qui. Grazie.
Allora non è necessario creare un array TWR (come questo - la versione fresca - neanche...
Qui ho provato tutti i tipi di esorcismi per ridurre proporzionalmente il suo valore nel prodotto (perché il suo valore assoluto non è importante, è il confronto per più/piccolo che conta), in modo da evitare l'overflow quando si calcola il f ottimale.
for (f = 0.01; f<=1.0; f=f+0.01)//цикл перебора переменной f для поиска оптимального ее значения,при котором TWR-максимально
{
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{ // и считаем относительный конечный капитал (TWR)//TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR
Mas_TWR[orderIndex] = (1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // заполняем массив значениями HPR
}
//Print ("Mas_TWR[Qnt]= ", Mas_TWR[Qnt]); for ( orderIndex = 1;orderIndex<Qnt; orderIndex++)
{
TWR = MathSqrt(TWR*Mas_TWR[orderIndex]);}
if (TWR>TWR_Rez)
{
TWR_Rez = TWR;
//G = MathPow(TWR_Rez, 1/N);// G1 = G1*MathPow(Mas_TWR[orderIndex], 1/N);//G=MathPow (TWR_Rez, 0.0054054); // 1/185 сделки по данной торговой системе, как в книжке: в степени 1/N Print(" TWR_Rez = ",DoubleToStr(TWR_Rez,8), " при f = ", f);
// если текущий TWR > результирующего
}
else
{
TWR_Rez = TWR;
// G=MathPow (TWR_Rez, 1/N);Print(" А это уже меньше: TWR_Rez = ",DoubleToStr(TWR_Rez,8), " при f = ", f);
}
}
Print("Закрытых позиций = ", Qnt, " Нетто Профит/лосс = ", SUMM, " У последней ",Qnt, " закрытой позы профит/лосс = ",
Mas_Outcome_of_transactions[Qnt]);
Ero troppo pigro per incollare il codice nell'EA e controllarlo io stesso! :)))
Non ho ancora un vero e proprio Expert Advisor. Ho solo alcune idee. Ecco perché ho preso una media mobile standard senza ottimizzarla e ho scelto un periodo redditizio.
L'ultimo codice che ho provato, quando ho capito che TWR non si resetta a "1", era il seguente:
//+------------------------------------------------------------------+//---------переменные для расчета лота по оптимальному f Ральфа Винсаint Mas_Outcome_of_transactions [10000]; // Массив профитов/убытков закрытых позиций//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//--- Расчет оптимального f ---int Qnt = 0, Orders = OrdersHistoryTotal(); // Счётчик количества ордеров ArrayInitialize(Mas_Outcome_of_transactions, 0); // Обнуление массиваdouble f, D, SUMM, TWR, G, G_Rez, Pow = 1/NormalizeDouble(Orders, 0);
int orderIndex;
for (orderIndex = 0; orderIndex < Orders; orderIndex++)
{
if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
continue;
}
if (OrderSymbol() != Symbol() || OrderMagicNumber() != magic || OrderCloseTime()==0)
continue;
int lastType = OrderType();
double lastLots = OrderLots();
double lastProfit = OrderProfit() + OrderSwap();
if (orderIndex == 0 || lastProfit < D)
D = lastProfit;
Mas_Outcome_of_transactions[Qnt] = lastProfit; // Заполняем массив профитом/лоссом по всем закрытым позициям
SUMM=SUMM+lastProfit;
Qnt++; // увеличиваем счетчик закрытых ордеров
}
Print("D = ", DoubleToStr(D, 2), " Pow = ", DoubleToStr(Pow, 8));
for (f = 0.01; f<=1.0; f=f+0.01) // цикл перебора переменной f для поиска оптимального ее значения,
{ // при котором G - максимально
G = 1;
for ( orderIndex = 1; orderIndex < Qnt; orderIndex++) // при заданной f проходим по всем закрытым ордерам
{ // и считаем среднее геометрическое от TWR
TWR = 1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
G *= MathPow(TWR, Pow);
}
if (G > G_Rez)
{
G_Rez = G;
Print("G = ", G, " при f = ", f);
} // если текущий G > результирующего, то результирующий делаем равным текущемуelsebreak; // иначе переходим на следующую итерацию цикла по f
}
Print("Закрытых позиций = ", Qnt,
" Нетто Профит/лосс = ", SUMM,
" У последней ", Qnt,
" закрытой позы профит/лосс = ", Mas_Outcome_of_transactions[Qnt-1]);
return(0);
}
Nessuna matrice TWR.
Aspetterete a lungo per una tracimazione! ;D Anche se forse non sarebbe successo affatto...
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Per coloro che sono interessati - è stato possibile raggiungere valori di lavoro (medi) della variabile f ottimale, con il metodo della media geometrica secondo R. Vince nell'EA incluso nella consegna standard della MT basata su MA (vedi schermata). In base alle condizioni e all'ordine di calcolo di f ottimale dal libro, il suo valore è 0,36. Dopo aver terminato il codice, posterò qui la funzione con la descrizione e l'ordine di utilizzo per calcolare i volumi dei lotti aperti nei futuri scambi secondo il libro di R. Vince.
Congratulazioni per il vostro successo! :))
Grazie. Sembra che dovrò fare un array TWR, solo per essere sicuro, come mi hai consigliato.
Congratulazioni per il vostro successo! :))
punto di flesso f = 0,36, cioè come f aumenta ulteriormente, la variabile TWR - diminuisce - R. Vince ha ragione! :-)))
Ehm, come si può allegare tutto questo a un EA funzionante con una semplice definizione di dimensione del lotto in % di depo? O forse non sto guadagnando abbastanza)))
Voglio dire, è tutto un gioco mentale o ha un'applicazione pratica con un effetto positivo?
Ehm, come si può allegare tutto questo a un EA funzionante con una semplice definizione della dimensione del lotto come % del deposito? Forse non sto guadagnando abbastanza)).
Voglio dire che tutto questo è un gioco mentale o ha un'applicazione pratica con un effetto positivo?
Certo, leggi R Vince - vedi i post sopra il trailer, non l'ho ancora provato io stesso su una demo... Vedremo... :-)))
Posterò la fiya qui appena avrò finito, con una descrizione.
Certo, leggi R. Vince - vedi i post sopra nel trailer, non l'ho ancora testato io stesso su una demo... Vedremo... :-)))
Non appena avrò finito, posterò la fic qui con una descrizione.
Potresti dirmi cosa leggere del lavoro di Vince? Qual è il titolo dell'opera?
Puoi dirmi cosa leggere di Vince? Qual è il titolo dell'opera?
Scarica il trailer dal mio post a pagina 2 del thread da qui - pagine 30-32.
Credo di aver capito dove sta l'errore...
Torniamo al codice originale, che abbiamo già stravolto alcune volte:
Potrebbe essere che la variabile TWR non venga resettata a "1" ad ogni iterazione di f?
Credo di aver capito dove sta l'errore...
Torniamo al codice originale, che abbiamo già stravolto alcune volte:
Forse si tratta della variabile TWR che non viene resettata a "1" ad ogni iterazione di f?
Sì, un punto competente a proposito... Possibile... molto probabile. Lo controllerò questo pomeriggio e lo posterò qui. Grazie.
Allora non è necessario creare un array TWR (come questo - la versione fresca - neanche...
Qui ho provato tutti i tipi di esorcismi per ridurre proporzionalmente il suo valore nel prodotto (perché il suo valore assoluto non è importante, è il confronto per più/piccolo che conta), in modo da evitare l'overflow quando si calcola il f ottimale.
Ero troppo pigro per incollare il codice nell'EA e controllarlo io stesso! :)))
Non ho ancora un vero e proprio Expert Advisor. Ho solo alcune idee. Ecco perché ho preso una media mobile standard senza ottimizzarla e ho scelto un periodo redditizio.
L'ultimo codice che ho provato, quando ho capito che TWR non si resetta a "1", era il seguente:
Nessuna matrice TWR.
Aspetterete a lungo per una tracimazione! ;D Anche se forse non sarebbe successo affatto...