版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
RSl交易系统(TB版)核心交易逻辑:一、RSI计算函数参数定义NumericLength(14):计算周期,初始值为14。NumericOverSold(30):超卖阈值,初始值为30。NumericOverBought(70):超买阈值,初始值为70。变量定义NumericSeriesNetChgAvg(0):平均净变化值序列,初始值为0。NumericSeriesTotChgAvg(0):总变化平均值序列,初始值为0。NumericSF(0):平滑因子,初始值为0。NumericChange(0):价格变化值,初始值为0。NumericChgRatio(0):变化比率,初始值为0。NumericRSIValue:RSI值,用于存储计算后的RSI值。计算逻辑初始化阶段(当前K线数小于等于周期数减1时):计算NetChgAvg为当前收盘价与14根K线前收盘价的差值除以14。计算TotChgAvg为当前收盘价与前一根收盘价差值的绝对值的14周期平均值。计算阶段(当前K线数大于周期数减1时):更新NetChgAvg和TotChgAvg使用指数平滑法,平滑因子SF为1/周期数。RSI值计算:如果TotChgAvg不为0,则计算ChgRatio为NetChgAvg除以TotChgAvg。RSI值=50*(ChgRatio+1)。二、RSI信号交易逻辑参数定义(新增参数)NumericStopPoint(45):止损点,此参数直接用于RSI交易信号计算。NumericProfitPoint(100):盈利点,此参数在给出的文档中未直接用于RSI交易信号计算。NumericStopLossSet(30):止损设置,用于计算止损价格。交易逻辑入场逻辑:当不在多头仓位且RSI值小于30时,以开盘价买入。当不在空头仓位且RSI值大于70时,以开盘价卖空。出场逻辑:当持仓多头且价格触及入场价减去止损设置乘以最小变动点时,以该价格卖出平仓。当持仓空头且价格触及入场价加上止损设置乘以最小变动点时,以该价格买回平仓。持仓期间价格跟踪:跟踪并记录持仓后的最高价和最低价,用于可能的止损或盈利计算。三、辅助逻辑集合竞价和小节休息过滤:通过CallAuctionFilter()函数过滤不适合交易的时段。交易日志记录:通过Commentary函数输出交易相关信息,如最高价、最低价、入场价等。四、RSI交易系统通过计算RSI值来判断市场的超买和超卖状态,并据此生成交易信号。系统包含入场、出场逻辑,以及持仓期间的价格跟踪和交易日志记录功能。通过参数配置和逻辑设计,该系统旨在为交易者提供基于市场动量的交易指导。函数Average(求平均)代码解释:ParamsNumericSeriesPrice(1);//声明数值型序列参数Price,赋值为1.//NumericLength(10);//声明数值型参数Length,赋值为10.//VarsNumericAvgValue;//声明数值型变量AvgValude。//BeginAvgValue=Summation(Price,Length)/Length;//这个Summation函数,我们之前已经说过,这边直译就是:求10个周期的平均价格。//ReturnAvgValue;//把AvgValue值返回给主函数。//EndRSI指标代码:ParamsNumericLength(14);//声明数值型参数Length,初始值为14.//NumericOverSold(30);//声明数值型参数OverSold,初始值为30.//NumericOverBought(70);//声明数值型参数OverBought,初始值为70.//VarsNumericSeriesNetChgAvg(0);//声明数值型序列变量NetChgAvg,赋值0.//NumericSeriesTotChgAvg(0);//声明数值型序列变量TotChgAvg,赋值0.//NumericSF(0);//声明数值型变量SF,赋值0.//NumericChange(0);//声明数值型变量Change,赋值0.//NumericChgRatio(0);//声明数值型变量ChgRatio,赋值0.//NumericRSIValue;//声明数值型变量RSIValue。//BeginIf(CurrentBar<=Length-1)//假如当前k线数位小于等于14-1,执行花括号语句。//{NetChgAvg=(Close-Close[Length])/Length;//一样的Close[Length],就是从当前K线数位倒推回去14根,则句子意思:NetChgAvg=(当前收盘价-前14根k线的收盘价)/14.//TotChgAvg=Average(Abs(Close-Close[1]),Length);//先说这个Abs,意思为返回参数的绝对值,参数绝对值是参数去掉正负号后的数值。所以Abs里边的括号得到数值肯定是正数。Average函数,同样的,就是把参数的绝对值跟周期,返回去求值,再把值给反馈回来就行。语句意思:TotChgAvg的值等于,求当前收盘价-去前一根收盘价的14周期均值。//}Else//就是第14根k线后的,执行下列语句。//{SF=1/Length;//随周期变化的比重系数SF。//Change=Close-Close[1];//当前k线收盘价-前一根收盘价。//NetChgAvg=NetChgAvg[1]+SF*(Change-NetChgAvg[1]);//这回不用改成数学式的表达式了,直译它,NetChgAvg=前一个NetChgAvg值+比重系数SF*(变量Change-前一个NetChgAvg值。)TotChgAvg=TotChgAvg[1]+SF*(Abs(Change)-TotChgAvg[1]);//同理,直译了,记得英文字符后的[1],意思都是从当前往回推,中括号里的值是根据你的需求改的。//}If(TotChgAvg<>0)//从上面公式求得的TotChgAvg数值,假如不等于0.//{ChgRatio=NetChgAvg/TotChgAvg;//变量ChgRatio值等于变量NetChgAvg值除以变量TotChgAvg值。//}else//变量TotChgAvg等于0的情况。//{ChgRatio=0;//等于0了。//}RSIValue=50*(ChgRatio+1);//用上面的得到的值,根据这个公式,可以求出RSIValue的值了。//PlotNumeric("RSI",RSIValue);//线RSI的值为RSIValue。//PlotNumeric("超买",OverBought);//画出超买线,值为OverBought=70。//PlotNumeric("超卖",OverSold);//画出超卖线,值为OverSold=30。//EndRSI信号代码:ParamsNumericLength(14);NumericOverSold(30);NumericOverBought(70);NumericStopPoint(45);NumericProfitPoint(100);NumericStopLossSet(30);VarsNumericSeriesNetChgAvg(0);NumericSeriesTotChgAvg(0);NumericSF(0);NumericChange(0);NumericChgRatio(0);NumericSeriesRSIValue;NumericSeriesHighestAfterEntry;NumericSeriesLowestAfterEntry;NumericMinPoint;NumericMyEntryPrice;Numericmyprice;Numericmyexitprice;BeginIf(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);//集合竞价和小节休息过滤If(!CallAuctionFilter())Return;If(MarketPosition<>1&&RSIValue[1]<30){Buy(1,Open);}If(MarketPosition==1&&RSIValue[1]>70){Sell(1,Open);}If(MarketPosition<>-1&&RSIValue[1]>70){SellShort(1,Open);}If(MarketPosition==-1&&RSIValue[1]<30){BuyToCover(1,open);}If(BarsSinceentry==0){HighestAfterEntry=Close;LowestAfterEntry=Close;If(MarketPosition<>0){HighestAfterEntry=Max(HighestAfterEntry,AvgEntryPrice);LowestAfterEntry=Min(LowestAfterEntry,AvgEntryPrice);}}else{HighestAfterEntry=Max(HighestAfterEntry,High);LowestAfterEntry=Min(LowestAfterEntry,Low);}Commentary("HighestAfterEntry="+Text(HighestAfterEntry));Commentary("LowestAfterEntry="+Text(LowestAfterEntry));Commentary("MyEntryPrice="+Text(MyEntryPrice));MinPoint=MinMove*PriceScale;MyEntryPrice=AvgEntryPrice;If(MarketPosition==1){if(Low<=MyEntryPrice-StopLossSet*MinPoint){MyExitPrice=MyEntryPrice-StopLossSet*MinPoint;Sell(0,MyExitPrice);}}elseif(MarketPosition==-1){If(High>=MyEntryPrice+StopLossSet*MinPoint){MyExitPrice=MyEntryPrice+StopLossSet*MinPoint;BuyToCover(0,MyExitPrice);}}End信号代码注解:Params//参数定义NumericLength(14);//计算周期NumericOverSold(30);//超卖阈值NumericOverBought(70);//超买阈值NumericStopPoint(45);//止损点NumericProfitPoint(100);//盈利点NumericStopLossSet(30);//止损设置Vars//变量定义NumericSeriesNetChgAvg(0);//平均净变化值系列NumericSeriesTotChgAvg(0);//总变化平均值系列NumericSF(0);//平滑因子NumericChange(0);//价格变化值NumericChgRatio(0);//变化比率NumericSeriesRSIValue;//RSI值系列NumericSeriesHighestAfterEntry;//入场后的最高值系列NumericSeriesLowestAfterEntry;//入场后的最低值系列NumericMinPoint;//最小变动点NumericMyEntryPrice;//入场价格Numericmyprice;//价格Numericmyexitprice;//出场价格Begin//主程序开始If(CurrentBar<=Length-1)//如果当前柱数小于计算周期减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)//如果总变化平均值不为0{ChgRatio=NetChgAvg/TotChgAvg;//计算变化比率}else//否则{ChgRatio=0;//变化比率为0}RSIValue=50*(ChgRatio+1);//计算RSI值//集合竞价和小节休息过滤If(!CallAuctionFilter())Return;//如果不满足过滤条件,返回If(MarketPosition<>1&&RSIValue[1]<30)//如果仓位不为多头且RSI值小于超卖阈值{Buy(1,Open);//买入}If(MarketPosition==1&&RSIValue[1]>70)//如果仓位为多头且RSI值大于超买阈值{Sell(1,Open);//卖出}If(MarketPosition<>-1&&RSIValue[1]>70)//如果仓位不为空头且RSI值大于超买阈值{SellShort(1,Open);//卖空}If(MarketPosition==-1&&RSIValue[1]<30)//如果仓位为空头且RSI值小于超卖阈值{BuyToCover(1,open);//空头平仓}If(BarsSinceentry==0)//如果入场柱数为0{HighestAfterEntry=Close;//初始化入场后的最高值LowestAfterEntry=Close;//初始化入场后的最低值If(MarketPosition<>0)//如果仓位不为0{HighestAfterEntry=Max(HighestAfterEntry,AvgEntryPrice);//更新最高值LowestAfterEntry=Min(LowestAfterEntry,AvgEntryPrice);//更新最低值}}else//否则{HighestAfterEntry=Max(HighestAfterEntry,High);//更新最高值LowestAfterEntry=Min(Lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拨款委托书构建信任的桥梁3篇
- 安装工程委托书编写要点3篇
- 放弃保证书中的放弃义务解读3篇
- 安徽能源行业工程师劳动合同样本3篇
- 安装室内门合同3篇
- 断桥铝门窗设备采购合同书3篇
- 设计公司内部硅藻泥装饰协议
- 企业员工福利足疗师聘用协议
- 设立公司协议
- 水泥生产筒仓建设协议
- 现代农业旅游观光项目可行性研究报告
- 商丘工学院《物联网工程》2023-2024学年第一学期期末试卷
- 2024年标准设备安装分包合作合同版B版
- 幼儿艺术疗愈课程设计
- 大学生公共安全教育知到智慧树章节测试课后答案2024年秋郑州师范学院
- 2024年化学检验员(中级工)技能鉴定考试题库(附答案)
- 中南大学《创新创业导论》2023-2024学年第一学期期末试卷
- 【MOOC】中学化学教学设计与实践-北京师范大学 中国大学慕课MOOC答案
- GB 15930-2024建筑通风和排烟系统用防火阀门
- 2023-2024学年广东省深圳市宝安区五年级(上)期末英语试卷
- 2025年广东省春季高考学业水平考试数学试卷试题(含答案解析)
评论
0/150
提交评论