SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 3);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 1);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1);
SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 1);
SetIndexStyle(4, DRAW_HISTOGRAM, STYLE_SOLID, 1);
SetIndexBuffer(5, 正缓组);
SetIndexBuffer(6, 负缓组);
简称= RSIOMA( +Ma周期+ )
IndicatorShortName(简称);
SetIndexDrawBegin(0, Ma周期);
return(0);
}
//------------主函数-------------+
int start()
{
SetLevelValue(0, 开买水平线);
SetLevelValue(1, 开卖水平线);
SetLevelValue(2, MainTrendLong);
SetLevelValue(3, MainTrendShort);
SetLevelStyle(STYLE_DOT, 1, Yellow);
int 已计= IndicatorCounted();
double 前后差幅;
double 负向均值;
double 正向均值;
if(Bars =Ma周期)
return(0);
if(已计 1)
for(int i=1; i =Ma周期; i++)
蓝RSI[Bars-i]= 0.0;
i= Bars-Ma周期-1;
if(已计 =Ma周期)
i= Bars-已计-1;
while(i =0){
double 跌差和= 0.0,
涨差和= 0.0;
//--使用
if(i==Bars-Ma周期-1){
int k= Bars-2;
while(k =i){
double 现Mak= iMA(Symbol(), 0, Ma周期, 0, MODE_EMA, PRICE_CLOSE, k);
double 前Mak= iMA(Symbol(), 0, Ma周期, 0, MODE_EMA, PRICE_CLOSE, k+1);
前后差幅= 现Mak-前Mak;
if(前后差幅 0)
涨差和 += 前后差幅; // +涨差幅和
else
跌差和 -= 前后差幅; // -跌差幅和
k--;
}
正向均值= 涨差和/Ma周期; // 正向均值
负向均值= 跌差和/Ma周期; // 负向均值
}
//--使用
else{
double 现Mai= iMA(Symbol(), 0, Ma周期, 0, MODE_EMA, PRICE_CLOSE, i);
double 前Mai= iMA(Symbol(), 0, Ma周期, 0, MODE_EMA, PRICE_CLOSE, i+1);
前后差幅= 现Mai-前Mai;
if(前后差幅 0)
涨差和= 前后差幅;
else
跌差和= -前后差幅;
正向均值= (正缓组[i+1]*(Ma周期-1)+涨差和)/Ma周期;
负向均值= (负缓组[i+1]*(Ma周期-1)+跌差和)/Ma周期;
}
//--
正缓组= 正向均值;
负缓组= 负向均值;
//--计算RSI
if(负向均值==0.0) // 先过滤除数为0的情况
蓝RSI= 0.0;
else{
蓝RSI= 100.0-100.0/(1+正向均值/负向均值);
//--按条件显示区域色柱
bdn= 0;
bup= 0;
sdn= 0;
sup= 0;
if(蓝RSI MainTrendLong)
bup= -10;
if(蓝RSI MainTrendShort)
bdn= -10;
if(蓝RSI 20 蓝RSI 蓝RSI[i+1])
sup= -10;
if(蓝RSI 80 蓝RSI 蓝RSI[i+1])
sdn= -10;
}
i--;
}
return(0);
}
//+----------------------------------------------+
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!