- 精华
- 0
- 在线时间
- 1234 小时
- UID
- 1896
- 积分
- 1979
- 帖子
- 117
- 阅读权限
- 70
- 注册时间
- 2008-7-16
- 最后登录
- 2013-11-16
- 精华
- 0
- UID
- 1896
- 积分
- 1979
- 帖子
- 117
- 主题
- 33
- 阅读权限
- 70
- 注册时间
- 2008-7-16
- 最后登录
- 2013-11-16
|
您移植的stepma感觉很棒 偶然看到qqe这个指标 脱胎于rsi 感觉不错 但很多mt4代码看不懂 能否移植一下 谢谢
//+------------------------------------------------------------------+
//| Qualitative Quantitative Estimation Indicator for Metatrader 4 |
//| Copyright © 2006Roman Ignatov |
//| mailto:roman.ignatov@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 200 Roman Ignatov"
#property link "mailto:roman.ignatov@gmail.com "
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Navy
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
#property indicator_color2 Navy
#property indicator_style2 STYLE_DOT
extern int SF = 5;
int RSI_Period = 14;
int Wilders_Period;
int StartBar;
double TrLevelSlow[];
double AtrRsi[];
double MaAtrRsi[];
double Rsi[];
double RsiMa[];
int init()
{
Wilders_Period = RSI_Period * 2 - 1;
if (Wilders_Period < SF)
StartBar = SF;
else
StartBar = Wilders_Period;
IndicatorBuffers(6);
SetIndexBuffer(0, RsiMa);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexLabel(0, "Value 1");
SetIndexDrawBegin(0, StartBar);
SetIndexStyle(1, DRAW_LINE, STYLE_DOT);
SetIndexBuffer(1, TrLevelSlow);
SetIndexLabel(1, "Value 2");
SetIndexDrawBegin(1, StartBar);
SetIndexBuffer(2, AtrRsi);
SetIndexBuffer(3, MaAtrRsi);
SetIndexBuffer(4, Rsi);
IndicatorShortName(StringConcatenat e("QQE(", SF, ")"));
return(0);
}
int start()
{
int counted, i;
double rsi0, rsi1, dar, tr, dv;
if(Bars <= StartBar)
return (0);
counted = IndicatorCounted();
if(counted < 1)
for(i = Bars - StartBar; i < Bars; i++)
{
TrLevelSlow = 0.0;
AtrRsi = 0.0;
MaAtrRsi = 0.0;
Rsi = 0.0;
RsiMa = 0.0;
}
counted = Bars - counted - 1;
for (i = counted; i >= 0; i--)
Rsi = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, i);
for (i = counted; i >= 0; i--)
{
RsiMa = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i);
AtrRsi = MathAbs(RsiMa[i + 1] - RsiMa);
}
for (i = counted; i >= 0; i--)
MaAtrRsi = iMAOnArray(AtrRsi, 0, Wilders_Period, 0, MODE_EMA, i);
i = counted + 1;
tr = TrLevelSlow;
rsi1 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i);
while (i > 0)
{
i--;
rsi0 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i);
dar = iMAOnArray(MaAtrRsi, 0, Wilders_Period, 0, MODE_EMA, i) * 4.236;
dv = tr;
if (rsi0 < tr)
{
tr = rsi0 + dar;
if (rsi1 < dv)
if (tr > dv)
tr = dv;
}
else if (rsi0 > tr)
{
tr = rsi0 - dar;
if (rsi1 > dv)
if (tr < dv)
tr = dv;
}
TrLevelSlow = tr;
rsi1 = rsi0;
}
return(0);
} |
|