OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); OrderClose(OrderTicket(),OrderLots(),Bid+5*Point,3,Violet); return(0);Вот так у меня получилось, но что-то не выходит....где может быть ошибка???
Здравствуйте!!! Помогите написать скрипт. Ордер открыт. Нужно его закрыть на 5 п. от цены открытия. Профит и Лосс ставится только минимум 10 пунктов. Как быть?
Алгоритм такой:
Закрывать позицию по профиту
OrderProfit
OrderClose
Вам в помощь... ;)))
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}пробуй так должно работать.
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}пробуй так должно работать.
Не должно, OrderProfit() используется неправильно
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}
Терь все получится...
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}
Терь все получится...
Еше круче...) Ну что, кто сделает еще попытку? P
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}
Терь все получится...
Еше круче...) Ну что, кто сделает еще попытку? P
Лень писать - проверка разницы между текущей ценой и ценой открытия ордера даст желаемый результат.
Да, если это для реальной торговли, то желательно еще проверить магик, а также нужно проверять еще результат работы ОдерКлозе и не обязательно столько раз вызывать ОрдерТайп.
Успехов.
for(int n1=OrdersTotal() - 1;n1>=0;n1--) // { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol())continue; { if(OrderType()==OP_BUY && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Bid,20,Red); if(OrderType()==OP_SELL && OrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*Point )OrderClose(OrderTicket(),OrderLots(),Ask,20,Red); }}
Терь все получится...
Еше круче...) Ну что, кто сделает еще попытку? P
Лень писать - проверка разницы между текущей ценой и ценой открытия ордера даст желаемый результат.
Да, если это для реальной торговли, то желательно еще проверить магик, а также нужно проверять еще результат работы ОдерКлозе и не обязательно столько раз вызывать ОрдерТайп.
Успехов.
Блин, че то не работает!!!!! (((
Блин, че то не работает!!!!! (((
А что там может не работать ? Выкладывайте код функции, тот, что сами написали - будет полезнее так разобраться.
Успехов.
Блин, че то не работает!!!!! (((
for(int n1=OrdersTotal() - 1;n1>=0;n1--) { if(OrderSelect(n1,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol()) continue; { if(OrderOrderProfit()>=MarketInfo(Symbol(),MODE_TICKVALUE)*5*OrderLots()) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,Red); } }Все ленивые никто и не подскажет) А так?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!!! Помогите написать скрипт. Ордер открыт. Нужно его закрыть на 5 п. от цены открытия. Профит и Лосс ставится только минимум 10 пунктов. Как быть?