Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Заведи торговый сигнал. Зарабатывай на платной подписке!
Aybulat
38
Aybulat 2011.03.15 12:55 

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

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

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

Виктор
Модератор
6560
Виктор 2011.03.15 14:51  
Не хотите сами попробовать написать по образцу из статьи?
Aybulat
38
Aybulat 2011.03.15 15:07  
Где находится файл индикатора force? В списке индикаторов в редакторе только пользовательские индикаторы.
Виктор
Модератор
6560
Виктор 2011.03.15 15:37  
Aybulat
38
Aybulat 2011.03.16 07:42  

Не пойму. Написал только на продажу. Применил индикатор к 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 2011.03.16 13:46  
да. интересно было бы посмотреть как добиться одноразового сигнала...
Виктор
Модератор
6560
Виктор 2011.03.16 14:13  
_Aybulat_:

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

Ещё вопрос. Как в сплывающем окне удалить предыдущие сигналы перед выводом нового, чтобы была только одна строка?
На первый взгляд все нормально. При SIGNAL_BAR>0 должен быть один сигнал, при SIGNAL_BAR==0 будут множественные сигналы, поскольку на нулевом баре событие может повторяться неоднократно.
Я пользуюсь только PlaySound(SoundName), однократный сигнал получается. Есть и другие варианты кода, тоже работают.
По алерту ничего сказать не могу, видимо, очистить его не удастся.
IgorM М
4801
IgorM М 2011.03.16 19:58  
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
38
Aybulat 2011.03.17 14:40  
IgorM:

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

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



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


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

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

заменил 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

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

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