问题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);
}