Приветствую!! подскажите функцию, которая будет контралировать пересичения тейк профита и стоп лосса, а то часто бывает, что цена перепрыгивает через стопы и в результате не закрывается ордер и получается не тот результат.
- Ошибки, баги, вопросы
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
- помогите найти ошибку
С этим вопросом вы явно не по адресу.
Тут надо "брать за яйки" представителей вашего ДЦ !
Тогда "результат будет тот"
for(int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if( OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { if(Bid > OrderTakeProfit()) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position return(0); // exit } } } }
for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)//ордер выбирается среди открытых и отложенных ордеров if( OrderSymbol()==Symbol())// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить) { if(OrderType()==OP_BUY)//Отбираем позицию бай { if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер return(0); // выходим } } } }
if(OrderType()==OP_BUY) // long position is opened
в этой функции можно изменить на OP_SELL или добавить нужно как то. или нужно две таки функции в советник вставить: один на BUY, а другую на SELL??
if( OrderSymbol()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить)
вот так??
for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)//ордер выбирается среди открытых и отложенных ордеров if( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить) { if(OrderType()==OP_BUY)//Отбираем позицию бай { if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер return(0); // выходим } } if(OrderType()==OP_BUY)//Отбираем позицию селл { if(Ask < OrderTakeProfit())//Если цена ушла ниже ТП ордера { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем ордер return(0); // выходим } } } }
спасибо огромное!!!!
выдает ошибку
'if' - semicolon expected C:\Program Files\MetaTrader - FXstart\experts\Паутина SELL.mq4 (267, 7)
for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);//ордер выбирается среди открытых и отложенных ордеров if( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить) { if(OrderType()==OP_BUY)//Отбираем позицию бай { if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер return(0); // выходим } } if(OrderType()==OP_BUY)//Отбираем позицию селл { if(Ask < OrderTakeProfit())//Если цена ушла ниже ТП ордера { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем ордер return(0); // выходим } } } }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь