Звуковой сигнал около горизонтального уровня.

 

На графике есть несколько горизонтальных линий.

Необходимо чтобы звучал сигнал когда цена будет около этих уровней.

Нашел 2 примера, но пока никак. Вот мой код:

int start()
 {
  string name;
  double price;

  for(int i=0;i<ObjectsTotal();i++)
   {
    name=ObjectName(i);
    price=ObjectGet(name, OBJ_HLINE);    
   }
   
  if(Bid==price)
   {
    PlaySound("Wait.wav");
    Sleep(10000);
   }
     
  return(0);
 }

Примеры которые я нашел:

//+------------------------------------------------------------------+
//|                                                 Price Alert mq4  |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

//----
#property indicator_chart_window
#property indicator_buffers 0
//---- input parameters
extern string    NamePrice="Price_1";
extern string    SoundFileName="gg.wav";
extern bool      ActiveSignal=true;
extern bool      ActiveAlert=false;
extern color     LineColor=Gold;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   if (ObjectFind(NamePrice)==-1)
     {
      ObjectCreate(NamePrice,OBJ_HLINE,0,0,Close[0]);
      ObjectSet(NamePrice,OBJPROP_COLOR,LineColor);
      ObjectSet(NamePrice,OBJPROP_STYLE,STYLE_DASH);

     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   //ObjectDelete(NamePrice);    //modificat
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (ObjectFind(NamePrice)==-1) return(0);
   double   _price=ObjectGet(NamePrice,OBJPROP_PRICE1);
   double _min=MathMin(High[1],Low[0]);
   double _max=MathMax(Low[1],High[0]);
//----
   if (ActiveSignal && _price>=_min  && _price<=_max)
     {
      if (ActiveAlert) Alert(Symbol()," ",Period()," Pretul a ajuns  ", NormalizeDouble(_price,Digits), " "); // Предупреждение на экран
      if(SoundFileName!="" )
         PlaySound( SoundFileName ); // Звуковой сигнал
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
int start()
 {
  if(ObjectGet("CENA", OBJ_HLINE)==0)
  {
  ObjectCreate("CENA", OBJ_HLINE, 0, 0,Bid-(Ask-Bid)*10);
  ObjectSet("CENA",OBJPROP_COLOR,Aquamarine);
  }
 int digits=MarketInfo(Symbol(),MODE_DIGITS);  
 bool condition=true;
 while(condition)
 {
  if(NormalizeDouble(Bid,digits-2)==NormalizeDouble(ObjectGet("CENA", OBJ_HLINE),digits-2))
  PlaySound("Wait.wav");
  Sleep(1000);
 }}
 int deinit()
 {
 ObjectDelete("CENA");
 }
 

Все вот так нормально

int start()
 {
 string name;
 int digits=MarketInfo(Symbol(),MODE_DIGITS);  
 bool condition=true;
 
  for(int i=0;i<ObjectsTotal();i++)
   {
    name=ObjectName(i);      
   }
 
 while(condition)
  {
   if(NormalizeDouble(Bid,digits-2)==NormalizeDouble(ObjectGet(name, OBJ_HLINE),digits-2))
   PlaySound("Wait.wav");
   Sleep(1000);
  }
 }