Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 837

 
Aleksey Vyazmikin:

Sei su tutta la storia alla ricerca di rifornimenti? Per quanto riguarda l'equity drawdown, ecco come funziona per me

L'uomo non ha bisogno di chiudere tutto, non ha bisogno di cercare qualcosa nella storia, ha scritto:

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Domande dai principianti MQL5 MT5 MetaTrader 5

Denis Pershin, 2018.03.22 21:13

Ho depositato 500, se il saldo è aumentato del 10%, allora ritira questo 10%, purché il prelievo attuale non sia più del 5%. Questi input sono nella funzione, non funziona per calcolare esattamente la crescita e il drawdown.

E in seguito, come è chiaro dal messaggio:

if(_ldd < _dd) TesterWithdrawal(_dep-_bal); // Снимаем: нач.депозит - баланс }

TesterWithdrawal

Документация по MQL5: Общие функции / TesterWithdrawal
Документация по MQL5: Общие функции / TesterWithdrawal
  • www.mql5.com
Общие функции / TesterWithdrawal - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

L'uomo non ha bisogno di chiudere tutto, non ha bisogno di cercare qualcosa nella storia, ha scritto:

Bene, come seguito a quanto è chiaro il messaggio:

TesterWithdrawal

Ho pensato che l'uomo deve prendere una decisione sul ritiro sul reale, avendo precedentemente fermato il commercio...

Beh, non ha capito cosa voleva.

 
Aleksey Vyazmikin:


Proprio così, ho bisogno di mantenere un importo sul saldo durante il test, ritirare l'aumento, il robot è senza reinvestimento, e commercia una griglia su una base martingala, quindi ci sono costantemente scambi aperti nel mercato

 
Denis Pershin:

Va bene, ho bisogno di mantenere un importo in equilibrio durante il test, ritirare l'incremento, il robot non ha reinvestimento, e scambia una griglia su martingala, quindi ci sono costantemente scambi aperti nel mercato

Beh, in ogni caso, la logica non cambia, ricordare il saldo iniziale e monitorare la crescita e il drawdown, poi ritirare... hai bisogno di qualcosa sul codice?

 
Aleksey Vyazmikin:

Se potete aiutarmi, per favore aiutatemi con il codice:

// dep=нач.депозит, growth=прирост %, _dd=допустимая просадка %
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
  double _bal=AccountInfoDouble(ACCOUNT_BALANCE);
  double _eq=AccountInfoDouble(ACCOUNT_EQUITY);
  double _ldd="что сюда?";
  
   if(_ldd < _dd) TesterWithdrawal(_bal-dep); // Снимаем: баланс - нач.депозит
 }
 
Denis Pershin:

Se non ti dispiace, aiutami con il codice:

Dovete prendere in considerazione il margine libero, non il capitale!

Potresti avere una situazione in cui il drawdown ti permette di ritirare un profitto dal saldo, ma c'è un grande margine coinvolto, e dopo il ritiro il drawdown sarà maggiore del tuo 5%.

Non posso aiutarti con le formule nel codice in questo momento, forse qualcun altro si collegherà e ti scriverà un codice, non è lungo, ma hai bisogno di un po' di pensiero)
 
Denis Pershin:

Se non ti dispiace, aiutami a completare il codice:

Non capisco... Avete bisogno di una formula per calcolare la percentuale di fondi dal saldo?

_ldd=100-_eq/_bal*100;
 
Denis Pershin:

Se non ti dispiace, aiutami a finire il codice:

Ecco a voi. La logica è quella che ho suggerito io, e se c'è qualcosa di sbagliato, lo sistemeremo:

//===============================================================================================
//--------------------------------- Снимает прибыль в тестере ----------------------------------+
//===============================================================================================
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
 double _now_bal=0,_now_mg=0,_now_pr=0,_surplus=0,_GR=0,_DR=0;
 _now_bal= AccountInfoDouble(ACCOUNT_BALANCE);
 _now_mg = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
 _now_pr = _now_bal-_dep; // Сумма к снятию
 _surplus= _now_mg-_now_pr; // Считаем остаток после снятия
 _GR = (_now_bal-_dep)/_dep*100; // Прирост %
 _DR = (_surplus-_dep)/_dep*100; // Просадка %
 //Comment(DTS(_GR,2)," = ",DTS(_DR,2));
  if(_GR>_growth && _DR<_dd) TesterWithdrawal(_now_pr); // Снимаем
 }
 
Vitaly Muzichenko:


Grazie, proprio quello di cui avevo bisogno)
 
Nilog:

C'è un file indicatore solo in ex5.

Posso usare la funzione iCustom per trasformarlo in un indicatore multitemporale? Quindi prende i valori da ex5 da altri periodi e li disegna sul grafico corrente?

È possibile.