Звуковой алерт для BW MFI

 
здравствуйте, помоги прикрепить алерт для MFi mql5. Как сделать так, чтоб срабатывало звуковое уведомление при пояление разворотного сигнала?
 
Andrey:
здравствуйте, помоги прикрепить алерт для MFi mql5. Как сделать так, чтоб срабатывало звуковое уведомление при пояление разворотного сигнала?
Так как от Вас нет даже намека на старания (Вы не показали, что именно Вы уже пытались делать), то "Помогите" - это равносильно "сделайте за меня". Поэтому так: покажите в коде то место, где появляется разворотный сигнал.
 

Просто я даже не знаю с чего начать. Вот версия того, что я задумал в mql4(но нужно такое в mql5):

//---- Signal Alert

#define SIGNAL_BAR 1 

   for(i=nLimit-1; i>=0; i--)
     {
      if(i<Bars-1)
        {
         if(ExtMFIBuffer[i]>ExtMFIBuffer[i+1]) bMfiUp=true;
         if(ExtMFIBuffer[i]<ExtMFIBuffer[i+1]) bMfiUp=false;
         if(Volume[i]>Volume[i+1])             bVolUp=true;
         if(Volume[i]<Volume[i+1])             bVolUp=false;
        }
     if(bMfiUp && bVolUp)
       {
        ExtMFIUpVUpBuffer[i]=ExtMFIBuffer[i];
        ExtMFIDownVDownBuffer[i]=0.0;
        ExtMFIUpVDownBuffer[i]=0.0;
        ExtMFIDownVUpBuffer[i]=0.0;
        continue;
       }
     if(!bMfiUp && !bVolUp)
       {
        ExtMFIUpVUpBuffer[i]=0.0;
        ExtMFIDownVDownBuffer[i]=ExtMFIBuffer[i];
        ExtMFIUpVDownBuffer[i]=0.0;
        ExtMFIDownVUpBuffer[i]=0.0;
        continue;        
       }
     if(bMfiUp && !bVolUp)
       {
        ExtMFIUpVUpBuffer[i]=0.0;
        ExtMFIDownVDownBuffer[i]=0.0;
        ExtMFIUpVDownBuffer[i]=ExtMFIBuffer[i];
        ExtMFIDownVUpBuffer[i]=0.0;
        continue;        
       }
     if(!bMfiUp && bVolUp)
       {
        ExtMFIUpVUpBuffer[i]=0.0;
        ExtMFIDownVDownBuffer[i]=0.0;
        ExtMFIUpVDownBuffer[i]=0.0;
        ExtMFIDownVUpBuffer[i]=ExtMFIBuffer[i];
        continue;        
       }        
    }
static int PrevSignal = 0, PrevTime = 0;
   if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )
   return(0);
   PrevTime = Time[0];
   if(PrevSignal >= 0)
     {
        if(ExtMFIDownVUpBuffer[SIGNAL_BAR] > 0)
          {
            PrevSignal = 1;
            if (SoundON) PlaySound ("alert.wav");
          }
      }            
//---- done
   return(0);
  }
 
Зачем изначально городить огород с "4" на "5", если есть индикатор Market Facilitation Index (BW MFI)?
 
Vladimir Karputov:
Зачем изначально городить огород с "4" на "5", если есть индикатор Market Facilitation Index (BW MFI)?
Скорее всего, девчонка нашла индикатор с алертом для мт4,  и теперь хочет перенести алерт в мql5, а Вы так сразу про огород)
 
Финам больше не поддерживает работу с mql4. А звуковой алерт я сделал сам. Но без понятия как его перенести на mql5, так как если в mql4 было хоть что-то понятно, то в mql5 я вообще тёмный лес.
 
Кто-нибудь подскажет в каком направление идти хотяб? Я не прошу сделать всё за меня 
 
Andrey:
Кто-нибудь подскажет в каком направление идти хотяб? Я не прошу сделать всё за меня 
Есть индикатор Market Facilitation Index (BW MFI) - вот его изучайте и найдите в нём Ваш сигнал. Как определитесь с местом в коде, где должен быть сигнал, вставить звук не составит труда.
 
Andrey:
Кто-нибудь подскажет в каком направление идти хотяб? Я не прошу сделать всё за меня 

Конечно подскажем.

Alert("покупай пока не поздно");


 Так можно вызвать алерт, обращайтесь если что.

 

Ну я определился куда код вставлять

extern bool SoundON=false;
//---- indicator buffers
//---- Signal Alert
#define SIGNAL_BAR 1
//-------------------------------------------------------
void CalculateMFI(const int start,const int rates_total,
                  const double &high[],
                  const double &low[],
                  const long &volume[])
  {
   int  i=start;
   bool mfi_up=true,vol_up=true;
//--- calculate first values of mfi_up and vol_up
   if(i>0)
     {
      int n=i;
      while(n>0)
        {
         if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true;  break; }
         if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=false; break; }
         //--- if mfi values are equal continue
         n--;
        }
      n=i;
      while(n>0)
        {
         if(volume[n]>volume[n-1]) { vol_up=true;  break; }
         if(volume[n]<volume[n-1]) { vol_up=false; break; }
         //--- if real volumes are equal continue
         n--;
        }
     }
//---
   while(i<rates_total && !IsStopped())
     {
      if(volume[i]==0)
        {
         if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];
         else    ExtMFIBuffer[i]=0;
        }
      else ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i];
      //--- calculate changes
      if(i>0)
        {
         if(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=true;
         if(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false;
         if(volume[i]>volume[i-1])             vol_up=true;
         if(volume[i]<volume[i-1])             vol_up=false;
        }
      //--- set colors
      if(mfi_up && vol_up)   ExtColorBuffer[i]=0.0;
      if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0;
      if(mfi_up && !vol_up)  ExtColorBuffer[i]=2.0;
      if(!mfi_up && vol_up)  ExtColorBuffer[i]=3.0;
      i++;
     }
  }
static int PrevSignal = 0, PrevTime = 0;
   if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )
   return(0);
   PrevTime = Time[0];
   if(PrevSignal >= 0)
     {
        if(!mfi_up && vol_up[SIGNAL_BAR] > 0)
          {
            PrevSignal = 1;
            if (SoundON) PlaySound ("alert.wav");
          }
      }        

Получаю ошибки:

'if' - expressions are not allowed on a global scope

'PrevTime' - declaration without type

'if' - expressions are not allowed on a global scope

Как бы не прописывал всё-равно prevtime всегда  "declaration without type"


 
Всегда применяйте Стилизатор (Стилизатор - Работа с исходным кодом - Разработка программ - MetaEditor). После этого будут видны все структурные ошибки.