Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как растет твой рейтинг
MetaQuotes Software Corp.
Модератор
177428
MetaQuotes Software Corp. 2010.06.28 07:55 

RSI Band:

RSI наложен на МА

Author: Leonid Basis

Иван
521
Иван 2010.06.28 11:22  
идея хорошая
Leonid Basis
21153
Leonid Basis 2010.06.28 14:19  
excelf:
идея хорошая

удачи вам
Victor Nikolaev
Модератор
14085
Victor Nikolaev 2010.06.28 15:15  

Совсем недавно разбирал подобный индикатор http://forum.mql4.com/ru/33178. Этот точно так же можно переделать. Работать быстрее будет. Для советника это довольно актуально.

Leonid Basis
21153
Leonid Basis 2010.06.28 17:25  
Vinin:

Совсем недавно разбирал подобный индикатор http://forum.mql4.com/ru/33178. Этот точно так же можно переделать. Работать быстрее будет. Для советника это довольно актуально.


Спасибо, Виктор
MQL4 Comments
16309
MQL4 Comments 2010.06.28 20:19  
А алерт в виде стрелочек можно добавить?
MQL4 Comments
16309
MQL4 Comments 2010.06.28 22:40  

там ненормирован РСИ и часто просто выглядит в виде вертикальных полос...

надо ввести строчку extern int koeff = 100; и далее, при вычислении девиации:

Deviation = iATR(NULL, 0, nPeriod, i) *koeff; коэффициент подбирать экспериментально...

Leonid Basis
21153
Leonid Basis 2010.06.28 23:21  
Rossi:

там ненормирован РСИ и часто просто выглядит в виде вертикальных полос...

надо ввести строчку extern int koeff = 100; и далее, при вычислении девиации:

Deviation = iATR(NULL, 0, nPeriod, i) *koeff; коэффициент подбирать экспериментально...


Хорошая идея, спасибо
Leonid Basis
21153
Leonid Basis 2010.06.28 23:29  

Идея Rossi:

/*------------------------------------------------------------------+

| Rsi_Bands_B2.mq4 |

| Copyright © 2010 |

| basisforex@gmail.com |

+------------------------------------------------------------------*/

#property copyright "Copyright © 2010, basisforex@gmail.com"

#property link "basisforex@gmail.com"

//-----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Yellow

//-----

extern int nPeriod = 13;

extern int RossiKoeff = 300;// find value by testing

extern int MaShift = 0;

//-----

double Deviation, r;

double MaBuffer[];

double RSIBuffer[];

//+------------------------------------------------------------------+

int init()

{

SetIndexShift(0, MaShift);

SetIndexShift(1, MaShift);

//-----

SetIndexBuffer(0, MaBuffer);

SetIndexBuffer(1, RSIBuffer);

//-----

SetIndexStyle(0, DRAW_LINE, STYLE_DOT);

SetIndexStyle(1, DRAW_LINE);

//-----

SetIndexLabel(0, "MA");

SetIndexLabel(1, "RSI");

//-----

return(0);

}

//+------------------------------------------------------------------+

int start()

{

int limit;

double a;

int counted_bars = IndicatorCounted();

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Bars - counted_bars;

for(int i = 0; i < limit; i++)

{

a = 0;

for(int j = 0; j < nPeriod; j++)

{

a = a + (iHigh(NULL, 0, i + j) + iLow(NULL, 0, i + j) + iClose(NULL, 0, i + j) * 2) / 4;

}

MaBuffer[i] = a / nPeriod;

//-----

r = iRSI(NULL, 0, nPeriod, PRICE_WEIGHTED, i);

Deviation = iATR(NULL, 0, nPeriod, i) * RossiKoeff;

//-----

if(iHigh(NULL, 0, i) > MaBuffer[i] && iClose(NULL, 0, i) > MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] + r * Point * Deviation;

}

else if(iLow(NULL, 0, i) < MaBuffer[i] && iClose(NULL, 0, i) < MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] - (100 - r) * Point * Deviation;

}

else

{

RSIBuffer[i] = MaBuffer[i];

}

}

//-----

return(0);

}

//+------------------------------------------------------------------+

MQL4 Comments
16309
MQL4 Comments 2010.06.29 07:52  
basisforex:

Идея Rossi:

/*------------------------------------------------------------------+

| Rsi_Bands_B2.mq4 |

| Copyright © 2010 |

| basisforex@gmail.com |

+------------------------------------------------------------------*/

#property copyright "Copyright © 2010, basisforex@gmail.com"

#property link "basisforex@gmail.com"

//-----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Yellow

//-----

extern int nPeriod = 13;

extern int RossiKoeff = 300;// find value by testing

extern int MaShift = 0;

//-----

double Deviation, r;

double MaBuffer[];

double RSIBuffer[];

//+------------------------------------------------------------------+

int init()

{

SetIndexShift(0, MaShift);

SetIndexShift(1, MaShift);

//-----

SetIndexBuffer(0, MaBuffer);

SetIndexBuffer(1, RSIBuffer);

//-----

SetIndexStyle(0, DRAW_LINE, STYLE_DOT);

SetIndexStyle(1, DRAW_LINE);

//-----

SetIndexLabel(0, "MA");

SetIndexLabel(1, "RSI");

//-----

return(0);

}

//+------------------------------------------------------------------+

int start()

{

int limit;

double a;

int counted_bars = IndicatorCounted();

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Bars - counted_bars;

for(int i = 0; i < limit; i++)

{

a = 0;

for(int j = 0; j < nPeriod; j++)

{

a = a + (iHigh(NULL, 0, i + j) + iLow(NULL, 0, i + j) + iClose(NULL, 0, i + j) * 2) / 4;

}

MaBuffer[i] = a / nPeriod;

//-----

r = iRSI(NULL, 0, nPeriod, PRICE_WEIGHTED, i);

Deviation = iATR(NULL, 0, nPeriod, i) * RossiKoeff;

//-----

if(iHigh(NULL, 0, i) > MaBuffer[i] && iClose(NULL, 0, i) > MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] + r * Point * Deviation;

}

else if(iLow(NULL, 0, i) < MaBuffer[i] && iClose(NULL, 0, i) < MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] - (100 - r) * Point * Deviation;

}

else

{

RSIBuffer[i] = MaBuffer[i];

}

}

//-----

return(0);

}

//+------------------------------------------------------------------+


Но индикатор как не работал так и не работает - снова вертикальные линии! Исправьте!
MQL4 Comments
16309
MQL4 Comments 2010.06.29 09:24  
AntonYM:
basisforex:

Идея Rossi:

/*------------------------------------------------------------------+

| Rsi_Bands_B2.mq4 |

| Copyright © 2010 |

| basisforex@gmail.com |

+------------------------------------------------------------------*/

#property copyright "Copyright © 2010, basisforex@gmail.com"

#property link "basisforex@gmail.com"

//-----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Yellow

//-----

extern int nPeriod = 13;

extern int RossiKoeff = 300;// find value by testing

extern int MaShift = 0;

//-----

double Deviation, r;

double MaBuffer[];

double RSIBuffer[];

//+------------------------------------------------------------------+

int init()

{

SetIndexShift(0, MaShift);

SetIndexShift(1, MaShift);

//-----

SetIndexBuffer(0, MaBuffer);

SetIndexBuffer(1, RSIBuffer);

//-----

SetIndexStyle(0, DRAW_LINE, STYLE_DOT);

SetIndexStyle(1, DRAW_LINE);

//-----

SetIndexLabel(0, "MA");

SetIndexLabel(1, "RSI");

//-----

return(0);

}

//+------------------------------------------------------------------+

int start()

{

int limit;

double a;

int counted_bars = IndicatorCounted();

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Bars - counted_bars;

for(int i = 0; i < limit; i++)

{

a = 0;

for(int j = 0; j < nPeriod; j++)

{

a = a + (iHigh(NULL, 0, i + j) + iLow(NULL, 0, i + j) + iClose(NULL, 0, i + j) * 2) / 4;

}

MaBuffer[i] = a / nPeriod;

//-----

r = iRSI(NULL, 0, nPeriod, PRICE_WEIGHTED, i);

Deviation = iATR(NULL, 0, nPeriod, i) * RossiKoeff;

//-----

if(iHigh(NULL, 0, i) > MaBuffer[i] && iClose(NULL, 0, i) > MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] + r * Point * Deviation;

}

else if(iLow(NULL, 0, i) < MaBuffer[i] && iClose(NULL, 0, i) < MaBuffer[i])

{

RSIBuffer[i] = MaBuffer[i] - (100 - r) * Point * Deviation;

}

else

{

RSIBuffer[i] = MaBuffer[i];

}

}

//-----

return(0);

}

//+------------------------------------------------------------------+


Но индикатор как не работал так и не работает - снова вертикальные линии! Исправьте!


в настройках в окошке надо уменьшать koeff до 10 или ниже, пока РСИ не станет "нормальным"

manual tuning for koeff in range 1...500

/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий