Скачать MetaTrader 5

Звуковой сигнал для force index

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

Добрый вечер. У меня просьба - нужен звуковой сигнал на force index при пересечений уровня 0. В программировании не силён, поэтому прошу помочь кто сможет.

Force index со стандартными настройками: Метод МА - Exponential, по ценам Close, период - 13. Желательно, чтобы все параметры настраивались как у обычного force index.

Сигнал на пересечение как вверх так и вниз. Сигнал из стандартного набора звуков + сообщение с названием инструмента в окне которого произошло пересечение. Необходимо чтобы направление пересечения настраивалось, т.е. чтобы сигнал был только при пересечении наверх или только при пересечение вниз.

Виктор
Модератор
6559
Виктор  
Не хотите сами попробовать написать по образцу из статьи?
Aybulat
43
Aybulat  
Где находится файл индикатора force? В списке индикаторов в редакторе только пользовательские индикаторы.
Виктор
Модератор
6559
Виктор  
Aybulat
43
Aybulat  

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

... 

if(PrevSignal <= 0)
{
if(ExtForceBuffer[SIGNAL_BAR] < 0 &&
ExtForceBuffer[SIGNAL_BAR+1] > 0)
{
PrevSignal = 1;
//PlaySound("Alert.wav");
//Alert("sStochastic (", Symbol(), ", ", Period(), ") - BUY!!!");
}
}
if(PrevSignal >= 0)
{
if(ExtForceBuffer[SIGNAL_BAR] > 0 &&
ExtForceBuffer[SIGNAL_BAR+1] < 0)
{
PrevSignal = -1;
PlaySound("Alert.wav");
Alert("Forse Index (", Symbol(), ", ", Period(), ") - SELL!!!");
}
}

... 

 Ещё вопрос. Как в сплывающем окне удалить предыдущие сигналы перед выводом нового, чтобы была только одна строка?

atik
410
atik  
да. интересно было бы посмотреть как добиться одноразового сигнала...
Виктор
Модератор
6559
Виктор  
_Aybulat_:

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

Ещё вопрос. Как в сплывающем окне удалить предыдущие сигналы перед выводом нового, чтобы была только одна строка?
На первый взгляд все нормально. При SIGNAL_BAR>0 должен быть один сигнал, при SIGNAL_BAR==0 будут множественные сигналы, поскольку на нулевом баре событие может повторяться неоднократно.
Я пользуюсь только PlaySound(SoundName), однократный сигнал получается. Есть и другие варианты кода, тоже работают.
По алерту ничего сказать не могу, видимо, очистить его не удастся.
IgorM М
4801
IgorM М  
atik:
да. интересно было бы посмотреть как добиться одноразового сигнала...

наверно нуно так:

//+------------------------------------------------------------------+
//|                                                  Force Index.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int ExtForcePeriod=13;
extern int ExtForceMAMethod=0;
extern int ExtForceAppliedPrice=0;
//---- buffers
double ExtForceBuffer[];
bool firstrun=false;
double sign=0;
datetime newbartime=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   string sShortName;
   SetIndexBuffer(0,ExtForceBuffer);
   SetIndexStyle(0,DRAW_LINE);
   sShortName="Force("+ExtForcePeriod+")";
   IndicatorShortName(sShortName);
   SetIndexLabel(0,sShortName);
   SetIndexDrawBegin(0,ExtForcePeriod);
   firstrun=false;
   newbartime=Time[0];
   sign=0;
return(0);
}
//+------------------------------------------------------------------+
//| Force Index indicator                                            |
//+------------------------------------------------------------------+
int start(){
   int nLimit;
   int nCountedBars=IndicatorCounted();
   if(Bars<=ExtForcePeriod) return(0);
   if(nCountedBars>ExtForcePeriod) nCountedBars--;
   nLimit=Bars-nCountedBars;
   for(int i=0; i<nLimit; i++)
      ExtForceBuffer[i]=Volume[i]*
                        (iMA(NULL,0,ExtForcePeriod,0,ExtForceMAMethod,ExtForceAppliedPrice,i)-
                         iMA(NULL,0,ExtForcePeriod,0,ExtForceMAMethod,ExtForceAppliedPrice,i+1));
//если это не первый запуск расчетов тогда проверяем время открытия нулевого бара и если это новый бар
//проверим одинаковые ли знаки у предидущего запомненного значения индикатора и текущего
   if(firstrun){
         if (newbartime!=Time[0]){
               newbartime=Time[0];
               if((sign<0 && ExtForceBuffer[1]>0) || (sign>0 && ExtForceBuffer[1]<0)){
                     PlaySound("alert.wav");
                     sign=ExtForceBuffer[1];
               }
         }
//если это первый запуск расчетов тогда изменим firstrun и запомним время открытия нулевого бара и 
//посдеднее расчитанное значение индикатора
   }else{
         firstrun=true;
         newbartime=Time[0];
         sign=ExtForceBuffer[1];
   }
return(0);
}
//+------------------------------------------------------------------+

вот набросал на скорую руку, нужно проверить online, думаю все правильно

Aybulat
43
Aybulat  
IgorM:

наверно нуно так:

вот набросал на скорую руку, нужно проверить online, думаю все правильно



Компилирует без проблем, но во время работы выдаёт критическую ошибку.
IgorM М
4801
IgorM М  
_Aybulat_:


Компилирует без проблем, но во время работы выдаёт критическую ошибку.

у меня 229 билд, ошибок не было, вроде бы и сигнал как положено выдается, но нет времени понаблюдать
IgorM М
4801
IgorM М  

заменил PlaySound("alert.wav") на Print("alert.wav"), вот лог:

18:06:27 Force_Index_Sound USDJPY,M1: loaded successfully
18:06:27 Force_Index_Sound USDJPY,M1: initialized
18:07:03 Force_Index_Sound USDJPY,M1: alert.wav
18:18:03 Force_Index_Sound USDJPY,M1: alert.wav
18:25:03 Force_Index_Sound USDJPY,M1: alert.wav
18:39:03 Force_Index_Sound USDJPY,M1: alert.wav

наверно работает

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