您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

如何用自编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  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容