- [АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
- [Архив!] Готов написать советника БЕСПЛАТНО !!!!!
- помогите, пожалуйста, написать простой индикатор
Значит у Вас уже есть готовый код! Его нужно только чуть-чуть изменить. Что происходит в Вашем случае? На нулевой свече советник проверяет величину тела первой свечи. Обнаруживает, что она 50 и более пунктов и отправляет сообщение на мыло. На следующем тике всё повторяется. Вам нужно делать всё через флаг, разрешающий/запрещающий отсылку сообщения. Например, ранее нужной свечки небыло - флаг разрешает отсылать сообщение, но поскольку тела нет - сообщение не уходит. Далее, появилось нужное тело. Флаг разрешает отослать сообщение. Отсылаем его и снимаем флаг. На следующем тике советник обнаруживает, что тело есть, а флаг запрещает отсылку сообщения. В результате ни чего более не отсылается. Прошло время и возникла новая свеча. Как только пришёл первый тик новой свечи снова устанавливаем флаг в положение, разрешающее отсылку сообщения.
спсибо, но это для меня так тяжело))) можно я вставлю свой код а вы посмотрите что там неправильно
Только это не индикатор, а советник. Индикатор вломы писать - строк много надо. А советник все тоже самое делает без проблем.
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); }
#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);
}
Только это не индикатор, а советник. Индикатор вломы писать - строк много надо. А советник все тоже самое делает без проблем.
"Это" никогда работать не будет. Но очень близко, только одну строчку переставить.
Работать будет, но не совсем по ТЗ, а с запозданием, правильно вот так:
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); }
Спасибо огромое, попробую, надеюсь поможет! вы мне очень помогли) удачной вам торговли Юрий!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования