Звук в торговой системе

 

Помогите пожалуйста в написание советника. Нужно чтобы советник издал звук(пробовала использовать "\a" в выводе сообщения, не помогает) при обнаружении свечной модели на разных тайм фреймах и на разных валютных парах. Я не прошу полностью написать, просто нужен старт, чтобы хотя бы на двух тайм фреймах искал вот эту модель(захват за пояс, так вроде называется) и на двух валютных парах(неважно каких). Просто пыталась, но увы( То найдет, но без остановки выдает сообщение, то вообще не видит, так как алпари, пятизначная система и последняя цифарка разная, хотя роли не играет, для меня) ну вы меня поняли. Пыталась делить на 10, чтобы избавится от 5 знака после запятой, все равно не выходит. Если не сложно, помогите чуть чуть=) Код выкладывать не буду, и смех и грех, неправильный, не работает.

 
//1.12345 to 1.1234 // for Alpari client
void tofour(double &value1, double &value2, double &value3, double &value4)
{
   NormalizeDouble(value1, 4);
   NormalizeDouble(value2, 4);
   NormalizeDouble(value3, 4);
   NormalizeDouble(value4, 4);
}

void my_alert()
{
   double iclose;
   double iopen;
   double ilow;
   double ihigh;
   
   //buy eurusd
   iclose = iClose("EURUSD", PERIOD_M5, 1);
   iopen = iOpen("EURUSD", PERIOD_M5, 1);
   ilow = iLow("EURUSD", PERIOD_M5, 1);
   ihigh = iHigh("EURUSD", PERIOD_M5, 1);
   tofour(iopen, iclose, ilow, ihigh);
   if(iclose > iopen)
      if(iopen == ilow)
         if(ihigh >= iclose)
            Alert("EURUSD M5 BUY");
            
   iclose = iClose("EURUSD", PERIOD_M15, 1);
   iopen = iOpen("EURUSD", PERIOD_M15, 1);
   ilow = iLow("EURUSD", PERIOD_M15, 1);
   ihigh = iHigh("EURUSD", PERIOD_M15, 1);
   tofour(iopen, iclose, ilow, ihigh);
   if(iclose > iopen)
      if(iopen == ilow)
         if(ihigh >= iclose)
            Alert("EURUSD M15 BUY");
            
   //buy eurjpy
   iclose = iClose("EURJPY", PERIOD_M5, 1);
   iopen = iOpen("EURJPY", PERIOD_M5, 1);
   ilow = iLow("EURJPY", PERIOD_M5, 1);
   ihigh = iHigh("EURJPY", PERIOD_M5, 1);
   NormalizeDouble(iopen, 2);
   NormalizeDouble(iclose, 2);
   NormalizeDouble(ilow, 2);
   NormalizeDouble(ihigh, 2);
   if(iclose > iopen)
      if(iopen == ilow)
         if(ihigh >= iclose)
            Alert("EURJPY M5 BUY");
            
   iclose = iClose("EURJPY", PERIOD_M15, 1);
   iopen = iOpen("EURJPY", PERIOD_M15, 1);
   ilow = iLow("EURJPY", PERIOD_M15, 1);
   ihigh = iHigh("EURJPY", PERIOD_M15, 1);
   NormalizeDouble(iopen, 2);
   NormalizeDouble(iclose, 2);
   NormalizeDouble(ilow, 2);
   NormalizeDouble(ihigh, 2);
   if(iclose > iopen)
      if(iopen == ilow)
         if(ihigh >= iclose)
            Alert("EURJPY M15 BUY");
}

int init()
{
   my_alert();
   return(0);
}


int deinit()
{
   return(0);
}

int start()
{
   init();
   return(0);
}
вот у меня такой бред, примерно такой, щас изменила, но суть в том, разные тайм фреймы и разные валюты и если пятизначная система, преобразуем в четырех значную. Но! когда находит модель, дальше, при каждом тике вываливается сообщении, без умолку. и еще хорошо чтобы звук был, писк какой нить.
 
Просто суть в том, чтобы не листать таймфреймы и не циплять советника на все валютные пары

 
Melisa:
Просто суть в том, чтобы не листать таймфреймы и не циплять советника на все валютные пары

Во первых вы обратились не на тот форум, здесь идет обсуждение языка MQL5, а вы выложили код от MQL4. Это совершенно разные языки хотя много общего. Скорее всего вам сюда http://www.mql4.com/ru/.

Вот небольшой примерчик, не знаю точно работает или нет, в выходные нет возможности проверить. Можете попробовать в тестере в режиме визуализации,, только алерт работать не будет, он в тестере распечатывается в лог тестера.

datetime NewBar_EURUSD_M5;
datetime NewBar_EURJPY_M5;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NewBar("EURUSD",PERIOD_M5,NewBar_EURUSD_M5))
      my_alert("EURUSD",PERIOD_M5,1);

   if(NewBar("EURJPY",PERIOD_M5,NewBar_EURJPY_M5))
      my_alert("EURJPY",PERIOD_M5,1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
void my_alert(string symbol,int period,int shift)
  {
   double iclose= iClose(symbol,period,shift);
   double iopen = iOpen(symbol,period,shift);
   double ilow=iLow(symbol,period,shift);
   double ihigh=iHigh(symbol,period,shift);

   if(iclose>iopen && iopen==ilow && ihigh>iclose)
      Alert(symbol," ",PeriodToStr(period)," BUY");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string PeriodToStr(int period)
  {
   switch(period)
     {
      case 1:     return("M1");
      case 5:     return("M5");
      case 15:    return("M15");
      case 30:    return("M30");
      case 60:    return("H1");
      case 240:   return("H4");
      case 1440:  return("D1");
      case 10080: return("W1");
      case 43200: return("MN1");
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar(string symbol,int period,datetime &lastbar)
  {
   datetime curbar=iTime(symbol,period,0);
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return(true);
     }
   else return(false);
  }
//+------------------------------------------------------------------+
Причина обращения: