- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TB公式程序化实例
八、技术指标编写
8-1、技术指标技术指标是最常用的一类公式,它通过计算一系列的数学公式,在每个Bar都返回值,这些值在图表模块中输出为线条、柱状图、点等表现形式,通过分析图形特点、走势和曲线帮助客户分析行情走势,得出合理的交易判断。
当技术指标应用在图表中时,您可以设置技术指标各输出值的表现形式,以及颜色、粗细等,如下图的点,线,柱状图所示:
示例,技术指标RSI,脚本如下:
Params
Numeric Length(14);
Numeric OverSold(20);
Numeric OverBought (80);
Vars
Numeric RSIValue(0);
Numeric RSIColor(-1);
Begin
RSIValue = RSI(Close,Length);
If (RSIValue OverBought)
{
RSIColor = RED;
}Else If (RSIValue OverSold)
{
RSIColor = CYAN;
}
PlotNumeric(RSI1, RSIValue, RSIColor);
PlotNumeric(超卖, OverSold);
PlotNumeric(超买, OverBought);
If CrossOver(RSIValue,OverSold)
{
Alert(Indicator exiting oversold zone);
}
If CrossUnder(RSIValue, OverBought)
{
Alert(Indicator exiting overbought zone);
}
End
公式应用RSI调用RSI内建用户函数计算出结果,然后判断其返回值和超买,超卖的关系,设置显示颜色,并产生报警信息。
公式应用在输出数据时,我们是通过输出值的名称来进行识别,名称相同则认为是一个数据,如下的代码,后面语句的输出数据将会覆盖前面语句的输出数据。
PlotNumeric(Test,10);
PlotNumeric(Test,20);
最后Test输出的数据为20,而不是10。
常用的技术指标类函数有PlotNumeric、PlotString、PlotBool、UnPlot、Alert。
8-2、常用的技术指标myRSI用户函数 Params
Numeric Length(14) ;
Vars
NumericSeries NetChgAvg( 0 );
NumericSeries TotChgAvg( 0 );
Numeric SF( 0 );
Numeric Change( 0 );
Numeric ChgRatio( 0 ) ;
Numeric RSIValue;
Begin
If(CurrentBar = Length - 1)
{
NetChgAvg = ( Close - Close[Length] ) / Length ;
TotChgAvg = Average( Abs( Close - Close[1] ), Length ) ;
}Else
{
SF = 1/Length;
Change = Close - Close[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;
例2:RSI指标交易系统
Params
Numeric Length(14) ;
Numeric Lots(1);
Vars
NumericSeries RSIValue;
Begin
RSIValue = myRSI(Length);
PlotNumeric(RSI,RSIValue);
if (Marketposition 1 and RSIValue[1] 50)
{
Buy(lots,open);
}
if (Marketposition -1 and RSIValue[1]
文档评论(0)