Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 260
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Всем привет,
Это обновление"Простой, но эффективной стратегии прорыва". В этом коде я добавил несколько вспомогательных функций для прохождения испытаний проп-фирмы.
Как правило, чтобы пройти испытание проп-фирмой, вам нужно соответствовать трем основным критериям:
- Целевая прибыль
- Не нарушать максимальный дневной убыток
- Не нарушать максимальный убыток
В этот код я включил две функции, проверяющие "Целевую прибыль" и "Почти нарушив максимальный дневной убыток", чтобы автоматически выйти из всех позиций и удалить все отложенные ордера. Что касается "максимального убытка", то он зависит от вашей стратегии и риск-менеджмента, поэтому в данном MQL5-скрипте он упоминаться не будет.
//+------------------------------------------------------------------+ //| Функции помощника фирмы| //+------------------------------------------------------------------+ // Удалить все отложенные ордера и выйти из всех позиций void ClearAll(string message) { Comment(message); for (int i = OrdersTotal() - 1; i >= 0; i--) { ulong orderTicket = OrderGetTicket(i); if (OrderSelect(orderTicket)) { trade.OrderDelete(orderTicket); } } for (int i = PositionsTotal() - 1; i >= 0; i--) { ulong posTicket = PositionGetTicket(i); trade.PositionClose(posTicket); } } // Проверьте, достигли ли мы цели по прибыли bool isPassed() { return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Проверьте, не нарушаем ли мы максимальный дневной убыток bool isDailyLimit() { MqlDateTime date_time; TimeToStruct(TimeCurrent(), date_time); int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year; // Текущий баланс double current_balance = AccountInfoDouble(ACCOUNT_BALANCE); // Получите сегодняшние закрытые сделки PL HistorySelect(0, TimeCurrent()); int orders = HistoryDealsTotal(); double PL = 0.0; for (int i = orders - 1; i >= 0; i--) { ulong ticket=HistoryDealGetTicket(i); if(ticket==0) { Print("HistoryDealGetTicket failed, no trade history"); break; } double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT); if (profit != 0) { // Получить дату сделки MqlDateTime deal_time; TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time); // Проверьте время сделки if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year) { PL += profit; } else break; } } double starting_balance = current_balance - PL; double current_equity = AccountInfoDouble(ACCOUNT_EQUITY); return current_equity < starting_balance - DAILY_LOSS_LIMIT; }
Нам нужно указать следующие параметры:
input string dd = "-------------PROP FIRM CHALLENGE-----------------"; input bool isChallenge = false; input double PASS_CRITERIA = 110100.; input double DAILY_LOSS_LIMIT = 4500.;
Надеюсь, вы найдете в этом скрипте полезное для себя.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/49713
Babi Ngepet
Я делюсь своим кодом для советника babi ngepet
AIS Extremum
Индикатор позволяет оценивать вероятность того, что цена достигла своего максимума или минимума.
Click on the market chart to create a price alert
Это первая новинка для MetaTrader 5. Теперь вы можете щелкнуть на графике, чтобы создать ценовые оповещения.
Count consecutive no. of bull or bear bars
Пример кода для подсчета последовательного количества бычьих и медвежьих баров.