Скачать MetaTrader 5

Price Alert для FORCE INDEX - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
DmitriyN
2316
DmitriyN  
papaden:
Если значения индикатора лежат в диапазоне между MyLowIF1 и MyHighIF1, т.е. между 0.49 включительно и 0.51 включительно, то должна выполниться процедура SendMail.
papaden
324
papaden  
ясно.... от всей души спасибо - завтра попробую
papaden
324
papaden  

((( ПИСЬМА НЕ ПРИХОДЯТ....

тестовое письмо из терминала приходит, а индикатор письма не шлет (((

в журнале пишет

2012.09.17 09:07:27 Custom indicator PriceAlert2 EURUSD,M5: loaded successfully (с восклицательным знаком) :(

papaden
324
papaden  

)))) теперь приходят!!!

СПАСИБО!!!!!!!!!!!!!!!!

papaden
324
papaden  
//+------------------------------------------------------------------+
//|                                                   PriceAlert.mq4 |
//|                              Copyright © 2009, www.earnforex.com |
//|           Issues sound alerts when price reaches certain levels. |
//+------------------------------------------------------------------+
#property copyright "EarnForex.com"
#property link      "http://www.earnforex.com"

#property indicator_chart_window

extern double SoundWhenPriceGoesAbove = 0;
extern double SoundWhenPriceGoesBelow = 0;
extern double SoundWhenPriceIsExactly = 0;
extern bool SendEmail = true; //If true e-mail is sent to the e-mail address set in your MT4. E-mail SMTP Server settings should also be configured in your MT4

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() 
{
   if (SoundWhenPriceIsExactly > 0)
   {
      ObjectCreate("SoundWhenPriceIsExactly", OBJ_HLINE, 0, Time[0], SoundWhenPriceIsExactly);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_COLOR, Yellow);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_WIDTH, 1);
   }
   if (SoundWhenPriceGoesAbove > 0)
   {
      ObjectCreate("SoundWhenPriceGoesAbove", OBJ_HLINE, 0, Time[0], SoundWhenPriceGoesAbove);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_COLOR, LightGreen);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_WIDTH, 1);
   }
   if (SoundWhenPriceGoesBelow > 0)
   {
      ObjectCreate("SoundWhenPriceGoesBelow", OBJ_HLINE, 0, Time[0], SoundWhenPriceGoesBelow);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_COLOR, LightCoral);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_WIDTH, 1);
   }
   return(0);
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectDelete("SoundWhenPriceIsExactly");
   ObjectDelete("SoundWhenPriceGoesAbove");
   ObjectDelete("SoundWhenPriceGoesBelow");
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if ((iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) > SoundWhenPriceGoesAbove) && (SoundWhenPriceGoesAbove > 0))
   {
      Alert("FI достиг уровня");
      PlaySound("alert.wav");
      SendMail("Индекс силы по " + Symbol() +  " достиг уровня " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0), "Индекс силы по  " + Symbol() +  " reached " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) + " достиг уровня " + SoundWhenPriceGoesAbove);
      ObjectDelete("SoundWhenPriceGoesAbove");
      SoundWhenPriceGoesAbove = 0;
   }
   if ((iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) < SoundWhenPriceGoesBelow) && (SoundWhenPriceGoesBelow > 0))
   {
      Alert("FI достиг уровня");
      PlaySound("alert.wav");
      SendMail("Индекс силы по " + Symbol() +  " достиг уровня " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0), "Индекс силы по " + Symbol() +  " reached " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) + " достиг уровня " + SoundWhenPriceGoesBelow);
      ObjectDelete("SoundWhenPriceGoesBelow");
      SoundWhenPriceGoesBelow = 0;
   }
   if ((iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) == SoundWhenPriceIsExactly) || (iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) == SoundWhenPriceIsExactly))
   {
      Alert("FI достиг уровня");
      PlaySound("alert.wav");
      SendMail("Индекс силы по  " + Symbol() +  " достиг уровня " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0), "Индекс силы по " + Symbol() +  " reached " + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) + "/" + iForce(NULL, 0, 12, MODE_EMA, PRICE_CLOSE, 0) + " достиг уровня " + SoundWhenPriceIsExactly);
      ObjectDelete("SoundWhenPriceIsExactly");
      SoundWhenPriceIsExactly = 0;
   }
}
//+------------------------------------------------------------------+

вот это тоже код отправляет письма....но ТОЖЕ не всегда.... странно ..... если скажем ТЕКУЩИЙ уровень FI = 0.012, а я ставлю срабатывание на уровне 0.01 - то срабатывание РАБОТАЕТ :) ... а если начинается уровень с 0.00 и растет к 0.12, то оно его ПРОСТО проходит не информируя меня...

странно...

papaden
324
papaden  
не знаю может бред скажу... может быть сменить price_close на цену_текущею - если есть такая ... (?
DmitriyN
2316
DmitriyN  
papaden:

вот это тоже код отправляет письма....но ТОЖЕ не всегда.... странно ..... если скажем ТЕКУЩИЙ уровень FI = 0.012, а я ставлю срабатывание на уровне 0.01 - то срабатывание РАБОТАЕТ :) ... а если начинается уровень с 0.00 и растет к 0.12, то оно его ПРОСТО проходит не информируя меня...

странно...

Отсутствие срабатывания по индикатору часто бывает и причин может быть несколько (их нужно учитывать).

Могла, например, пропасть связь с терминалом. Мог образоваться геп. Кроме того, если вы видите, что на графике индикатор пересёк какой-то уровень, то это совсем не означает, что значения этого уровня дошли до сравнения: ведь индикатор считается побарно, а у вас период усреднения не такой уж и большой - 13.

===

Например, чтобы понятнее было. Есть у вас простая МА с периодом 5. Она считает среднее от значений 1,2,3,4,5. Среднее получается = 3,0. Далее появляется новый бар, у которого значение уже будет равно 6 по окончанию его формирования. А среднее будет = 4,0 по окончанию формирования этого бара и (2+3+4+5+5)/5=3,8 по началу его формирования. Спрашивается, а что было между 3,0 и 3,8? Этот диапазон для сравнения не поступил, хотя на графике прямая этого диапазона отрисуется.

Вот такой разводняк получается с индикаторами. Потом, возникают вопросы, типа, почему позиция не открылась, или почему она не закрылась вовремя. Эта одна из сотен мин, на которую наступают почти все.

papaden
324
papaden  

понял... спасибо...

papaden
324
papaden  
А как сделать в коде, что бы он 1 письмо присылал? это возможно? Сейчас при срабатывании идет засыпание письмами ))
papaden
324
papaden  

DmitriyN - спасибо тебе!

Вопрос закрыт - индикатор настроен....

От души!

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