MQL4 - automated forex trading   /  

Форум

Опять массивы и циклы. Нужна помощь!

К списку тем  | 1 2 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
56
Inter 09.02.2010 15:16 

Простой вопрос:

Например: Каждые пять минут, нужно выдавать аудио сообщение3 раза. Каждые пять минут это когда Minute() == {0 или 5 или 10 или 15 или 20 или 25 или 30 и тд....}

Зараннее всем благодарен!

article

Материалы Automated Trading Championship: Интервью с Участниками 2007 года

В публикуемых интервью Чемпионата 2007 года уже чувствуется влияние результатов предыдущего соревнования. Первый Чемпионат получил широкий резонанс не только на страницах интернета, но и в оффлайновых печатных изданиях. Ведущий разработчик компании MetaQuotes Software Corp. рассказывает о нововведениях предстоящего Чемпионата Automated Trading Championship 2007. Мы обратились с вопросами к разработчику известного индикаторного комплекса ZUP Евгению Неумоину (nen), пообщались с трейдером фонда Александром Позднышевым (AlexSilver).


avatar
4643
Vinin 09.02.2010 15:28 
Inter писал(а) >>

Простой вопрос:

Например: Каждые пять минут, нужно выдавать аудио сообщение3 раза. Каждые пять минут это когда Minute() == {0 или 5 или 10 или 15 или 20 или 25 или 30 и тд....}

Зараннее всем благодарен!

bool NevBar(){
  static int PrevTime=0;
  if (PrevTime==iTime(Symbol(),PERIOD_M5,0)) return(false);
  PrevTime=iTime(Symbol(),PERIOD_M5,0);
  return(true);
}

int start(){
  if (NevBar()) {Alert("И зачем это надо"), Alert("И зачем это надо"), Alert("И зачем это надо");}

// Прочий код

  return(0);
}
Можно так сделать

avatar
877
Talex 09.02.2010 16:03 

Или так

if(MathMod(Minute(),5)==0) {
   PlaySound("alert.wav");
   PlaySound("alert.wav");
   PlaySound("alert.wav");
}

avatar
4643
Vinin 09.02.2010 16:14 
Talex писал(а) >>

Или так

С PlaySound() так не получится. Надо ждать когда предыдущий сигнал закончит свою работу (в смысле звуковой)


avatar
270
Techno 09.02.2010 16:16 
Vinin, по идее получится, если после каждой playspund использовать Sleep() с параметром равным протяженности музыки

avatar
4643
Vinin 09.02.2010 16:31 
Techno писал(а) >>
Vinin, по идее получится, если после каждой playspund использовать Sleep() с параметром равным протяженности музыки

Надо использовать флаги. Sleep() использовать нельзя. Советник или индикатор должен дальше работать.

Первый раз запускать на каждой пятиминутке, второй раз по истечении заданного времени, третий раз опять так же. Но советник должен работать.


avatar
270
Techno 09.02.2010 16:38 
Vinin писал(а) >>

Надо использовать флаги. Sleep() использовать нельзя. Советник или индикатор должен дальше работать.

Первый раз запускать на каждой пятиминутке, второй раз по истечении заданного времени, третий раз опять так же. Но советник должен работать.

конечно должен работать, но единственный выход выполнить пожелание автора темы это использовать Sleep, а так эта функция вообще не нужна


avatar
143
SofTAA 09.02.2010 17:16 
Techno писал(а) >>

конечно должен работать, но единственный выход выполнить пожелание автора темы это использовать Sleep, а так эта функция вообще не нужна


Вы неправильно поняли Vininа он как раз и говорил как можно без слипа обойтись. 

avatar
270
Techno 09.02.2010 17:43 
SofTAA писал(а) >>

Вы неправильно поняли Vininа он как раз и говорил как можно без слипа обойтись.

ну и как же обойтись? Задача проиграть подряд 3 звуковых файла, причем полностью, давай, слушаю варианты... (в виде кода)


avatar
143
SofTAA 09.02.2010 19:00 
Techno писал(а) >>

ну и как же обойтись? Задача проиграть подряд 3 звуковых файла, причем полностью, давай, слушаю варианты... (в виде кода)


Не понимаю, что в этом сложного. Держи код который не блокирует советник. 
datetime StartPlay;
int length = 1; //длина трека в секундах 

int start()
{ 
  if(TimeCurrent() - StartPlay > length)
  {
    PlaySound("alert.wav");
    StartPlay = TimeCurrent()
  }  
  return(0);
}

avatar
270
Techno 10.02.2010 03:52 
SofTAA писал(а) >>

Не понимаю, что в этом сложного. Держи код который не блокирует советник.

оо, отлично, да вот только неувязочка, нужно проиграть 3 подряд, сразу. А в данном случае если между тиками будет интервал в 10 секунд, то после поигрывания первого раза будет перерыв в 10 секунд

К списку тем   | 1 2  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий