如何用自编RSI函数表示RSI值的增大或降低? [开拓者 TB]
-
咨询内容:
完全复制系统的RSI做了个自编RSI函数: RSIvalue(length)
在我的一个交易策略中需要用到“前一根K线的RSI值比前面第二根K线的RSI值变大了”作为判断条件,
if(RSIvalue[1](length)>RSIvalue[2](length))
{
}
这样表示可以吗?
//------------------------------------------------------------------------
// 简称: RSIvalue
// 名称: 计算RSI值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
NumericSeries RSIValue;
NumericSeries CP;
Begin
CP=Close;
If(CurrentBar <= Length - 1)
{
NetChgAvg = ( CP - CP[Length] ) / Length ;
TotChgAvg = Average( Abs( CP - CP[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = CP - CP[1] ;
NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;
}
If( TotChgAvg <> 0 )
{
ChgRatio = NetChgAvg / TotChgAvg;
}else
{
ChgRatio = 0 ;
}
RSIValue = 50 * ( ChgRatio + 1 );
Return RSIValue;
End
//------------------------------------------------------------------------来源:CXH99.COM
-
TB技术人员:
自已顶一下。
或者我将RSI的自编函数中的Close用Close[1]表示,如下:
//------------------------------------------------------------------------
// 简称: RSIvalue
// 名称: 计算RSI值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
NumericSeries RSIValue;
NumericSeries CP;
Begin
CP=Close[1];//修改了
If(CurrentBar <= Length - 1)
{
NetChgAvg = ( CP - CP[Length] ) / Length ;
TotChgAvg = Average( Abs( CP - CP[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = CP - CP[1] ;
NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;
}
If( TotChgAvg <> 0 )
{
ChgRatio = NetChgAvg / TotChgAvg;
}else
{
ChgRatio = 0 ;
}
RSIValue = 50 * ( ChgRatio + 1 );
Return RSIValue;
End
//------------------------------------------------------------------------
然后if条件可以这样写了:
if(RSIvalue(length)>RSIvalue(length))
{
}
但我实际在编译这个RSI自编函数时无法通过编译(将原RSI中的Close改成Close[1]之后,无法通过编译了) -
TB客服:
自已顶一下。
或者我将RSI的自编函数中的Close用Close[1]表示,如下:
//------------------------------------------------------------------------
// 简称: RSIvalue
// 名称: 计算RSI值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
NumericSeries RSIValue;
NumericSeries CP;
Begin
CP=Close[1];//修改了
If(CurrentBar <= Length - 1)
{
NetChgAvg = ( CP - CP[Length] ) / Length ;
TotChgAvg = Average( Abs( CP - CP[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = CP - CP[1] ;
NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;
}
If( TotChgAvg <> 0 )
{
ChgRatio = NetChgAvg / TotChgAvg;
}else
{
ChgRatio = 0 ;
}
RSIValue = 50 * ( ChgRatio + 1 );
Return RSIValue;
End
//------------------------------------------------------------------------
然后if条件可以这样写了:
if(RSIvalue(length)>RSIvalue(length))
{
}
但我实际在编译这个RSI自编函数时无法通过编译(将原RSI中的Close改成Close[1]之后,无法通过编译了) -
网友回复:
自已顶一下。
或者我将RSI的自编函数中的Close用Close[1]表示,如下:
//------------------------------------------------------------------------
// 简称: RSIvalue
// 名称: 计算RSI值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
NumericSeries RSIValue;
NumericSeries CP;
Begin
CP=Close[1];//修改了
If(CurrentBar <= Length - 1)
{
NetChgAvg = ( CP - CP[Length] ) / Length ;
TotChgAvg = Average( Abs( CP - CP[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = CP - CP[1] ;
NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;
}
If( TotChgAvg <> 0 )
{
ChgRatio = NetChgAvg / TotChgAvg;
}else
{
ChgRatio = 0 ;
}
RSIValue = 50 * ( ChgRatio + 1 );
Return RSIValue;
End
//------------------------------------------------------------------------
然后if条件可以这样写了:
if(RSIvalue(length)>RSIvalue(length))
{
}
但我实际在编译这个RSI自编函数时无法通过编译(将原RSI中的Close改成Close[1]之后,无法通过编译了) - 网友回复:
或者我将RSI的自编函数中的Close用Close[1]表示,如下:
//------------------------------------------------------------------------
// 简称: RSIvalue
// 名称: 计算RSI值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
NumericSeries RSIValue;
NumericSeries CP;
Begin
CP=Close[1];//修改了
If(CurrentBar <= Length - 1)
{
NetChgAvg = ( CP - CP[Length] ) / Length ;
TotChgAvg = Average( Abs( CP - CP[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = CP - CP[1] ;
NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;
TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;
}
If( TotChgAvg <> 0 )
{
ChgRatio = NetChgAvg / TotChgAvg;
}else
{
ChgRatio = 0 ;
}
RSIValue = 50 * ( ChgRatio + 1 );
Return RSIValue;
End
//------------------------------------------------------------------------
然后if条件可以这样写了:
if(RSIvalue(length)>RSIvalue(length))
{
}
但我实际在编译这个RSI自编函数时无法通过编译(将原RSI中的Close改成Close[1]之后,无法通过编译了)
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容