Если есть открытые позиции, то советник должен начать следить за текущим значением Profit/Loss открытых позиций.
Здравствуйте! Помогите пожалуйста написать следующего советника:
Необходимо чтобы советник проверял есть ли открытые позиции.
Если есть открытые позиции, то советник должен начать следить
за текущим значением Profit/Loss открытых позиций. Если величина
прибыли больше 30 пунктов, то необходимо переместить уровень
stop loss на цену открытия позиции. (Позиции открываются лимитными
ордерами). Огромное спасибо тому кто согласится помочь. Очень
нужен такой советник.
- Немедленное исполнение - Открытие и закрытие позиций - Торговля - MetaTrader 5 для Android
- Немедленное исполнение - Открытие и закрытие позиций - Торговля - MetaTrader 5 для iPhone
- Parabolic SAR - Трендовые индикаторы - Использование технических индикаторов - Графики котировок, технический и фундаментальный анализ
Стучи в ICQ 230-432-825
Blader3000:
Здравствуйте! Помогите пожалуйста написать следующего советника: Необходимо чтобы советник проверял есть ли открытые позиции. Если есть открытые позиции, то советник должен начать следить за текущим значением Profit/Loss открытых позиций. Если величина прибыли больше 30 пунктов, то необходимо переместить уровень stop loss на цену открытия позиции. (Позиции открываются лимитными ордерами). Огромное спасибо тому кто согласится помочь. Очень нужен такой советник.
Здравствуйте! Помогите пожалуйста написать следующего советника: Необходимо чтобы советник проверял есть ли открытые позиции. Если есть открытые позиции, то советник должен начать следить за текущим значением Profit/Loss открытых позиций. Если величина прибыли больше 30 пунктов, то необходимо переместить уровень stop loss на цену открытия позиции. (Позиции открываются лимитными ордерами). Огромное спасибо тому кто согласится помочь. Очень нужен такой советник.
fxrobo_at_gmail_dot_com
icq 427383367
Что-то вроде этого. Без ордеров +30 проверить не могу ;) но наверное будет работать :)
int start() { //---- for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderType() == OP_SELL && OrderOpenPrice() - Ask > 30 * Point) || (OrderType() == OP_BUY && Bid - OrderOpenPrice() > 30 * Point)) { OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, CLR_NONE); } } } //---- return(0); }
extern int StopLoss=30; int start() { modify(); return(0); } void modify() { for(double cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()==OP_BUY) { if(StopLoss>=0) { if((Bid-OrderOpenPrice()>Point*StopLoss)) { if(OrderStopLoss()<Bid-Point*StopLoss || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*StopLoss,OrderTakeProfit(),0,Green); } } } } else { if(StopLoss>=0) { if((OrderOpenPrice()-Ask)>(Point*StopLoss)) { if((OrderStopLoss()>(Ask+Point*StopLoss)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*StopLoss,OrderTakeProfit(),0,Red); } } } } } }
nikko:
extern int StopLoss=30; int start() { modify(); return(0); } void modify() { for(double cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()==OP_BUY) { if(StopLoss>=0) { if((Bid-OrderOpenPrice()>Point*StopLoss)) { if(OrderStopLoss()<Bid-Point*StopLoss || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*StopLoss,OrderTakeProfit(),0,Green); } } } } else { if(StopLoss>=0) { if((OrderOpenPrice()-Ask)>(Point*StopLoss)) { if((OrderStopLoss()>(Ask+Point*StopLoss)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*StopLoss,OrderTakeProfit(),0,Red); } } } } } }
Если величина прибыли больше 30 пунктов, то необходимо переместить уровень stop loss на цену открытия позиции.
ваш код не соответсвует поставленной задаче
трейдер не просил траллить - он просил лишь выставить в БЕЗУБЫТОК!
у вас организован тралл 30п
void modify() { for(double cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()==OP_BUY) { if(OrderOpenPrice()>OrderStopLoss()) { if((Bid-OrderOpenPrice()>Point*StopLoss)) { if(OrderStopLoss()<Bid-Point*StopLoss) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*StopLoss,OrderTakeProfit(),0,Green); } } } } else { if(OrderOpenPrice()<OrderStopLoss()) { if((OrderOpenPrice()-Ask)>(Point*StopLoss)) { if((OrderStopLoss()>(Ask+Point*StopLoss))) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*StopLoss,OrderTakeProfit(),0,Red); } } } } } }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь