Собрал Франкенштейна. Конечно же он не работает.
По идее советник следит за открытой позицией. Выставляет максимальный профит и когда профит опустится до 50% от максимума (можно изменить) любая сделка закрывается.
И как здесь поставить таймер, чтобы сходу не закрыл ордер.
Попробуй так, должно работать. Но это не точно)))
#include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> CPositionInfo m_PositionInfo; CTrade m_trade; input double percent =50.0; //процент input ulong Magic = 673984; // magic double profit,maxprofit; //+------------------------------------------------------------------+ int OnInit() { m_trade.SetExpertMagicNumber(Magic); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { profit= Profit(); maxprofit=profit>maxprofit?profit:maxprofit; if(profit>0&&profit<=maxprofit*100*percent) PositionClose(); } //+------------------------------------------------------------------+ double Profit(void) { double prof=0; for(int i=PositionsTotal()-1; i>=0; i--) if(m_PositionInfo.SelectByIndex(i)) if(m_PositionInfo.Symbol()==_Symbol && m_PositionInfo.Magic()==Magic) prof+=m_PositionInfo.Commission()+m_PositionInfo.Swap()+m_PositionInfo.Profit(); return(prof); } //+------------------------------------------------------------------+ void PositionClose() { for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_PositionInfo.SelectByIndex(i)) if(m_PositionInfo.Symbol()==_Symbol && m_PositionInfo.Magic() == Magic) m_trade.PositionClose(m_PositionInfo.Ticket()); } } //+------------------------------------------------------------------+
Попробуй так, должно работать. Но это не точно)))
Не работает увы. Вывел comment максимального профита. По нулям. Сделка не закрывается
maxprofit/100*percent

- www.mql5.com
Тогда придётся что-нибудь почитать.
maxprofit/100*percent это, да, лоханулся.
А в остальном всё работает. Я проверил.
Сделку открываешь вручную? Откроешь сделку экспертом с магиком, всё заработает. Или убери магик из эксперта.
#include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> CPositionInfo m_PositionInfo; CTrade m_trade; input double percent =50.0; //процент double profit,maxprofit; //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { profit= Profit(); maxprofit=profit>maxprofit?profit:maxprofit; if(profit>0&&profit<=maxprofit/100*percent) { PositionClose(); maxprofit = 0; } } //+------------------------------------------------------------------+ double Profit(void) { double prof=0; for(int i=PositionsTotal()-1; i>=0; i--) if(m_PositionInfo.SelectByIndex(i)) if(m_PositionInfo.Symbol()==_Symbol) prof+=m_PositionInfo.Commission()+m_PositionInfo.Swap()+m_PositionInfo.Profit(); return(prof); } //+------------------------------------------------------------------+ void PositionClose() { for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_PositionInfo.SelectByIndex(i)) if(m_PositionInfo.Symbol()==_Symbol) m_trade.PositionClose(m_PositionInfo.Ticket()); } } //+------------------------------------------------------------------+
А в остальном всё работает. Я проверил.
Сделку открываешь вручную? Откроешь сделку экспертом с магиком, всё заработает. Или убери магик из эксперта.
Для проверки открыл вручную.
Думал почему не работает, даже начал делать с
ACCOUNT_PROP_PROFIT
А в остальном всё работает. Я проверил.
Сделку открываешь вручную? Откроешь сделку экспертом с магиком, всё заработает. Или убери магик из эксперта.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
По идее советник следит за открытой позицией. Выставляет максимальный профит и когда профит опустится до 50% от максимума (можно изменить) любая сделка закрывается.
И как здесь поставить таймер, чтобы сходу не закрыл ордер.