Через 5 мин будет код. Имейте ввиду, что у РСИ используется сглаживание Вайлдера, это тоже самое что экспоненциальное, но с более большим периодом, от этого может быть заметное несоответствие.
Да чего там его готовить то? Из RSI выбрасываем главный буфер, а на его место ставим имеющиеся два:
//+------------------------------------------------------------------+//| RSI.mq4 |//| Copyright 2005-2014, MetaQuotes Software Corp. |//| https://www.mql4.com |//+------------------------------------------------------------------+#property copyright"2005-2014, MetaQuotes Software Corp."#property link"https://www.mql4.com"#property description"Relative Strength Index"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_color1 clrBlue#property indicator_color2 clrRed//--- input parametersinputint InpRSIPeriod=14; // RSI Period//--- buffersdouble ExtPosBuffer[];
double ExtNegBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit(void)
{
string short_name;
//--- 2 additional buffers are used for counting.SetIndexBuffer(0,ExtPosBuffer);
SetIndexBuffer(1,ExtNegBuffer);
//--- indicator lineSetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//--- name for DataWindow and indicator subwindow label
short_name="RSI("+string(InpRSIPeriod)+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//--- check for inputif(InpRSIPeriod<2)
{
Print("Incorrect value for input variable InpRSIPeriod = ",InpRSIPeriod);
return(INIT_FAILED);
}
//---SetIndexDrawBegin(0,InpRSIPeriod);
//--- initialization donereturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Relative Strength Index |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,pos;
double diff;
//---if(Bars<=InpRSIPeriod || InpRSIPeriod<2)
return(0);
//--- counting from 0 to rates_totalArraySetAsSeries(ExtPosBuffer,false);
ArraySetAsSeries(ExtNegBuffer,false);
ArraySetAsSeries(close,false);
//--- preliminary calculations
pos=prev_calculated-1;
if(pos<=InpRSIPeriod)
{
//--- first RSIPeriod values of the indicator are not calculated
ExtPosBuffer[0]=0.0;
ExtNegBuffer[0]=0.0;
double sump=0.0;
double sumn=0.0;
for(i=1; i<=InpRSIPeriod; i++)
{
ExtPosBuffer[i]=0.0;
ExtNegBuffer[i]=0.0;
diff=close[i]-close[i-1];
if(diff>0)
sump+=diff;
else
sumn-=diff;
}
//--- calculate first visible value
ExtPosBuffer[InpRSIPeriod] = sump / InpRSIPeriod;
ExtNegBuffer[InpRSIPeriod] = sumn / InpRSIPeriod;
//--- prepare the position value for main calculation
pos=InpRSIPeriod+1;
}
//--- the main loop of calculationsfor(i=pos; i<rates_total && !IsStopped(); i++)
{
diff=close[i]-close[i-1];
ExtPosBuffer[i]=(ExtPosBuffer[i-1]*(InpRSIPeriod-1)+(diff>0.0?diff:0.0))/InpRSIPeriod;
ExtNegBuffer[i]=(ExtNegBuffer[i-1]*(InpRSIPeriod-1)+(diff<0.0?-diff:0.0))/InpRSIPeriod;
}
//---return(rates_total);
}
//+------------------------------------------------------------------+
Нет там никакого сглаживания. А расчет отличается тем, что к силе медведей относятся и доджи. Вот и вся разница. В DA этот момент учтен.
Через 5 мин будет код. Имейте ввиду, что у РСИ используется сглаживание Вайлдера, это тоже самое что экспоненциальное, но с более большим периодом, от этого может быть заметное несоответствие.
c_x - как у РСИ, но деление не период, а на фактическое количество приращений.
Smooth - метод сглаживания:
s_wilder - метод Вайлдера
s_ema - экспоненциальное сглаживание.
Имейте ввиду у РСИ компоненты сглаживаются Вайлдером, у АДХ - обычным экспоненциальным методом (то есть период 14 у РСИ соответствует периоду 27 у АДХ).
Power - способ расчета финальной линии:
f_off - не отображается, чтобы лучше видеть компоненты
f_rsi - как у RSI
f_adx - как у АДХ.
Для информации: у РСИ финальная линия не сглаживается, у АДХ сглаживается.
***
Данным индикатором через настройки можно получить РСИ и АДХ, и различные гибриды.
Для получения РСИ:
Components - c_rsi
Smooth - s_wilder
Power - f_rsi;
Для получения АДХ:
Components - c_adx
Smooth - s_ema
Power - f_adx
Power - включайте/выключайте, чтобы компоненты не мешали.
***
Шаблон с двумя индикаторами как на изображении с этого поста тоже приложен.
Yousufkhodja Sultonov: В DA нет никаких сглаживаний и они и не требуются. Что, на это скажете?
Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
К тому же, чем говрить, надо бы показать. А то что-то с меня то так строго спрашиваете, а сами бла бла бла
Где задний ход? 5 минут на написание поста это много?
Я имел ввиду вот это: "Имейте ввиду, что у РСИ используется сглаживание Вайлдера, это тоже самое что экспоненциальное, но с более большим периодом, от этого может быть заметное несоответствие."
Какие-то условности с большим или меньшим периодом, экспоненциальное или обычное сглаживание - к чему все это? DA берет Быка за рога, а Медведя - за лапы и ноги.
Dmitry Fedoseev: Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
Dmitry Fedoseev: Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
Ты пытаешься спорить с помощью формул с человеком, который говорит на языке поэзии.
Через 5 мин будет код. Имейте ввиду, что у РСИ используется сглаживание Вайлдера, это тоже самое что экспоненциальное, но с более большим периодом, от этого может быть заметное несоответствие.
Да чего там его готовить то? Из RSI выбрасываем главный буфер, а на его место ставим имеющиеся два:
Нет там никакого сглаживания. А расчет отличается тем, что к силе медведей относятся и доджи. Вот и вся разница. В DA этот момент учтен.Через 5 мин будет код. Имейте ввиду, что у РСИ используется сглаживание Вайлдера, это тоже самое что экспоненциальное, но с более большим периодом, от этого может быть заметное несоответствие.
В приложении индикатор.
Параметры:
period - период в барах;
Components - вариант расчета компонентов:
Smooth - метод сглаживания:
Power - способ расчета финальной линии:
Для информации: у РСИ финальная линия не сглаживается, у АДХ сглаживается.
***
Данным индикатором через настройки можно получить РСИ и АДХ, и различные гибриды.
Для получения РСИ:
Для получения АДХ:
Power - включайте/выключайте, чтобы компоненты не мешали.
***
Шаблон с двумя индикаторами как на изображении с этого поста тоже приложен.
Теперь даете задний ход?
Где задний ход? 5 минут на написание поста это много?
...
Нет там никакого сглаживания....А это что? -
Это сглаживание Вайлдера. По сути идентичное експоненциальному, но медленнее.Где задний ход? 5 минут на написание поста это много?
В DA нет никаких сглаживаний и они и не требуются. Что, на это скажете?
Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
К тому же, чем говрить, надо бы показать. А то что-то с меня то так строго спрашиваете, а сами бла бла бла
Где задний ход? 5 минут на написание поста это много?
Какие-то условности с большим или меньшим периодом, экспоненциальное или обычное сглаживание - к чему все это? DA берет Быка за рога, а Медведя - за лапы и ноги.
Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
Можно и не сглаживать как в РСИ, но сами компоненты, это уже простое среднее. Можно доработать мой вышеприведенный универсальный индикатор, что бы включать/выключать сглаживание. Но концептуально ничего не меняется.
Ты пытаешься спорить с помощью формул с человеком, который говорит на языке поэзии.