以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://www.weistock.com/bbs/list.asp?boardid=4) ---- [求助]使用图标程序化交易,就是不执行,这是我的源码,麻烦帮忙看看 (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=184084) |
-- 作者:熊猫 -- 发布时间:2021/1/26 15:46:37 -- [求助]使用图标程序化交易,就是不执行,这是我的源码,麻烦帮忙看看 各位大神,我写的策略就是不能实现图标程序化是怎么回事呢? 信号是有的,我回测过,都执行了,就是在使用图标程序化的时候不执行,编程的代码之中有显示持仓holding,持仓都显示开仓了,就是不执行。 参数设置: N1=20,n2=40 ,n3=20,m1=2,m2=2
variable:最近1次盈亏数额=0,c1=0; MA5:MA(CLOSE,n2); MA10:MA(CLOSE,n3); CONDBUY:=CROSS(MA5,MA10); CONDSELL:=CROSS(MA10,MA5);
平多开空:=CONDSELL and HOLDING>=0; 平空开多:=CONDBUY and HOLDING<=0;
持仓:HOLDING; 上次开仓量:=ENTERVOL;
d:=date+19000000;
日期条件:=if(d>20200101,1,0);
loss_num:=0; win_num:=0;
if HOLDING=0 and 日期条件 then begin if condbuy then BUY(CONDBUY ,n1,NEXTOPEN); if condsell then BUYSHORT(CONDSELL,n1,NEXTOPEN); END
开仓价格:=ENTERPRICE; if CONDBUY =1 then 平仓价格:=c; if CONDSELL=1 then 平仓价格:=c; pc:=平仓价格;
if 持仓<0 and condbuy=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=1; if 持仓<0 and condbuy=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=-1; if 持仓>0 and condsell=1 and (PC-开仓价格)<0 then 最近1次盈亏数额:=-1; if 持仓>0 and condsell=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=1;
dd:=最近1次盈亏数额; 最近2次盈亏数额:=NUMPROFIT(1); 最近3次盈亏数额:=NUMPROFIT(2); 最近4次盈亏数额:=NUMPROFIT(3);
3连亏:= 最近1次盈亏数额<0 and 最近2次盈亏数额<0 and 最近3次盈亏数额<0 and 最近4次盈亏数额>0;
3连盈:=最近1次盈亏数额>0 and 最近2次盈亏数额>0 and 最近3次盈亏数额>0 and 最近4次盈亏数额<0;
if HOLDING>0 and condsell and 日期条件 then SELL(CONDsell,holding,THISCLOSE);
if HOLDING=0 and condsell and 3连亏 and 日期条件 then BEGIN BUYSHORT( 1, 上次开仓量*m1,NEXTOPEN ); END
if HOLDING=0 and condsell and 3连盈 and 日期条件 then BEGIN BUYSHORT( 1, 上次开仓量/m2,NEXTOPEN ); END
if HOLDING=0 and condsell and not(3连亏) and not(3连盈) and 日期条件 then BEGIN BUYSHORT( 1, 上次开仓量,NEXTOPEN ); END
if HOLDING<0 and condbuy and 日期条件 then SELLshort(condbuy,holding,THISCLOSE);
if HOLDING=0 and condbuy and 3连盈 and 日期条件 then BEGIN BUY( 1, (-1)*上次开仓量/m2,NEXTOPEN ); END
if HOLDING=0 and condbuy and 3连亏 and 日期条件 then BEGIN BUY( 1, (-1)*上次开仓量*m1,NEXTOPEN ); END
if HOLDING=0 and condbuy and not(3连亏) and not(3连盈) and 日期条件 then BEGIN BUY( 1, (-1)*上次开仓量,NEXTOPEN ); END |
-- 作者:FireScript -- 发布时间:2021/1/26 16:03:20 -- 你至少要保证代码能编译成功啊。 前面这几个变量的定义不符合基本语法。修改如下: N1:=20; n2:=40; n3:=20; m1:=2; m2:=2; |
-- 作者:FireScript -- 发布时间:2021/1/26 16:04:42 -- |
-- 作者:FireScript -- 发布时间:2021/1/26 16:05:52 -- 你现在有信号的情况下 你要看下当时最新K上是否有信号了。有信号没下单是一回事,没信号那又是一回事了。 你截图我们看下你的设置: [此贴子已经被作者于2021/1/26 16:07:34编辑过]
|