- 精华
- 0
- 在线时间
- 9 小时
- UID
- 270555
- 积分
- 9
- 帖子
- 6
- 阅读权限
- 10
- 注册时间
- 2018-9-25
- 最后登录
- 2018-12-6
- 精华
- 0
- UID
- 270555
- 积分
- 9
- 帖子
- 6
- 主题
- 1
- 阅读权限
- 10
- 注册时间
- 2018-9-25
- 最后登录
- 2018-12-6
|
Params // 常规变量定值
Numeric Length1(14) ; // 长期RSI周期为14天 1为长期
Numeric Length2(9); // 短期RSI周期为9天 2为短期
Numeric OverBought(70) ; // 超买
Vars // 序列变量可变
NumericSeries NetChgAvg1( 0 );
NumericSeries TotChgAvg1( 0 );
Numeric SF1( 0 );
NumericSeries Change( 0 );
NumericSeries ChgRatio1( 0 ) ;
NumericSeries ma;
NumericSeries RSIValue1;
NumericSeries NetChgAvg2( 0 );
NumericSeries TotChgAvg2( 0 );
Numeric SF2( 0 );
NumericSeries ChgRatio2( 0 ) ;
NumericSeries RSIValue2;
Begin
//计算RSIValue1的值
//公式 RSI=100×n天内收盘价上涨数之和的平均值÷(n天内收盘价上涨数之和的平均值+n天内收盘价下跌数之和的平均值)=100×n天内收盘价上涨数之和的平均值÷(n天内 每日收盘价与前一天的变化的绝对值 的平均值)
If(CurrentBar <= Length1 - 1) //当所索引的K线数值位(第n根)小于周期14-1时
{
NetChgAvg1 = Average(Summation(IIF(Close - Close[1]>0 , Close - Close[1], 0), Length1),Length1);//分子: 14天内 满足收盘价较前一天收盘价上涨的值加总后 的平均值
TotChgAvg1 = Average( Abs( Close - Close[1] ), Length1) ; //分母:14天内 每日收盘价与前一天的变化的绝对值 的平均值
}
Else //当所索引的K线数值位大于周期14-1时
{
SF1 = 1/Length1; // *SF1相当于除以周期14
Change = Close - Close[1] ; //计算14天内 每日收盘价与较前一天的变化
NetChgAvg1 = NetChgAvg1[1] + SF1 * ( Change - NetChgAvg1[1]); //分子:
//NetChgAvg1初始值为0,赋值 NetChgAvg1 = 前一天的NetChgAvg1 + [(两日中收盘价的变化 与 前一天的NetChgAvg1 的差)除以周期]
TotChgAvg1 = TotChgAvg1[1] + SF1* ( Abs( Change ) - TotChgAvg1[1]); //分母:
//TotChgAvg1初始值为0,赋值 TotChgAvg1 = 前一天的TotChgAvg1 + [(两日中收盘价的变化 与 前一天的TotChgAvg1 的差)除以周期]
}
If( TotChgAvg1 <> 0 ) //14天内收盘价变化的绝对值的均值不为零,即分母不为零
{
ChgRatio1 = NetChgAvg1 / TotChgAvg1;
}
Else
{
ChgRatio1 = 0 ;
}
RSIValue1 = 100* ChgRatio1; //计算长期RSI的值
PlotNumeric("RSI1",RSIValue1);
|
|