Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 837

 
Aleksey Vyazmikin:

Вы на всей  истории ищите пополнение? Про просадку эквити у меня так работает

Человеку не нужно закрывать всё, ему не нужно ничего искать в истории, он же написал: 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Denis Pershin, 2018.03.22 21:13

Есть пополнение на 500, если вырос баланс на 10%, тогда снимаем эти 10% при условии, что текущая просадка не более 5%. В функции эти входные данные заложены, не получается просчитать именно прирост и просадку.

Ну и вдогонку как понятно по сообщению:

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

TesterWithdrawal

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

Человеку не нужно закрывать всё, ему не нужно ничего искать в истории, он же написал: 

Ну и вдогонку как понятно по сообщению:

TesterWithdrawal

Я думал, человек нужно на реале принимать решение о снятии, предварительно остановив торговлю...

Ну не понял, что хочет.

 
Aleksey Vyazmikin:


Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки

 
Denis Pershin:

Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки

Ну, в любом случае логика не меняется, запомнили начальный баланс и мониторим прирост и просадку, потом снимаем... по коду нужно что-то?

 
Aleksey Vyazmikin:

   Если вам не сложно,помогите дописать код:

// 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:

   Если вам не сложно,помогите дописать код:

В расчёт нужно брать свободную маржу, а не эквити!

Может получится ситуация, когда по средствам позволяет просадка снять прибыль с баланса, но при этом задействована большая маржа, и после снятия просадка будет больше ваших 5%

Формулами в коде сейчас не помогу, может кто другой подключится и напишет вам код, здесь не долго, но нужно немного помыслить)
 
Denis Pershin:

   Если вам не сложно,помогите дописать код:

Я не понимаю... Вам нужна формула для вычисления процента средств от баланса?

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

   Если вам не сложно,помогите дописать код:

Вот, держите. Логика та, которую Я предложил, если что не так - исправим:

//===============================================================================================
//--------------------------------- Снимает прибыль в тестере ----------------------------------+
//===============================================================================================
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:


Спасибо,то что нужно)
 
Nilog:

Есть файл индикатора только в ex5. 

Можно ли с помощью функции iCustom сделать из него мультитаймфреймный индикатор? Ну, чтобы он брал значения из ex5 с других периодов и рисовал их на текущем графике?

Можно.

Причина обращения: