Добрый вечер, ребят, нужна помощь в воспроизведении звука, мне необходимо чтоб если условие исполнялось звук играл раз в 5 секунд, как это реализовать?
- Через таймер
- Через счётчик и статическую переменную datetime.
Вот пример: если есть условие, то НЕ ЧАЩЕ ЧЕМ РАЗ В ПЯТЬ СЕКУНД будет звук:
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//--- input parameter
input string file_name="alert.wav";
//---
bool plaed=false;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer (every 10 seconds)
EventSetTimer(5);
//---
plaed=false;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- здесь своё условие, для примера поставлю приметивное условие
if(3==3)
if(!plaed)
{
PlaySound("alert.wav");
plaed=true;
}
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
plaed=false;
}
//+------------------------------------------------------------------+
Вот пример: если есть условие, то НЕ ЧАЩЕ ЧЕМ РАЗ В ПЯТЬ СЕКУНД будет звук:
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//--- input parameter
input string file_name="alert.wav";
//---
bool plaed=false;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer (every 10 seconds)
EventSetTimer(5);
//---
plaed=false;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- здесь своё условие, для примера поставлю приметивное условие
if(3==3)
if(!plaed)
{
PlaySound("alert.wav");
plaed=true;
}
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
plaed=false;
}
//+------------------------------------------------------------------+
если честно то я не свсем понял, можете объяснить написанное?
Сначала Мы выставили таймер на пять секунд:
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer (every 10 seconds)
EventSetTimer(5);
это означает, что раз в пять секунд будет генерироваться событие OnTimer() - то есть Мы раз в пять секунд будет попадать в OnTimer().
Что делает таймер? Он флагу plaed присваивает значение false:
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
plaed=false;
}
Что это даёт? На каждом тике Мы попадаем сюда и проверяем наше условие:
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- здесь своё условие, для примера поставлю приметивное условие
if(3==3)
if(!plaed)
{
PlaySound("alert.wav");
plaed=true;
}
}
если это условие истинно, то дальше проверяем флаг plaed: если plaed==false, то будет проиграна музыка и флаг plaed станет true.
На следующем тике Мы снова попадаем в OnTick(), снова условие истинно, но флаг plaed==true - в итоге условие истинно, но музыка не зазвучит.
Сначала Мы выставили таймер на пять секунд:
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer (every 10 seconds)
EventSetTimer(5);
это означает, что раз в пять секунд будет генерироваться событие OnTimer() - то есть Мы раз в пять секунд будет попадать в OnTimer().
Что делает таймер? Он флагу plaed присваивает значение false:
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
plaed=false;
}
Что это даёт? На каждом тике Мы попадаем сюда и проверяем наше условие:
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- здесь своё условие, для примера поставлю приметивное условие
if(3==3)
if(!plaed)
{
PlaySound("alert.wav");
plaed=true;
}
}
если это условие истинно, то дальше проверяем флаг plaed: если plaed==false, то будет проиграна музыка и флаг plaed станет true.
На следующем тике Мы снова попадаем в OnTick(), снова условие истинно, но флаг plaed==true - в итоге условие истинно, но музыка не зазвучит.
дело в том что у меня нет onTick() и когда пытаюсь написать его он отображается обычным черным текстом, естественно пишу перед ним воид. Я пишу индикатор на мт4
дело в том что у меня нет onTick() и когда пытаюсь написать его он отображается обычным черным текстом, естественно пишу перед ним воид. Я пишу индикатор на мт4
int OnInit() {
DelayAlert=TimeLocal()+5;
return(INIT_SUCCEEDED);
}
void OnTick() {
// Delay Alert
if(DelayAlert<TimeLocal()) {
PlaySound("alert.wav");
DelayAlert=TimeLocal()+5;
}
//-
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый вечер, ребят, нужна помощь в воспроизведении звука, мне необходимо чтоб если условие исполнялось звук играл раз в 5 секунд, как это реализовать?