等级: 标准版
- 注册:
- 2021-12-28
- 曾用名:
|
尊敬的老师你好!自己鼓捣了N多天就是玩不转,难为我60后大叔了。还是麻烦你帮忙改一下吧,感谢!
我想把如下图表改后台(在后台模型中显示图表信号):
1、套用阿火老师的图表转后台即时下单模型,固定时间间隔——
2、请去掉账户号,默认本账号;
3、股票模型,只有开多、平多;
4、保留 debugfile 代码以便检查调试
5、图表模型如下:
input:ss(100,100,1000,100);
input:zyfd(1.12,1,1.2,0.01);
input:zsfd(0.9,0.8,0.95,0.01);
ma5:ma(close,5);
ma20:ma(close,20);
ma30:ma(close,30);
con1:=cross(ma5,ma20);
con12:=cross(ma5,ma30);
con2:=cross(ma20,ma5);
kd1:=con1;
kd2:=con12;
平多条件:=c>ss*1.1;
开仓价:=enterprice;
止盈条件:=h>开仓价*zyfd;
止盈价:=max(o,开仓价*zyfd);
止损条件c:=c<开仓价*zsfd;
止损:sell(holding>0 and 止损条件c and enterbars>=1 ,0,limitr,c);//指定价
止盈:sell(holding>0 and 止盈条件 and enterbars>=1 ,0,limitr,止盈价);//指定价
平多:sell(holding>0 and 平多条件 and enterbars>=1 ,0,limitr,ss*1.1);//指定价
开多1:buy(holding=0 and kd1 ,ss,limitr,c); //指定价
开多2:buy(holding=0 and kd2 ,ss,limitr,c);//指定价
4、阿火老师的转换范例(即时下单模型,固定时间间隔):
Globalvariable:hold=drawnull;
//蓝色部分改为你自己的模型
buycond:=h>ref(hhv(h,10),1);
sellcond:=l<ref(llv(l,10),1);
if holding>0 and sellcond then sell(1,1,market);
if holding<0 and buycond then sellshort(1,1,market);
if holding=0 and buycond then buy(1,1,market);
if holding=0 and sellcond then buyshort(1,1,market);
cc800988:=holding;//这句放在信号稳定的地方
drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输入虚拟持仓以便监控
if not(islastbar) or workmode<>1 then exit;
xiadan800988:=cc800988-hold;
if xiadan800988>0.5 then begin
cang:=min(xiadan800988,abs(hold));
if hold<0 then begin
tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;
debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 平空 %.0f',cang);
end
cang:=xiadan800988+min(hold,0);
if cang>0 then begin
tbuy(1,cang,mkt,0,0,'800988'),allowrepeat;
debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 开多 %.0f',cang);
end
end
if xiadan800988<-0.5 then begin
cang:=min(abs(xiadan800988),abs(hold));
if hold>0 then begin
tsell(1,cang,mkt,0,0,'800988'),allowrepeat;
debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 平多 %.0f',cang);
end
cang:=abs(xiadan800988)-max(hold,0);
if cang>0 then begin
tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat;
debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 开空 %.0f',cang);
end
end
hold:=cc800988;
以上诚请得到你的帮助。或者你有更好的方法实现那就更好了。
|
|