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

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


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

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

Здравствуйте!

Прошу помощи. Есть функция, аналог iRSIOnArray(); с одинаковым успехом работает и в МТ4, и в МТ5:

//+------------------------------------------------------------------+
//| Relative Strength Index on array                                 |
//+------------------------------------------------------------------+
template<typename T>
int RSIOnArray(const int rates_total,
               const int prev_calculated,
               const int begin,
               const int period,
               const T &price[],
               double &buffer_pos[],
               double &buffer_neg[],
               double &buffer_rsi[])
{
   int   i;
   T     diff;
//--- check for rates count
   if(period<1 || rates_total-begin<period) return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_rsi  =ArrayGetAsSeries(buffer_rsi);
   if(as_series_price)
      ArraySetAsSeries(price,false);
   if(as_series_rsi)
     {
      ArraySetAsSeries(buffer_rsi,false);
      ArraySetAsSeries(buffer_pos,false);
      ArraySetAsSeries(buffer_neg,false);
     }
//--- preliminary calculations
   int pos=prev_calculated-1;
   if(pos<=period)
     {
      //--- first RSIPeriod values of the indicator are not calculated
      buffer_rsi[0]=0.0;
      buffer_pos[0]=0.0;
      buffer_neg[0]=0.0;
      T SumP=0.0;
      T SumN=0.0;
      //---
      for(i=1; i<=period; i++)
        {
         buffer_rsi[i]=0.0;
         buffer_pos[i]=0.0;
         buffer_neg[i]=0.0;
         diff=price[i]-price[i-1];
         SumP+=(diff>0 ? diff : 0);
         SumN+=(diff<0 ?-diff : 0);
        }
      //--- calculate first visible value
      buffer_pos[period]=double(SumP/period);
      buffer_neg[period]=double(SumN/period);
      
      buffer_rsi[period]=100.0-(100.0/(1.0+buffer_pos[period]/(buffer_neg[period]>0 ? buffer_neg[period] : DBL_MIN)));
      //--- prepare the position value for main calculation
      pos=period+1;
     }
//--- the main loop of calculations
   for(i=pos;i<rates_total && !IsStopped();i++)
     {
      diff=price[i]-price[i-1];
      buffer_pos[i]=(buffer_pos[i-1]*(period-1)+(diff>0.0 ? diff : 0.0))/period;
      buffer_neg[i]=(buffer_neg[i-1]*(period-1)+(diff<0.0 ?-diff : 0.0))/period;
      buffer_rsi[i]=100.0-100.0/(1+buffer_pos[i]/(buffer_neg[i]>0 ? buffer_neg[i] : DBL_MIN));
     }
//--- restore as_series flags
   if(as_series_price) ArraySetAsSeries(price,true);
   if(as_series_rsi)
     {
      ArraySetAsSeries(buffer_rsi,true);
      ArraySetAsSeries(buffer_pos,true);
      ArraySetAsSeries(buffer_neg,true);
     }
//---
   return(rates_total);
}
//+------------------------------------------------------------------+

Просьба написать функцию аналог iCCIOnArray(); в плане шефской помощи. Ну и как гимнастика для ума.

Заранее благодарен-

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

  • 3 weeks later...
  • Ответов 1,7k
  • Создано
  • Последний ответ

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

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

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

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

Перейти

StepMA_Stoch alert.mq4

Перейти

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

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

Добрый день.

Помогите по возможности изменить построение зон индикатора по следующим правилам: 

1) Зоны строятся от экстремумов нажатием кнопок 2 (1/2 и 1/4 зоны) и 3 (целая зона NKZ). 
2) Когда цена проходит целую зону NKZ требуется дальнейшее построение от данной зоны. 
Зона имеет формат: "кол-во пунктов + 10% (наружу). 
3) Построение следующих зон происходит так же нажатием клавиш 2 и 3 при наведенном курсоре на зону. 
Но строятся они от внешней границы. А требуется построение от внутренней границы целой зоны NKZ. 

 

Спойлер

USDCHFDaily.png.355e2556200f8b86de302c6c0cf2bb3c.pngUSDCHFDaily1.png.b3677210c97a95f59bbe2965881a7335.png

 

 

DkzNkzMaker.mq4

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

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

Здравствуйте. Уважаемые программисты пожалуйста добавьте функцию Multi time frame (MTF)  к индикатору HaosVisual_mod.

HaosVisual_mod.mq4

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

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

Здраствуйте, ищу оригинальный код Moving_Average. То есть не тот который идет в мт. Или другие пользовательские использующие в расчете iMA() или iMAOnArray(), а в чисто девственном виде так сказать. Оказалось не так просто его найти, хотя казалось бы) 

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

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

Здраствуйте, ищу оригинальный код Moving_Average.

Интересно, какие есть"оригинальные" алгоритмы расчета?
Среднее, оно и в Африке среднее...

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

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

Среднее, оно и в Африке среднее

Вот я и хочу увидеть средние с формулой в виде расчетов iCustom() а не с использованием iMA(). iMA() -оригинал с закрытым кодом. Не поняли -не мешайте

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

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

Не поняли -не мешайте

Зачем хамишь?

В стандартной библиотеке есть код..

И, да, среднее значение считается ровно так, как учили в школе

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

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

   Извини, не хамлю просто не хочу отходить от темы в никуда. Ну в школе не было метода усреднения(ma_method) с типом цены(applied_price) которые надо было записывать в mql4. Если имеешь в виду библиотеку мт4, то да там есть Custom Moving Averages. Но он там без параметра: "типа цены(applied_price)"...

библиотека мт4.png

Параметры Custom MA.png

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

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

Ну в школе не было метода усреднения(ma_method) с типом цены(applied_price) которые надо было записывать в mql4

Вопрос был про ФОРМУЛУ  расчета. 

Что касается- какую цену подавать для расчета на вход, то от этого сам способ расчета не меняется.

Что касается библиотеки, то там же есть функция расчета экспоненциальным методом.

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

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

Методы есть: 

MODE_SMA

0

Простое усреднение

MODE_EMA

1

Экспоненциальное усреднение

MODE_SMMA

2

Сглаженное усреднение

MODE_LWMA

3

Линейно-взвешенное усреднение

 

Формулы выбора цены нет

Константа

Значение

Описание

PRICE_CLOSE

0

Цена закрытия

PRICE_OPEN

1

Цена открытия

PRICE_HIGH

2

Максимальная за период цена

PRICE_LOW

3

Минимальная за период цена

PRICE_MEDIAN

4

Медианная цена, (high+low)/2

PRICE_TYPICAL

5

Типичная цена, (high+low+close)/3

PRICE_WEIGHTED

6

Взвешенная цена закрытия, (high+low+close+close)/4

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

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

Формулы выбора цены нет

image.png.7d2d2f3e9c1da01114118e17ab844c68.png

Если не нужно чего-то экзотического, то формулы не нужны. Просто воспользуйся любым массивом, поступающим на вход OnCalculate()

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

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

С использованием этого массива так понял. Спасибо. Если нет чего за пример взять пойду на другую ветку форума)

ScreenShot_20210920195241.png

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

  • 1 month later...
Доработка индикаторов: общая тема Опубликовано (изменено)

Добрый день, уважаемые программисты! Просьба, помочь и добавить в индикатор Push Aler и отправку Alerта на почту Заранее спасибо 

МА & RSI channel.ex4 МА & RSI channel.mq4

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

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

Всем привет! Может кто сможет сделать при открытие нового дня, что бы индикатор показывал сколько пунктов до точки пивот

ipivot.mq4

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

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

Доброго времени суток, уважаемые программисты!
Может кто прикрутить Alert к индикатору Bull and Bear Balance при смене баланса?

Спасибо!!!

Bull and Bear Balance.ex4 Bull and Bear Balance.mq4

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

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

Доброго времени суток уважаемые знатоки mql4, подскажите сложно объединить линейный параболик(Parabolic_r2) и канал линейной регрессии в одном индикаторе(советнике) или если есть возможность помогите с индикатором(советником), не знаю как правильно. 

 

Индикатор(советник) показывает искомые формации за последние 100 баров(изменяемый параметр).
При совпадении условий включается АЛЕРТ.

Б ниже А.

Индикатор высчитывает параметры после смены параболика.
Берутся две волны параболика следующие одна за другой.
Высшая точка волны Б ниже высшей точки волны А.
Через эти высшие точки проводится канал линейной регрессии.
Ключевой момент канал должен быть направлен вверх.


Б выше А

Индикатор высчитывает параметры после смены параболика.
Берутся две волны параболика следующие одна за другой.
Низшая точка волны Б выше низшей точки волны А.
Через эти низшие точки проводится канал линейной регрессии.
Ключевой момент канал должен быть направлен вниз.

 

 

Б выше А.png

Б ниже А.png

как должно быть.png

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

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

 В отличие от мт4 в мт5 не корректно работает Scale Fix - по идее этот режим должен давать фиксированный масштаб С ВОЗМОЖНОСТЬЮ перемещения графика по всем направлениям - но тут идет жесткая фиксация по min и max графика (решение двойной клик по ценовой шкале)

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

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

 В отличие от мт4 в мт5 не корректно работает Scale Fix - по идее этот режим должен давать фиксированный масштаб С ВОЗМОЖНОСТЬЮ перемещения графика по всем направлениям - но тут идет жесткая фиксация по min и max графика (решение двойной клик по ценовой шкале)

ChartAutoScale.ex4 создавался из двух 1)Scale Toggle.mg4 и 2)scale.mg4 - вопрос можно как то переделать ChartAutoScale.ex4 для МТ5?

ChartAutoScalle mt4.PNG

PeterE.PNG

ChartAutoScale.ex4 PeterE.mq4 Scale Toggle.mq4 scale.mq4

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

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

ChartAutoScale.ex4 создавался из двух 1)Scale Toggle.mg4 и 2)scale.mg4 - вопрос можно как то переделать ChartAutoScale.ex4 для МТ5?

ChartAutoScalle mt4.PNG

PeterE.PNG

ChartAutoScale.ex4 18 \u043a\u0411 · 0 загрузок PeterE.mq4 5 \u043a\u0411 · 0 загрузок Scale Toggle.mq4 2 \u043a\u0411 · 0 загрузок scale.mq4 2 \u043a\u0411 · 0 загрузок

вот ссылка на источник https://www.forexfactory.com/thread/890930-automatically-scale-charts-using-button

есть еще решение это установка разового скрипта - но он работает один раз и масштабирование как раз работает нормально - вопрос как его сделать индикатором поскольку в мт5 нет возможности работы двух и более скриптов на графике? а это ссылка на источник https://www.mql5.com/en/forum/72215 -

MY SCRIPT.mq5

scalefix mt4.PNG

scalefix mt5 - no indicator plot defined for indicator.PNG

scalefix mt5.PNG

фикированный масштаб мт5.PNG

MY SCRIPT.mq5 scalefix.mq4 scalefix.mq5 MY SCRIPT.mq5 MY SCRIPT.mq5

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

  • 3 weeks later...
Доработка индикаторов: общая тема Опубликовано
Добрый день, уважаемые программисты! Просьба, помочь в данном индикаторе изменить значение deviations c 0.8 на 0.5 по умолчанию собираю тс через конструктор. очень надо. в параметрах оно меняется но конструктор эти значения не учитывает

Yoda Hill 3.ex4

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

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

Подскажите, пожалуйста, как правильно сделать

   for(i=limit;i>=0;i--)
     {
      Label1Buffer[i] = MathRand(); 
      Label2Buffer[i] = Label1Buffer[i+1]+Label1Buffer[i+2]+Label1Buffer[i+3]+Label1Buffer[i+4]+Label1Buffer[i+5]; 
     }

чтобы не вписывать все элементы которые хочу сложить, а просто указать кол-во элементов

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

Доработка индикаторов: общая тема Опубликовано (изменено)
9 минут назад, MakarFX сказал:

чтобы не вписывать все элементы которые хочу сложить, а просто указать кол-во элементов

пишите вложенный цикл:
 

double tmp = 0.0;
for(m=0; m<5; m++)
{
  tmp +=  Label1Buffer[i+m];
} 
 Label2Buffer[i] = tmp;

 

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

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

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

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

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

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

Войти

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

Войти

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


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

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