#1576

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

Прошу помощи. Есть функция, аналог 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(); в плане шефской помощи. Ну и как гимнастика для ума.

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

#1577

Добрый день.

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

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

 

Спойлер

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

 

 

DkzNkzMaker.mq410 скач.

Изменено 24 августа, 2021 пользователем Umen

#1578

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

HaosVisual_mod.mq412 скач.

#1579

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

#1580
1 час назад, Ar4i сказал:

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

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

#1581
3 часа назад, usver73 сказал:

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

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

Изменено 17 сентября, 2021 пользователем Ar4i

#1582
18 часов назад, Ar4i сказал:

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

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

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

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

#1583

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

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

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

Изменено 19 сентября, 2021 пользователем Ar4i

#1584
2 часа назад, Ar4i сказал:

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

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

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

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

#1585

Методы есть: 

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

#1586
7 часов назад, Ar4i сказал:

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

image.png.7d2d2f3e9c1da01114118e17ab844c68.png

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

#1587

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

ScreenShot_20210920195241.png

#1588

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

МА & RSI channel.ex49 скач. МА & RSI channel.mq414 скач.

Изменено 21 октября, 2021 пользователем Evgen 784

#1589

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

ipivot.mq48 скач.

#1590

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

Спасибо!!!

Bull and Bear Balance.ex48 скач. Bull and Bear Balance.mq413 скач.

#1591

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

 

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

Б ниже А.

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


Б выше А

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

 

 

Б выше А.png

Б ниже А.png

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

#1592

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

#1593
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.ex45 скач. PeterE.mq47 скач. Scale Toggle.mq45 скач. scale.mq45 скач.

#1594
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 загрузок 5 скач. PeterE.mq4 5 \u043a\u0411 · 0 загрузок 7 скач. Scale Toggle.mq4 2 \u043a\u0411 · 0 загрузок 5 скач. scale.mq4 2 \u043a\u0411 · 0 загрузок 5 скач.

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

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

MY SCRIPT.mq54 скач.

scalefix mt4.PNG

scalefix mt5 - no indicator plot defined for indicator.PNG

scalefix mt5.PNG

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

MY SCRIPT.mq57 скач. scalefix.mq411 скач. scalefix.mq511 скач. MY SCRIPT.mq55 скач. MY SCRIPT.mq55 скач.

Изменено 26 октября, 2021 пользователем VIK78

#1595

scalefix mt4.PNG

scalefix mt5 - no indicator plot defined for indicator.PNG

scalefix mt5.PNG

scalefix.mq410 скач. scalefix.mq59 скач.

#1596

Я тут попытался переделать индикатор PeterE.mq4 в mq5 - может кто посмотреть все ли правильно?

PETER E.mq57 скач.

#1597

а это оригинал PeterE.mq4

PeterE.mq415 скач.

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

Yoda Hill 3.ex414 скач.

#1599

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

   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]; 
     }

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

#1600
9 минут назад, MakarFX сказал:

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

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

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

 

Изменено 15 ноября, 2021 пользователем usver73

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

Перейти к списку тем
Форум · 2.0.20260627.0025