здравствуйте, помоги прикрепить алерт для MFi mql5. Как сделать так, чтоб срабатывало звуковое уведомление при пояление разворотного сигнала?
- ПОМОГИТЕ !!!! переделать индиктор с MT4 под MT5.(бесплатно)
- [Архив!] Напишу любого эксперта или индикатор бесплатно.
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
Andrey:
здравствуйте, помоги прикрепить алерт для MFi mql5. Как сделать так, чтоб срабатывало звуковое уведомление при пояление разворотного сигнала?
Так как от Вас нет даже намека на старания (Вы не показали, что именно Вы уже пытались делать), то "Помогите" - это равносильно "сделайте за меня". Поэтому так: покажите в коде то место, где появляется разворотный сигнал.
здравствуйте, помоги прикрепить алерт для 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);
}
{
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, а Вы так сразу про огород)
Зачем изначально городить огород с "4" на "5", если есть индикатор Market Facilitation Index (BW MFI)?
Финам больше не поддерживает работу с 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");
}
}
//---- 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). После этого будут видны все структурные ошибки.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь