策略修改

问题1;两条均线不显示 问题2;MACD快线和0轴也不显示 问题3;没有交易信号 //只做多双均线,MA1金叉MA3 同时满足MACD快线上穿0轴 //固定止盈,开仓价格盈利20个点 止盈点位是可变参数 //固定止损,开仓价格亏损20个点 止损点位是可变参数 //开仓手数是可变参数 Params Numeric Lots(1); Numeric TakeProfitSet(20);// 止赢设置 Numeric StopLossSet(20);// 止损设置 Numeric FastLength(12);//MACD周期设置 Numeric SlowLength(26);//MACD周期设置 Numeric MACDLength(9);//MACD周期设置 Vars Numeric MA1; Numeric MA3; Numeric AvgMACD; Numeric MACDValue; Series<Numeric> MACDDiff; Series<Numeric> my_EntryPrice; Series<Bool> B; Series<Bool> S; Series<Bool> M(false,2);//MACD中的序列布尔型变量 Series<Bool> N(false,2);//MACD中的序列布尔型变量 Events OnBar(ArrayRef<Integer> indexs) { MA1 = AverageFC(Close,5); MA3 = AverageFC(Close,20); PlotNumeric("MA1",MA1); PlotNumeric("MA3",MA3); B = CrossOver(MA1,MA3); S = CrossUnder(MA1,MA3); Range[0:DataSourceSize() - 1] MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线 AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线 MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱 PlotNumeric("MACDDiff",MACDDiff); PlotNumeric("zero",0); M = CrossOver(MACDDiff,0); N = CrossUnder(MACDDiff,0); //Commentary("M="+IIFString(M,"True","False"));//什么意思不知道? //Commentary("N="+IIFString(N,"True","False"));//什么意思不知道? if(B) PlotBool("金叉",true); if(MarketPosition<>1 and B[1] And M[1])//在空仓的情况下,MA1和MA3金叉,dif快线向上过0轴,向前回溯1根K线 { buy(Lots,OPEN); my_EntryPrice = Open; } if(MarketPosition==1 and S[1])////向前回溯1根K线 { sell(Lots,OPEN); } //////止损代码 If(MarketPosition==1 And low-my_EntryPrice<-StopLossSet)//持有多单,止损条件满足,亏损20 { Sell(Lots,Min(Open,EntryPrice-StopLossSet)); } //////止盈代码 If(MarketPosition==1 And high-my_EntryPrice>TakeProfitSet)//持有多单,止盈条件满足,盈利20 { Sell(Lots,Max(Open,my_EntryPrice+TakeProfitSet)); } }

针对于你的问题,解答如下 问题1;两条均线不显示 图中主图已经显示出来 问题2;MACD快线和0轴也不显示 图中副图已显示出来 你看看是否是你想要的结果 更多后续编程辅助服务,欢迎扫码加入企业微信

回复:哪里有问题你能帮我说出来吗? 我画了一个笑脸也没有显示,也没有交易信号呀 你这个图片上。

回复:你主图和副图是怎么拆分的?

策略问题看置顶的投稿贴

回复:现在是主图和幅图不分,能解决一下吗?

回复:其实之前的社区问题,我们研发同事已经回答过类似问题,链接:http://www.tbquant.net/forum/562.html?cid=all 白天也给了您搜索Plot相关文档的方法,不管怎么说踏踏实实地学习和练习还是必须的。 为了给大家一个示例,我参考前面那个帖子和帮助文档,写了个主图布林和子图MACD的例子,供大家参考。实话说,之前也看过那个回帖,但一直没有动手去写,到今天要写的时候,我同样是写不出来,花了3个小时,一边学习一边看帮助,还反复琢磨了好久才达到我的目标。这个学习进度也给各位用户上帝参考下。 //------------------------------------------------------------------------ // 简称: Ex_BollAndMacd // 名称: 示例--主图附图同时显示指标 // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Params Numeric Length(20); //布林周期 Numeric Offset(2); //标准差倍数 Numeric FastLength(12); //MACD参数1 Numeric SlowLength(26); //MACD参数2 Numeric MACDLength(9); //MACD参数3 Vars Plot plt1; //主图plt1 Plot plt2; //主图plt2 Array<Numeric> xData; //x轴数据集 Array<Numeric> yData; //y轴数据集 Series<Numeric> MdLine; //布林中轨 Numeric Band; Series<Numeric> MACDDiff; //MACDDiff Numeric AvgMACD; //MACDDEA Numeric MACDValue; //MACD Events OnInit() { plt2.figure(0); plt2.setOption("plt2","x-format","time"); } OnBar(ArrayRef<Integer> indexs) { MdLine = AverageFC(Close,Length); Band = StandardDev(Close,Length,2); xData[0] = Date+Time; yData[0] = MdLine; plt1.setOption("plt1","color",Magenta); plt1.line("MdLine",xData,yData); yData[0] = MdLine + Offset * Band; plt1.setOption("plt1","color",Yellow); plt1.line("UpLine",xData,yData); yData[0] = MdLine - Offset * Band; plt1.setOption("plt1","color",Cyan); plt1.line("DnLine",xData,yData); yData[0] = 0; plt2.line("零线",xData,yData); MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; yData[0] = MACDDiff; plt2.line("MACDDiff",xData,yData); AvgMACD = XAverage(MACDDiff,MACDLength); yData[0] = AvgMACD; plt2.line("MACDDEA",xData,yData); MACDValue = MACDDiff - AvgMACD; yData[0] = MACDValue; If(yData[0]>=0) { plt2.setOption("MACD","color",Red); } Else { plt2.setOption("MACD","color",Green); } plt2.barv("MACD",xData,yData); }