双均线策略(TB版)_第1页
双均线策略(TB版)_第2页
双均线策略(TB版)_第3页
双均线策略(TB版)_第4页
双均线策略(TB版)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双均线策略(TB版)一、策略概述双均线策略是一种基于移动平均线的交易策略,主要通过对比快速均线(短周期均线)和慢速均线(长周期均线)的关系来判断市场的买卖点。结合了价格与均线的关系来制定交易信号。二、策略参数FastLength:快速均线的周期长度,默认为5。SlowLength:慢速均线的周期长度,默认为20。DslowLength(可选):更深层次的慢速均线周期长度,用于增强信号准确性,默认为200。三、变量声明AvgValue1:存储快速均线的值。AvgValue2:存储慢速均线的值。AvgValue3(可选):存储更深层次的慢速均线的值。四、策略逻辑计算均线:根据给定的周期长度(FastLength、SlowLength、DslowLength),计算对应的移动平均线值,并绘制到图表上。交易信号生成:买入信号:当前未持有多单(MarketPosition<>1),且前一快速均线(AvgValue1[1])大于前一慢速均线(AvgValue2[1]),同时当前K线最高价大于等于前一深层慢速均线(AvgValue3[1])时,以开盘价或深层慢速均线值的较大者开仓买入。卖出信号:当前持有多单(MarketPosition==1),且前一快速均线小于前一慢速均线时,以开盘价平仓。卖出开空信号:当前未持有空单(MarketPosition<>-1),且前一快速均线小于前一慢速均线,同时当前K线最低价小于等于前一深层慢速均线时,以开盘价或深层慢速均线值的较小者开仓卖出。买入平空信号:当前持有空单(MarketPosition==-1),且前一快速均线大于前一慢速均线时,以开盘价平仓。集合竞价和小节休息过滤:如果当前处于集合竞价阶段或小节休息时间,则直接返回,不执行交易逻辑。五、可选策略简化版仅使用FastLength和SlowLength参数:忽略DslowLength参数,仅通过快速均线和慢速均线的对比来生成交易信号。买入信号:当前未持有多单,且前一快速均线大于前一慢速均线时,以开盘价开仓买入。卖出开空信号:当前未持有空单,且前一快速均线小于前一慢速均线时,以开盘价开仓卖出。六、注意事项在实际应用中,可能需要根据市场情况调整均线参数。集合竞价和小节休息过滤是避免在不稳定的市场环境下进行交易的重要措施。深层慢速均线(DslowLength)的引入可以进一步增强信号的准确性,但也可能导致交易机会的减少。代码中的AvgValue3[1]引用确保了使用的是前一时刻的值进行判断,这是交易策略中常见的做法。策略信号代码:ParamsNumericFastLength(5);NumericSlowLength(20);NumericDslowLength(200);VarsNumericSeriesAvgValue1;NumericSeriesAvgValue2;NumericSeriesAvgValue3;BeginAvgValue1=AverageFC(Close,FastLength);AvgValue2=AverageFC(Close,SlowLength);AvgValue3=AverageFC(Close,DslowLength);PlotNumeric("MA1",AvgValue1);PlotNumeric("MA2",AvgValue2);PlotNumeric("MA3",AvgValue3);If(!CallAuctionFilter())Return;If(MarketPosition<>1&&AvgValue1[1]>AvgValue2[1]&&High>=AvgValue3[1]){Buy(1,Max(Open,AvgValue3[1]));}If(MarketPosition==1&&AvgValue1[1]<AvgValue2[1]){Sell(1,Open);}If(MarketPosition<>-1&&AvgValue1[1]<AvgValue2[1]&&Low<=AvgValue3[1]){SellShort(1,Min(Open,AvgValue3[1]));}If(MarketPosition==-1&&AvgValue1[1]>AvgValue2[1]){BuyToCover(1,Open);}End```注意:我已经将`AvgValue3`的引用从`AvgValue3`改为了`AvgValue3[1]`。因为通常在交易脚本中,我们需要引用前一时刻(即当前K线的前一根K线)的值来进行判断。不过是否修改看脚本。代码解释:ParamsNumericFastLength(5);//声明数值参数FastLength,初值5.NumericSlowLength(20);//声明数值参数SlowLength,初值20.NumericDslowLength(200);//声明数值参数DslowLength,初值200VarsNumericSeriesAvgValue1;//声明数值序列变量AvgValue1NumericSeriesAvgValue2;//声明数值序列变量AvgValue2NumericSeriesAvgValue3;//声明数值序列变量AvgValue3BeginAvgValue1=AverageFC(Close,FastLength);//求5日均线AvgValue2=AverageFC(Close,SlowLength);//求20日均线AvgValue3=AverageFC(Close,DslowLength);//求200日均线PlotNumeric("MA1",AvgValue1);//画5日均线。PlotNumeric("MA2",AvgValue2);//画20日均线。PlotNumeric("MA3",AvgValue3);//画200日均线。If(!CallAuctionFilter())Return;//集合竞价和小节休息过滤。If(MarketPosition<>1&&AvgValue1[1]>AvgValue2[1]&&High>=AvgValue3[1])//假如当前没用持多单,且前一5日均线大于前一20日均线,且当前高价大于或等于200日均线。{Buy(1,Max(Open,AvgValue3));//开仓买入,这里的细节处理就是把200日均线与当前k线开盘价比较,取较大值。}If(MarketPosition==1&&AvgValue1[1]<AvgValue2[1])//假如当前持有多仓,且前一5日均线小于前一20日均线。{Sell(1,Open);//平仓}If(MarketPosition<>-1&&AvgValue1[1]<AvgValue2[1]&&Low<=AvgValue3[1])//假如当前没有持空单,且前一5日均线小于前一20日均线,且当前低价小于前一200日均线。{SellShort(1,Min(Open,AvgValue3));//开仓卖出,细节处理就是把当前k线的开盘价与200日均线值比较,取较小值}If(MarketPosition==-1&&AvgValue1[1]>AvgValue2[1])//当前持有空单,且前一5日均线大于前一20日均线{BuyToCover(1,open);//平仓。}End另一版版策略代码:ParamsNumericFastLength(5);NumericSlowLength(20);VarsNumericSeriesAvgValue1;NumericSeriesAvgValue2;BeginAvgValue1=AverageFC(Close,FastLength);AvgValue2=AverageFC(Close,SlowLength);PlotNumeric("MA1",AvgValue1);PlotNumeric("MA2",AvgValue2);//集合竞价和小节休息过滤If(!CallAuctionFilter())Return;If(MarketPosition<>1&&AvgValue1[1]>AvgValue2[1]){Buy(1,Open);}If(MarketPosition<>-1&&AvgValue1[1]<AvgValue2[1]){SellShort(1,Open);}End另一版本代码注解如下://Params块用于声明参数Params//声明一个名为FastLength的数值参数,并初始化为5NumericFastLength(5);//声明一个名为SlowLength的数值参数,并初始化为20NumericSlowLength(20);//Vars块用于声明变量Vars//声明一个名为AvgValue1的数值序列变量,用于存储快速移动平均线的值NumericSeriesAvgValue1;//声明一个名为AvgValue2的数值序列变量,用于存储慢速移动平均线的值NumericSeriesAvgValue2;//Begin块是脚本的主体部分Begin//计算快速移动平均线(5日均线),并将结果存储在AvgValue1变量中AvgValue1=AverageFC(Close,FastLength);//计算慢速移动平均线(20日均线),并将结果存储在AvgValue2变量中AvgValue2=AverageFC(Close,SlowLength);//绘制快速移动平均线到图表上,标签为"MA1"PlotNumeric("MA1",AvgValue1);//绘制慢速移动平均线到图表上,标签为"MA2"PlotNumeric("MA2",AvgValue2);//集合竞价和小节休息过滤//如果集合竞价或小节休息过滤器返回false,则直接返回,不执行后续的交易逻辑If(!CallAuctionFilter())Return;//如果当前没有持有多单(MarketPosition不等于1),并且前一5日均线(AvgValue1[1])大于前一20日均线(AvgValue2[1])If(MarketPosition<>1&&AvgValue1[1]>AvgValue2[1]){//则买入1手,以开盘价Open为基准Buy(1,Open);}//注意:这里似乎有一个逻辑错误,原代码中的SellShort条件似乎是不完整的//这里假设的逻辑是:如果当前没有持有空单(MarketPosition不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论