Открытие сделки: Цена касается нарисованной линии

 

Здравствуйте. Пишу советника, который при появлении сигнала ставит графическую линию, а когда цена косается этой линии повторно открывается сигнал. Не могу придумать как это реализовать.

Пример сделки на продажу:

 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;
    }
 
что может быть проще - сравнить текущую цену с ценой линии и при касании линии ценой например добавить описание к линии (в описании время касания например) чтоб следующие касания можно было по времени сравнить с первым, я правильно понял - цена же должна повторно вернуться к линии
 

В кодобазе есть пример, где сделка открывается или переворачивается при касании с нарисованной линией.

https://www.mql5.com/ru/code/14205

Levels with Revolve
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("Цена пробила линию!");

}