我的策略(30分钟macd金叉时买入,60分钟macd值小于前一日时卖出),用的默认周期是60分钟,走完一根线以后。以下是我的策略。
Diff30:=stkindi('','macd.diff',0,4);//30 分钟 diff值
Dea30:= stkindi('','macd.dea',0,4);//30 分钟 dea值
Macd60:=stkindi('','macd.macd1',0,5);//60分钟macd值
If cross(diff30,dea30) and macd60>0.005 and tbuyholding(1)=0
then BEGIN
tbuy(1,10000/close,mkt);
SENDMAIL(1,'13913992413@139.COM', STKLABEL
& STKNAME & NUMTOSTR(CLOSE,2)& '《买》_【普14】','');
end
If macd60<ref(macd60,1) and tbuyholding(0)>0
then BEGIN
tsell(1,0,mkt);
SENDMAIL(1,'13913992413@139.COM', STKLABEL
& STKNAME & NUMTOSTR(CLOSE,2)& '《卖》_【普14】','');
End
今日9:32启动模拟,发现000550江铃汽车有预警,交易记录中有“000550 - 不支持该品种交易”(不支持该品种交易是不是与模拟帐户,同一时间多个触发有关?)。但从30分钟macd看,不可能金叉。如下图
此主题相关图片如下:捕获1.gif
这种情况是不是与选择的默认周期有关?(走完一个K线要60分钟,会不会漏掉其中一个30分钟的判断)策略中使用到30分钟和60分钟周期,在选择用走完一根K线的情况下,默认周期是不是最好选小的周期?
选60分钟为默认周期,9:32启动交易时,是用前一根K线(这里是前一天15:00K线)计算吗?
假如在策略中引用了满足周期的所有数据(这里是30分钟和60分钟),那默认周期是不是可以随便选择?
1交易记录中有“000550 - 不支持该品种交易
要用股票的模拟帐号交易,不能用期货的
2这么多的疑问,需要用调试来查询
用debugfile来调试出每个你要的数据和条件,查看下当时的结果,是不是和你看到的和你想的一样
1我用的都是股票的模拟帐号,期货的没有申请过 2请老师在我上面策略中增加调试查询,我来运行,谢谢! |
1账户栏截图看一下
2调试代码如下:
debugfile('d:\test.txt','diff30 = %.2f',diff30);
debugfile('d:\test.txt','dea30 = %.2f',dea30);
debugfile('d:\test.txt','macd60 = %.2f',macd60);
debugfile('d:\test.txt','金叉判断 = %.0f',cross(diff30,dea30));
debugfile('d:\test.txt','macd60>0.005判断 = %.0f',macd60>0.005);
直接放在end语句后面可以吗?
Diff30:=stkindi('','macd.diff',0,4);//30 分钟 diff值
Dea30:= stkindi('','macd.dea',0,4);//30 分钟 dea值
Macd60:=stkindi('','macd.macd1',0,5);//60分钟macd值
If cross(diff30,dea30) and macd30>0.005 and tbuyholding(1)=0
then BEGIN
tbuy(1,10000/close,mkt);
SENDMAIL(1,'13913992413@139.COM', STKLABEL
& STKNAME & NUMTOSTR(CLOSE,2)& '《买》_【普14】','');
end
If macd60<ref(macd60,1) and tbuyholding(0)>0
then BEGIN
tsell(1,0,mkt);
SENDMAIL(1,'13913992413@139.COM', STKLABEL
& STKNAME & NUMTOSTR(CLOSE,2)& '《卖》_【普14】','');
End
debugfile('d:\test.txt','diff30 = %.2f',diff30);
debugfile('d:\test.txt','dea30 = %.2f',dea30);
debugfile('d:\test.txt','macd60 = %.2f',macd60);
debugfile('d:\test.txt','金叉判断 = %.0f',cross(diff30,dea30));
debugfile('d:\test.txt','macd60>0.005判断 = %.0f',macd60>0.005);