Помогите разобраться с функцией PlaySound MQL5 не работает, щелкает и всё.

 

Написал Стохастик со звуковым сигналом , на

пересечение K% и D

не работает, щелкает и всё ,в чем ошибка.

Подскажите

пожалуйста.

//--- indicator settings
#property indicator_separate_window

#property indicator_buffers 5
#property indicator_plots   2

#property indicator_type1   DRAW_LINE
#property indicator_width1  1
#property indicator_color1  clrDodgerBlue

#property indicator_type2   DRAW_LINE
#property indicator_width2  1
#property indicator_color2  clrRed
 
//--- input parameters

input int Period=8;  //period

//--- indicator buffers

double    ST[];
double    ST_HighesBuffer[];
double    ST_LowesBuffer[];
double    EMA_1[];
double    EMA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping

   SetIndexBuffer(0,EMA_1,INDICATOR_DATA);
   SetIndexBuffer(1,EMA_2,INDICATOR_DATA);
   SetIndexBuffer(2,ST,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,ST_HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,ST_LowesBuffer,INDICATOR_CALCULATIONS);
      
//--- set accuracy

   IndicatorSetInteger(INDICATOR_DIGITS,0);
    
//--- name for DataWindow and indicator subwindow label

   IndicatorSetString(INDICATOR_SHORTNAME,"St");
   
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Stochastic Oscillator                                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,k,start;
   
   double SmoothFactor=2.0/(1.0+Period);
      
//--- check for bars count
   if(rates_total<=Period+2)
      return(0);
//---
   start=Period-1;
   if(start+1<prev_calculated)
      start=prev_calculated-2;
   else
     {
      for(i=0; i<start; i++)
        {
         ST_LowesBuffer[i]=0.0;
         ST_HighesBuffer[i]=0.0;
         EMA_1[i]=0.0;
         EMA_2[i]=0.0;
        }
     }
//--- calculate HighesBuffer[] and ExtHighesBuffer[]

   for(i=start; i<rates_total && !IsStopped(); i++)
     {
      double ST_dmin=1000000.0;
      double ST_dmax=-1000000.0;
      
      for(k=i-Period+1; k<=i; k++)
        {
         if(ST_dmin>close[k])
            ST_dmin=close[k];
         if(ST_dmax<close[k])
            ST_dmax=close[k];
        }
      ST_LowesBuffer[i]=ST_dmin;
      ST_HighesBuffer[i]=ST_dmax;
     }
//--- ST
   start=Period-1;
   if(start+1<prev_calculated)
      start=prev_calculated-2;
   else
     {
      for(i=0; i<start; i++)
         ST[i]=0.0;
         EMA_1[i]=0.0;
         EMA_2[i]=0.0;
     }
//--- main cycle
   for(i=start; i<rates_total && !IsStopped(); i++)
     {
      double ST_sum_low=0.0;
      double ST_sum_high=0.0;
            
      for(k=i; k<=i; k++)
        {
         ST_sum_low=(close[i]-ST_LowesBuffer[i]);
         ST_sum_high=(ST_HighesBuffer[i]-ST_LowesBuffer[i]);
        }
      if(ST_sum_high==0.0)
         ST[i]=100.0;
      else
         ST[i]=ST_sum_low/ST_sum_high*100;
         
         EMA_1[i]=ST[i]*SmoothFactor+EMA_1[i-1]*(1.0-SmoothFactor);
         EMA_2[i]=EMA_1[i]*SmoothFactor+EMA_2[i-1]*(1.0-SmoothFactor);
     }
/////////////////////////////////////////////////////////////////////////////////////
     
           if(EMA_1[i]- EMA_2[i]>0 && EMA_1[i-1]- EMA_2[i-1]<=0  )
           {
           PlaySound("Alert");
           }
//----
          if(EMA_1[i]- EMA_2[i]<0 && EMA_1[i-1]- EMA_2[i-1]>=0  )
          {
          PlaySound("Alert2");
          }

//--- OnCalculate done. Return new prev_calculated.

   return(rates_total);
  }
 
Konstantine:

Написал Стохастик со звуковым сигналом , на

пересечение K% и D

не работает, в чем ошибка.

Подскажите

пожалуйста.

PlaySound

Воспроизводит звуковой файл.

bool  PlaySound(
   string  filename      // имя файла
   );

Параметры

filename

[in]  Путь к звуковому файлу. Если filename=NULL, воспроизведение звука прекращается.

Возвращаемое значение

true – если звуковой файл найден, иначе возвращает false.

Примечание

Файл должен быть расположен в каталоге каталог_терминала\Sounds или его подкаталоге. Проигрываются только звуковые файлы в формате WAV.

Вызов PlaySound() с параметром NULL останавливает воспроизведение звука.

При работе в тестере стратегий функция PlaySound() не выполняется.

__________________________________________________________________

С уважением, Владимир.

 
MrBrooklin #:

PlaySound

Воспроизводит звуковой файл.

bool  PlaySound(
   string  filename      // имя файла
   );

Параметры

filename

[in]  Путь к звуковому файлу. Если filename=NULL, воспроизведение звука прекращается.

Возвращаемое значение

true – если звуковой файл найден, иначе возвращает false.

Примечание

Файл должен быть расположен в каталоге каталог_терминала\Sounds или его подкаталоге. Проигрываются только звуковые файлы в формате WAV.

Вызов PlaySound() с параметром NULL останавливает воспроизведение звука.

При работе в тестере стратегий функция PlaySound() не выполняется.

__________________________________________________________________

С уважением, Владимир.

Всё так и есть всё в каталоге и не работает,не могу понять все прочитал сделал как в инструкции, спасибо.
 
Konstantine #:
Всё так и есть всё в каталоге и не работает,не могу понять все прочитал сделал как в инструкции, спасибо.

Значит проблема в этих строках:

if(EMA_1[i]- EMA_2[i]>0 && EMA_1[i-1]- EMA_2[i-1]<=0  )
if(EMA_1[i]- EMA_2[i]<0 && EMA_1[i-1]- EMA_2[i-1]>=0  )

С уважением, Владимир.

 
Konstantine #:
Всё так и есть всё в каталоге и не работает,не могу понять все прочитал сделал как в инструкции, спасибо.

рядом с PlaySound поместите Print("сейчас раздастся бздынь"); много станет понятно

ЗЫ. у вас на каждым тике и подгрузке истории звук проигрывается..ну то есть пытается

 
Konstantine #:
Всё так и есть всё в каталоге и не работает,не могу понять все прочитал сделал как в инструкции, спасибо.

у Вас колонки USB ?

у меня например USB,

причем через удлинитель USB-шек 5 штук

тоже щелкает

попробуйте колонки воткнуть в разъем USB, который "сидит" на материнской плате

 
Maxim Kuznetsov #:

рядом с PlaySound поместите Print("сейчас раздастся бздынь"); много станет понятно

ЗЫ. у вас на каждым тике и подгрузке истории звук проигрывается..ну то есть пытаетсяда

да на каждом тике и пытается , а если прописать Alert() то сообщения на каждом тике.

С уважением,Константин.

 
Renat Akhtyamov #:

у Вас колонки USB ?

у меня например USB,

причем через удлинитель USB-шек 5 штук

тоже щелкает

попробуйте колонки воткнуть в разъем USB, который "сидит" на материнской плате

нет штатный разьём аудио.
 
Konstantine #:

да на каждом тике и пытается , а если прописать Alert() то сообщения на каждом тике.

С уважением,Константин.

В справочнике нет ни чего,пишите так и всё,думаю одного  PlaySound() не достаточно ,а как надо не пишут.
PlaySound("Alert");
PlaySound("Alert");
 
Konstantine #:
нет штатный разьём аудио.
if(EMA_1[i]- EMA_2[i]>0 && EMA_1[i-1]- EMA_2[i-1]<=0  )

Дело не в разъёмах и не в колонках. Если убрать код выделенный жёлтым цветом, то звук воспроизводится на каждом тике.

С уважением, Владимир.

 
Konstantine #:

да на каждом тике и пытается , а если прописать Alert() то сообщения на каждом тике.

С уважением,Константин.

Сам стохастик прописан правильно всё работает,условия тоже,думаю что как то по другому это должно встраиваться в код стохастика,только как узнать негде.
Причина обращения: