Трейдинг: Звуковые сигналы в индикаторах - страница 4

 
anrei2002:

Доброго времени суток! Очень пригодилась Ваша статья о создании алертов,тем более,что я полный профан в этом,но пытаюсь разобраться! БОЛЬШОЕ Вам за это СПАСИБО!!!

Но у меня вопрос! Как будет выглядеть формула для уровней с отрицательным значением? То-есть,если будет не 30,а (-30) и не 70,а (-70). Нужны-ли дополнительные скобки или еще,что нибудь??? Заранее благодарен!!!

Все правильно, можно написать (-30).

А можно еще проще:

 if(PrevSignal <= 0)
      {
        if ( MainBuffer[SIGNAL_BAR] > -30.0 && MainBuffer[SIGNAL_BAR+1] <= -30.0 )
          {
            PrevSignal = 1;
            Alert("sStochastic (", Symbol(), ", ", Period(), ")  -  BUY!!!");
          }
      }
    if(PrevSignal >= 0)
      {
        if( MainBuffer[SIGNAL_BAR] < -70.0 && MainBuffer[SIGNAL_BAR+1] >= -70.0 )
          {
            PrevSignal = -1;
            Alert("sStochastic (", Symbol(), ", ", Period(), ")  -  SELL!!!");
          }
      }
 

Здравствуйте! По вашей статье,я смог установить алерты как при пересечении линий,так и при пересечении уровней.За что Вам огромное спасибо!Но у меня такой вопрос,а как установить в один индикатор два таких блока алертов? Я имею в виду,если необходимо что бы сигнал был и при пересечении линий друг с другом,и при пересечение уровней в одном индикаторе? Чем их разделить,что бы индикатор отзывался на оба события? Заранее спасибо!

 
Andrey Khatimlianskii:

Проигрывать звук не функцией PlaySound, а через какую-нибудь внешнюю программу или ф-цию, вызывая ее из кода.

Больше ничего в голову не приходит.

Вместо PlaySound() можно воспользоваться функцией Beep(), вызываемой через API. Реализовать это можно, например, так:

#import "Kernel32.dll"
   bool Beep(int A, int B);//Частота и длительность звука
#import
void Мелодия()
{
Beep(2200,170);
Beep(2000,170);
Beep(1250,170);
Beep(0,200);
Beep(1500,200);
Beep(0,200);
Beep(2000,330);
Beep(0,200);
}
 

Здравствуйте! По вашей статье,я смог установить алерты как при пересечении линий,так и при пересечении уровней.За что Вам огромное спасибо!Но у меня такой вопрос,а как установить в один индикатор два таких блока алертов? Я имею в виду,если необходимо что бы сигнал был и при пересечении линий друг с другом,и при пересечение уровней в одном индикаторе? Чем их разделить,что бы индикатор отзывался на оба события?А,точнее объединить!!! Заранее спасибо!

 if(PrevSignal <= 0)
      {
        if ( MainBuffer[SIGNAL_BAR] > -30.0 && MainBuffer[SIGNAL_BAR+1] <= -30.0 )
          {
            PrevSignal = 1;
            Alert(" (", Symbol(), ", ", Period(), ")  -  BUY!!!");
          }
      }
    if(PrevSignal >= 0)
      {
        if( MainBuffer[SIGNAL_BAR] < -70.0 && MainBuffer[SIGNAL_BAR+1] >= -70.0 )
          {
            PrevSignal = -1;
            Alert(" (", Symbol(), ", ", Period(), ")  -  SELL!!!");
          }
      }
if(PrevSignal <= 0)
      {
        if(MainBuffer[SIGNAL_BAR] - SignalBuffer[SIGNAL_BAR] > 0 && 
           SignalBuffer[SIGNAL_BAR+1] - MainBuffer[SIGNAL_BAR+1] >= 0)
          {
            PrevSignal = 1;
            Alert(" (", Symbol(), ", ", Period(), ")  -  BUY!!!");
          }
      }
if(PrevSignal >= 0)
      {
        if(SignalBuffer[SIGNAL_BAR] - MainBuffer[SIGNAL_BAR] > 0 && 
           MainBuffer[SIGNAL_BAR+1] - SignalBuffer[SIGNAL_BAR+1] >= 0)
          {
            PrevSignal = -1;
            Alert(" (", Symbol(), ", ", Period(), ")  -  SELL!!!");
          }
      }
 
anrei2002:

Здравствуйте! По вашей статье,я смог установить алерты как при пересечении линий,так и при пересечении уровней.За что Вам огромное спасибо!Но у меня такой вопрос,а как установить в один индикатор два таких блока алертов? Я имею в виду,если необходимо что бы сигнал был и при пересечении линий друг с другом,и при пересечение уровней в одном индикаторе? Чем их разделить,что бы индикатор отзывался на оба события?А,точнее объединить!!! Заранее спасибо!

Вариант "в лоб": создайте копию всех вспомогательных переменных и дайте им другие имена. Например, PrevSignal_1 и PrevSignal_2.

Это если сигналы должны быть независимыми друг от друга.

 

Спасибо большое! Все получилось!!!

 

Отличная работа, все получилось. Но есть одно упущение: нет возможности отключить алерт (кнопку true-false пробовал сам приделать но не получается). Помогите пожалуйста.

 
krab73:

Отличная работа, все получилось. Но есть одно упущение: нет возможности отключить алерт (кнопку true-false пробовал сам приделать но не получается). Помогите пожалуйста.

Возле параметров индикатора:

input AllowAlert = true; // Allow alert


А весь сигнальный блок обернуть в такое условие:

if ( AllowAlert )
{
 if(PrevSignal <= 0)
      {
        if ( MainBuffer[SIGNAL_BAR] > -30.0 && MainBuffer[SIGNAL_BAR+1] <= -30.0 )
          {
            PrevSignal = 1;
            Alert("sStochastic (", Symbol(), ", ", Period(), ")  -  BUY!!!");
          }
      }
    if(PrevSignal >= 0)
      {
        if( MainBuffer[SIGNAL_BAR] < -70.0 && MainBuffer[SIGNAL_BAR+1] >= -70.0 )
          {
            PrevSignal = -1;
            Alert("sStochastic (", Symbol(), ", ", Period(), ")  -  SELL!!!");
          }
      }
}
 

огромное СПАСИБО ВАМ за поправку. Но все же есть ошибка: вместо          input AllowAlert = true; // Allow alert

нужно вставить                                                                                              input bool AllowAlert = true; // Allow alert

Теперь алерт индикатора можно включить и выключить при необходимости.

 

добрый день ребята, у меня вопрос: можно ли поставить алерт так чтобы по пересечению уровни поддержки и сопротивлении оповещал текстовым образом по какой валютной паре это происходит, а то у меня price alert индикатор оповещает правильном образом но в тексте написано только price above the alert level и все... не понятно по какой паре пришел алерт и начинаешь искать среди 15 валютных пар и упускаешь хороши момент

Причина обращения: