Перейти к содержанию

Доработка индикаторов: общая тема


Рекомендуемые сообщения

Доработка индикаторов: общая тема Опубликовано
1 минуту назад, Rigal сказал:

Если хочется знать, первый ли это запуск - проверяем prev_calculated == 0

Если лимит должен быть больше единицы - ну прибавляем к нему единицу по умолчанию и сравниваем limit > 1

честно, prev_calculated == 0 не рассматривал. 

Знаете, когда практически все индикаторы (у меня по крайней мере) идут с limit > 1, а иначе, поневоле ищешь ошибку в коде.

Не находишь - обращаешься на форум

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 1,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

прикрутилround_LevelsWhite_alert_1.mq4

Перейти

StepMA_Stoch alert.mq4

Перейти

1. Push-уведомления добавлены. Включается/выключаются в настройках NotificationAlerts 2. Текущий TF добавлен как в алерты, так и в PUSH-уведомления. 3. Ошибки исправлены.   Проверя

Перейти
Доработка индикаторов: общая тема Опубликовано
1 час назад, radioman сказал:

честно, prev_calculated == 0 не рассматривал. 

Знаете, когда практически все индикаторы (у меня по крайней мере) идут с limit > 1, а иначе, поневоле ищешь ошибку в коде.

Не находишь - обращаешься на форум

Ну фракталы, например, требуют больше одного бара с обеих сторон - фрактал просто не может появиться на последнем закрытом баре.

Я не смотрел внимательно на алгоритм, но по наличию выделяемых на каждом тике массивов по триста элементов, ему тоже есть,  чего посчитать ;)

Изменено пользователем Rigal
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
3 часа назад, Rigal сказал:

массивов по триста элементов, ему тоже есть,  чего посчитать

триста элементов.. да, забыл уменьшить. Размерность выделена на случай увеличения периода индикатора. Я так думаю.

За глаза хватит и 14. Ну 21, по желанию. И шкала от -100 до +100 смотрится лучше.

Я еще сократил код, убрал булевые атавизмы. Голова посвежее будет - распринтовать все..

Спойлер

//+----------------------------------------------+
//|                                     K_II.mq4 |
//+----------------------------------------------+
#property strict
//---- indicator settings
#property indicator_separate_window
#property indicator_minimum -110
#property indicator_maximum  110
#property indicator_buffers  1
#property indicator_color1   clrGold
//---- input parameters
input uint Inp_K_Period = 3; // K_II Period
//---- buffers
double  Ext_Buffer[];
//----
int     nK_Period;
//----
int     nDraw_begin1=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   string sShort_name;
   //----
   IndicatorDigits(1);
   //----
   nK_Period=int(Inp_K_Period < 3 ? 3 : Inp_K_Period);
   //---- indicator line
   SetIndexBuffer(0, Ext_Buffer);
   SetIndexStyle (0, DRAW_LINE); 
   SetIndexLabel (0, "K_II ("+(string)nK_Period+")");
   //---- name for indicator
   sShort_name="K_II";
   IndicatorShortName(sShort_name);
   //----
   nDraw_begin1=nK_Period;
   SetIndexDrawBegin(0,nDraw_begin1);
//---- initialization done
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//----
   if(rates_total<=nDraw_begin1) return(0);
   //----
   double dCoefficient=0., dPeriodRatio=0., k,
          dTempValue, dPriceBag, dPriceToAbs, dPreValue, dValue;
   int    nPeriod=0, A=0, B, C;
   double ArrayP[14]={0}, ArrayX[14]={0}, ArrayY[14]={0}, ArrayZ[14]={0};
   //----
   int limit=rates_total-prev_calculated;
   //----
   if(limit=1)// limit>1
     {
      limit=rates_total-nDraw_begin1-1;
      //----
      ArrayInitialize(Ext_Buffer, 0.);
     }
   //---- K_II
   for(int i=limit; i>=0; i--)
     {
      dTempValue= 0.;
      //----
      nPeriod=int(nK_Period-1 >= 2 ? nK_Period : 3);
      //----
      k=nPeriod;
      dCoefficient= 12/(k*(k-1)*(k+1));
      dPeriodRatio= (nPeriod+1)*0.5;
      //----
      for(A=2; A<=nPeriod; A++) ArrayP[A-1]=ArrayP[A];
      //----
      ArrayP[nPeriod]=close[i];
      //===========================================   // Price/ABS border
         for(B=1; B<=nPeriod; B++)
           {
            ArrayY[B]= B;
            ArrayZ[B]= B;
            ArrayX[B]= ArrayP[B];
           }
         //----  
         for(B=1; B<=(nPeriod-1); B++)
           {
            dPriceBag= ArrayX[B];
            C= B;
            A= B+1;
            //----
            for(A=B+1; A<=nPeriod; A++)
              {
               if (ArrayX[A]<dPriceBag)
                 {
                  dPriceBag = ArrayX[A];
                  C = A;
                 }
              }
            //----
            dPriceToAbs= ArrayX[B];
            ArrayX[B]  = ArrayX[C];
            ArrayX[C]  = dPriceToAbs;
            dPriceToAbs= ArrayY[B];
            ArrayY[B]  = ArrayY[C];
            ArrayY[C]  = dPriceToAbs;
           }
         //----  
         dTempValue=0.;
         for(B=1; B<=nPeriod; B++) dTempValue=dTempValue+(ArrayZ[B]-dPeriodRatio)*(ArrayY[B]-dPeriodRatio);
         //----
         dPreValue=dCoefficient*dTempValue;
      //----
      dValue=dPreValue;
      if (dValue==0) dValue=0.00001;
      //----
      Ext_Buffer[i]=dValue*100.;
     }
//----
   return(rates_total);
}
//+------------------------------------------------------------------+

 

 

K_II.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
3 часа назад, radioman сказал:

триста элементов.. да, забыл уменьшить. Размерность выделена на случай увеличения периода индикатора. Я так думаю.

За глаза хватит и 14. Ну 21, по желанию. И шкала от -100 до +100 смотрится лучше.

Я еще сократил код, убрал булевые атавизмы. Голова посвежее будет - распринтовать все..

  Показать контент


//+----------------------------------------------+
//|                                     K_II.mq4 |
//+----------------------------------------------+
#property strict
//---- indicator settings
#property indicator_separate_window
#property indicator_minimum -110
#property indicator_maximum  110
#property indicator_buffers  1
#property indicator_color1   clrGold
//---- input parameters
input uint Inp_K_Period = 3; // K_II Period
//---- buffers
double  Ext_Buffer[];
//----
int     nK_Period;
//----
int     nDraw_begin1=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   string sShort_name;
   //----
   IndicatorDigits(1);
   //----
   nK_Period=int(Inp_K_Period < 3 ? 3 : Inp_K_Period);
   //---- indicator line
   SetIndexBuffer(0, Ext_Buffer);
   SetIndexStyle (0, DRAW_LINE); 
   SetIndexLabel (0, "K_II ("+(string)nK_Period+")");
   //---- name for indicator
   sShort_name="K_II";
   IndicatorShortName(sShort_name);
   //----
   nDraw_begin1=nK_Period;
   SetIndexDrawBegin(0,nDraw_begin1);
//---- initialization done
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//----
   if(rates_total<=nDraw_begin1) return(0);
   //----
   double dCoefficient=0., dPeriodRatio=0., k,
          dTempValue, dPriceBag, dPriceToAbs, dPreValue, dValue;
   int    nPeriod=0, A=0, B, C;
   double ArrayP[14]={0}, ArrayX[14]={0}, ArrayY[14]={0}, ArrayZ[14]={0};
   //----
   int limit=rates_total-prev_calculated;
   //----
   if(limit=1)// limit>1
     {
      limit=rates_total-nDraw_begin1-1;
      //----
      ArrayInitialize(Ext_Buffer, 0.);
     }
   //---- K_II
   for(int i=limit; i>=0; i--)
     {
      dTempValue= 0.;
      //----
      nPeriod=int(nK_Period-1 >= 2 ? nK_Period : 3);
      //----
      k=nPeriod;
      dCoefficient= 12/(k*(k-1)*(k+1));
      dPeriodRatio= (nPeriod+1)*0.5;
      //----
      for(A=2; A<=nPeriod; A++) ArrayP[A-1]=ArrayP[A];
      //----
      ArrayP[nPeriod]=close[i];
      //===========================================   // Price/ABS border
         for(B=1; B<=nPeriod; B++)
           {
            ArrayY[B]= B;
            ArrayZ[B]= B;
            ArrayX[B]= ArrayP[B];
           }
         //----  
         for(B=1; B<=(nPeriod-1); B++)
           {
            dPriceBag= ArrayX[B];
            C= B;
            A= B+1;
            //----
            for(A=B+1; A<=nPeriod; A++)
              {
               if (ArrayX[A]<dPriceBag)
                 {
                  dPriceBag = ArrayX[A];
                  C = A;
                 }
              }
            //----
            dPriceToAbs= ArrayX[B];
            ArrayX[B]  = ArrayX[C];
            ArrayX[C]  = dPriceToAbs;
            dPriceToAbs= ArrayY[B];
            ArrayY[B]  = ArrayY[C];
            ArrayY[C]  = dPriceToAbs;
           }
         //----  
         dTempValue=0.;
         for(B=1; B<=nPeriod; B++) dTempValue=dTempValue+(ArrayZ[B]-dPeriodRatio)*(ArrayY[B]-dPeriodRatio);
         //----
         dPreValue=dCoefficient*dTempValue;
      //----
      dValue=dPreValue;
      if (dValue==0) dValue=0.00001;
      //----
      Ext_Buffer[i]=dValue*100.;
     }
//----
   return(rates_total);
}
//+------------------------------------------------------------------+

 

 

K_II.mq4 8 \u043a\u0411 · 2 загрузки

Имхо можно выделять под период.

double array[];

ArrayResize(array, UserSelectedNumberOfBars);

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
В 07.12.2020 в 20:39, Sank сказал:

Здравствуйте, уважаемые программисты!

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

Либо сделать так, что после первого касания он уровень не замечает. Либо (что предпочтительнее) чтобы уровень после первого касания дальше не отрисовывался.

07.12.20 USDCADM5.png

Support and Resistance Alert Revision 2.mq4 6 \u043a\u0411 · 2 загрузки

Пока я нетрезв, выбросить все нафиг,  сформулировать идею - и написать

 

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

Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
Доработка индикаторов: общая тема Опубликовано

Всем привет! image.gif.85e82c782a8d7dccbdc1dadf62871c59.gif:)
Сделайте пожалуйста отправку сообщение на почту и телефон от индюка Bar value (таймфрем, валютная пара, время).
Желательно чтоб индюк не ждал закрытия свечи и делал отправку сообщений, а отсылал их сразу, как только сработало условие

Bar value.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Всем доброго часа. Можно ли сделать алерт на индикатор %WPR (Williams Percent Range) чтобы при касании линий -10 и -90, или -15 и -85, (смотря какие линии выставлены в настройках), подавался сигнал, и еще тогда, когда случается расхождение индикатора с ценой? Пример на скрине.

Screenshot_2.png

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Ув. программисты mql5!  Индикатор выдает ошибки при компиляции. Исправьте, пожалуйста. Заранее признательна за помощь.:-*

CandleColorMidPoint.mq5

Изменено пользователем iloirin
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
20 часов назад, Страник сказал:

Всем привет! image.gif.85e82c782a8d7dccbdc1dadf62871c59.gif:)
Сделайте пожалуйста отправку сообщение на почту и телефон от индюка Bar value (таймфрем, валютная пара, время).
Желательно чтоб индюк не ждал закрытия свечи и делал отправку сообщений, а отсылал их сразу, как только сработало условие

Bar value.mq4 3 \u043a\u0411 · 1 загрузка

Нашёлся индикатор с мгновенным аллертом при срабатывании условия (только вместо цифр над/под свечой, теперь рисуются стрелки, что не очень удобно. Если возможно, то поправьте пожалуйста обратно на цифры), только вот без отправки сообщений на телефон и почту. Добавьте пожалуйста отправку сообщений

Bar value v1.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
3 часа назад, radioman сказал:

Ув. @radioman, огромное спасибо! Прошу ответьте: если я правильно поняла, то это я, меняя код значка в 28 строке, "потеряла" запятую и из-за этого были ошибки?

Изменено пользователем iloirin
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
3 часа назад, iloirin сказал:

из-за этого были ошибки?

Здравствуйте. Вы правы, дело было в запятой

  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
В 09.01.2021 в 20:14, Страник сказал:

Нашёлся индикатор с мгновенным аллертом при срабатывании условия (только вместо цифр над/под свечой, теперь рисуются стрелки, что не очень удобно. Если возможно, то поправьте пожалуйста обратно на цифры), только вот без отправки сообщений на телефон и почту. Добавьте пожалуйста отправку сообщений

Bar value v1.mq4 4 \u043a\u0411 · 2 загрузки

Как оказалось обозначение цифрами осталось..

Нужно было просто отключить стрелки)

Прикрепите плиз отправку сообщений

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Здравствуйте, Уважаемые специалисты.

 

Есть индикатор = Trendlinesday. Он довольно простой и рисует трендовые линии по хаям.

Есть советник = TrendLine_Trading. Он открывает ордера при пересечении заданной нами трендовой линии. В настройках советника пишем название трендовых линии от индикатора. Получается один рисует линии, другой открывает ордера.

Проблема в следующем: советник, при открытии ордера, задает комментарий в описании трендовой линии, и после этого новых ордеров не открывает. Не могли бы Вы подчистить код советника, чтобы:
1. Советник открывал ордера только при пересечении линии тренда в нужном направлении. Т.е. ордер на покупку открывался при пересечении ценой линии Trend UP-0 снизу вверх, а ордер на продажу при пересечении линии Trend DN-0 сверху вниз.

2. Советник не прописывал комментарий к названию линии тренда, или просто не проверял наличие таковых, чтобы он мог постоянно открывать ордера при пересечении ценой нужной линии.

 

Спасибо!

ИНД = Trendlinesday.mq4 СОВА = TrendLine_Trading.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
В 12.01.2021 в 20:18, Страник сказал:

Как оказалось обозначение цифрами осталось..

Нужно было просто отключить стрелки)

Прикрепите плиз отправку сообщений

Помогли на другом форуме. Может кому пригодится...

Bar value v1(+).mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Приветствую всех. Скажите, можно ли к индикатору добавить дэшборт? Индикатор показывает импульсные свечи (с большими телами). В условиях дэшборда, чтобы можно было указы вать пары и выбирать на каком ТФ показывать сигнал.  Если это очень сложно, сколько это будет стоить? Заранее спасибо.  

momentum_candles_v1.2.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Здравствуйте господа программисты, можно ли сделать так чтобы показания этого индикатора отображались на истории, чтобы на каждом предыдущем дне можно было увидеть показания индикатора (Hi/Lo пяти предыдущих дней) 

5 day.png

5day_mod_txt.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка индикаторов: общая тема Опубликовано
В 25.01.2021 в 16:34, selavie сказал:

Здравствуйте господа программисты, можно ли сделать так чтобы показания этого индикатора отображались на истории, чтобы на каждом предыдущем дне можно было увидеть показания индикатора (Hi/Lo пяти предыдущих дней) 

5 day.png

5day_mod_txt.mq4 9 \u043a\u0411 · 1 загрузка

Парни кто сделает, а то пол года присматриваюсь к пятидневным зонам - отрабатывает , но хотелось бы посмотреть за больший период

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Здравствуйте, уважаемые Программисты mql5 - добрые самаритяне!:X

Измените, пожалуйста, алгоритм цветовой раскраски значков в данном индикаторе.

Индикатор ставит значок на середине (средней цене) либо всей свечи, либо тела свечи  - по выбору в настройках. Далее он раскрашивает этот значок в зависимости от типа свечи – бычья, медвежья

Мне нужно, чтобы он раскрашивал значки по другому алгоритму: если середина новой свечи выше середины предыдущей - то бычий цвет, ниже – медвежий, на одном уровне – нейтральный.

Индикатор очень помогает как можно дольше находиться в сделке, следовать за трендом.

Помогите, пожалуйста. Заранее признательна.

CandleColorMidPoint.mq5

Изменено пользователем iloirin
Ссылка на сообщение
Поделиться на другие сайты

  • 3 weeks later...
Доработка индикаторов: общая тема Опубликовано

Уважаемые программисты! Помогите модифицировать индикатор RSI.

Мне необходимо, чтобы вместо подвального отображения на графике он показывал в правом верхнем углу графика следующую информацию:

зеленый квадратик, если RSI пересек и находиться выше уровня 50,

красный квадратик, если RSI пересек и находиться ниже уровня 50.

И самое главное, он должен быть мультитаймфреймовый. 

RSI.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
20 часов назад, dimon79ua сказал:

Уважаемые программисты! Помогите модифицировать индикатор RSI.

Мне необходимо, чтобы вместо подвального отображения на графике он показывал в правом верхнем углу графика следующую информацию:

зеленый квадратик, если RSI пересек и находиться выше уровня 50,

красный квадратик, если RSI пересек и находиться ниже уровня 50.

И самое главное, он должен быть мультитаймфреймовый. 

RSI.mq4 4 \u043a\u0411 · 0 загрузок

А можно уточнить, что значит «пересек»? Если мы на минутке, значение 80, пересек 50 полчаса назад - он какого цвета?

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка индикаторов: общая тема Опубликовано
В 25.02.2021 в 07:26, Rigal сказал:

А можно уточнить, что значит «пересек»? Если мы на минутке, значение 80, пересек 50 полчаса назад - он какого цвета?

Цвет не меняется, пока на выбранном таймфрейме RSI не пересечет уровень 501795361856_.thumb.png.00ce003b262c31c25795d6a99200be1b.png (подвальный индикатор для примера, он не должен отображаться на графике, только "квадратик" в углу).

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Здравствуйте, уважаемые программисты! Помогите, пожалуйста, модифицировать советник, который выводит на график статистику по всем работающим на счете советникам. Проблема в том, что советник берет всю инфу из истории терминала и выводит ее на график... А если советников было много, за всю историю существования счета, то высоты графика не хватает и статистику по многим советникам попросту не видно. В настройках у него есть переменная "S_13 Исключить из статистики MagicNumber."  Но количество магиков ограничено четырьмя штуками... Т.е. я могу отключить показ статистики только четырех советников. А хотелось бы, что бы можно было отключать неограниченное число магиков.                                                                                   Или может есть аналог такого советника, в более совершенном варианте? Буду признателен, если подскажете.

Statistics.mq4

Изменено пользователем Vladislav.k
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Всем форумчанам хорошего дня. Есть хороший индикатор гистаграмма Вильямса, и у него встроенный алерт, который невозможно отключить, т.к. настроек у него нет. В процессе торговли он очень сильно беспокоит своими звонками, которые строчат как из пулемета. Можно ли сделать этот алерт отключаемым?

William36histogram_6thc4.ex4 William36histogram_6thc4.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
21 час назад, Сергей108 сказал:

Можно ли сделать этот алерт отключаемым?

можно

 

William36histogram_6thc4_1.mq4

  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...