Скачать MetaTrader 5

Профи не проходите мимо!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dmitri
27
Dmitri  
Помогите написать индикатор, который бы отправлял сообщения на мыло когда появится свеча, с телом больше 50 пунктов. Как вверх так и вниз! Я пробовал писать но у меня сообщения посылаются постоянно, как написать чтоб пришло только 1 сообщение после закрытия свечи? Помогите плз очень надо, для вас же это ерунда!
Владимир Тезис
4266
Владимир Тезис  
Значит у Вас уже есть готовый код! Его нужно только чуть-чуть изменить. Что происходит в Вашем случае? На нулевой свече советник проверяет величину тела первой свечи. Обнаруживает, что она 50 и более пунктов и отправляет сообщение на мыло. На следующем тике всё повторяется. Вам нужно делать всё через флаг, разрешающий/запрещающий отсылку сообщения. Например, ранее нужной свечки небыло - флаг разрешает отсылать сообщение, но поскольку тела нет - сообщение не уходит. Далее, появилось нужное тело. Флаг разрешает отослать сообщение. Отсылаем его и снимаем флаг. На следующем тике советник обнаруживает, что тело есть, а флаг запрещает отсылку сообщения. В результате ни чего более не отсылается. Прошло время и возникла новая свеча. Как только пришёл первый тик новой свечи снова устанавливаем флаг в положение, разрешающее отсылку сообщения.
Dmitri
27
Dmitri  
drknn:
Значит у Вас уже есть готовый код! Его нужно только чуть-чуть изменить. Что происходит в Вашем случае? На нулевой свече советник проверяет величину тела первой свечи. Обнаруживает, что она 50 и более пунктов и отправляет сообщение на мыло. На следующем тике всё повторяется. Вам нужно делать всё через флаг, разрешающий/запрещающий отсылку сообщения. Например, ранее нужной свечки небыло - флаг разрешает отсылать сообщение, но поскольку тела нет - сообщение не уходит. Далее, появилось нужное тело. Флаг разрешает отослать сообщение. Отсылаем его и снимаем флаг. На следующем тике советник обнаруживает, что тело есть, а флаг запрещает отсылку сообщения. В результате ни чего более не отсылается. Прошло время и возникла новая свеча. Как только пришёл первый тик новой свечи снова устанавливаем флаг в положение, разрешающее отсылку сообщения.

спсибо, но это для меня так тяжело))) можно я вставлю свой код а вы посмотрите что там неправильно
Yury Reshetov
13463
Yury Reshetov  

Только это не индикатор, а советник. Индикатор вломы писать - строк много надо. А советник все тоже самое делает без проблем.

static int          prevtime = 0;

int start() {

   if (Time[0] == prevtime) {
      return(0);
   }
   prevtime = Time[0];


   if ((High[1] - Low[1]) > 50.0 * Point) {
      SendMail("Хошь узнать какая свеча?", "Свеча больше 50 пипсов");
   }

   return(0);
}
Роман
7939
Роман  
Сюда и сюда обязательно напишите по этому же вопросу - так быстрее помогут. Пишите срочно!
Dmitri
27
Dmitri  


#property indicator_chart_window
//---- input parameters
extern int barsToProcess=5;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
int i;



for (i=0;i<Bars;i++)
{
ObjectDelete("Down "+DoubleToStr(i,0));
ObjectDelete("Up "+DoubleToStr(i,0));
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
//----
limit,
i=0;
if(counted_bars>0)
counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)
limit=barsToProcess;

while (i<limit)
{
//UP
double telo = (Close[i]-Open[i]);
double telo2 = (Open[i]-Close[i]);

if ((Open[i+1]<Close[i+1])&&(telo>=50*Point))

{
SendMail("Mail#","VVerh");


}

if ((Open[i+1]>Close[i+1])&&(telo2>=50*Point))

{
SendMail("Mail#","VVerh"); }


i++;
}

//----
return(0);
}

Alexander
2441
Alexander  
Reshetov:


Только это не индикатор, а советник. Индикатор вломы писать - строк много надо. А советник все тоже самое делает без проблем.


"Это" никогда работать не будет. Но очень близко, только одну строчку переставить.
Илья
2546
Илья  
Есть сервис работа, там можно заказать. Легко и просто.
Yury Reshetov
13463
Yury Reshetov  
Roger:
"Это" никогда работать не будет. Но очень близко, только одну строчку переставить.

Работать будет, но не совсем по ТЗ, а с запозданием, правильно вот так:

static int          prevtime = 0;

int start() {

   if (Time[0] == prevtime) {
      return(0);
   }


   if ((High[0] - Low[0]) > (50.0 * Point)) {
      SendMail("Хошь узнать какая свеча?", "Свеча больше 50 пипсов");
      prevtime = Time[0];
   }

   return(0);
}
Dmitri
27
Dmitri  

Спасибо огромое, попробую, надеюсь поможет! вы мне очень помогли) удачной вам торговли Юрий!

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