что может быть проще - сравнить текущую цену с ценой линии и при касании линии ценой например добавить описание к линии (в описании время касания например) чтоб следующие касания можно было по времени сравнить с первым, я правильно понял - цена же должна повторно вернуться к линии
В кодобазе есть пример, где сделка открывается или переворачивается при касании с нарисованной линией.
Levels with Revolve
- голосов: 17
- 2015.11.30
- Vladimir Tkach
- www.mql5.com
Эксперт торгует пробой или отбой от линий поддержки/сопротивления. Линии задаются трейдером вручную, с помощью объекта "Трендовая линия" на панели инструментов. При появлении обратного сигнала, например от другой линии, эксперт развернет позицию. Доступны два режима торговли: Отбой от линии. В этом случае покупка при касании ценой линии...
Anna Furmanova:
Здравствуйте. Пишу советника, который при появлении сигнала ставит графическую линию, а когда цена косается этой линии повторно открывается сигнал. Не могу придумать как это реализовать.
Пример сделки на продажу:
if(iClose(NULL, 0, 1)>PriceLine&&iClose(NULL, 0, 2)<PriceLine) {
Print("Цена пробила линию!");
}
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. Пишу советника, который при появлении сигнала ставит графическую линию, а когда цена косается этой линии повторно открывается сигнал. Не могу придумать как это реализовать.
Пример сделки на продажу:
void SetHLine1(string name, double price, color clr = Red, int style = 0, int width = 1) { ObjectCreate(name, OBJ_HLINE, 0, 0, price); ObjectSet(name, OBJPROP_PRICE1, price); ObjectSet(name, OBJPROP_STYLE, style); ObjectSet(name, OBJPROP_COLOR, clr); ObjectSet(name, OBJPROP_WIDTH, width); } for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; { if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue; { if(OrderType()==OP_BUY) pos++; if(OrderType()==OP_SELL) pos++; } } } if(SellS && pos==0) { SS = ObjectGet(result2, OBJPROP_PRICE1); SS = SellS; SetHLine1(result2 + "price", SS); WindowRedraw(); } if(TimeLastSell!=Time[0] && SS) if((ONlyOnePosbySignal && pos==0) || !ONlyOnePosbySignal) { res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,"",Magic,0,Red); if(res<0) { TimeLastSell=Time[0]; Print("Order Sell error: ",GetLastError()); } else Print("OK Order Sell"); return; }