Звуковой алерт для BW MFI
- ПОМОГИТЕ !!!! переделать индиктор с MT4 под MT5.(бесплатно)
- [Архив!] Напишу любого эксперта или индикатор бесплатно.
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
здравствуйте, помоги прикрепить алерт для MFi mql5. Как сделать так, чтоб срабатывало звуковое уведомление при пояление разворотного сигнала?
Просто я даже не знаю с чего начать. Вот версия того, что я задумал в mql4(но нужно такое в mql5):
//---- Signal Alert
#define SIGNAL_BAR 1
{
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)?
Кто-нибудь подскажет в каком направление идти хотяб? Я не прошу сделать всё за меня
Кто-нибудь подскажет в каком направление идти хотяб? Я не прошу сделать всё за меня
Конечно подскажем.
Так можно вызвать алерт, обращайтесь если что.
Ну я определился куда код вставлять
//---- 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"