以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]公式运行变量查看器显示出#  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=188100)

--  作者:熊猫
--  发布时间:2021/4/28 22:34:16
--  [求助]公式运行变量查看器显示出#
帅哥,在线噢!FireScript大神,您好:

  大神,这是源代码,还是昨天的问题,在使用公式运行变量查看器的时候,显示出##是怎么回事?
   品种是pp09,3分钟图,我想统计的是连续亏损2次出现的个数,这个数据在日线图就是正常的,不知道为啥在2分钟图就这样了。


variable:c1=0,loss_num=0,win_num=0,next_num=0,first_open=0,下次开仓量=0,上次开仓量=0;
variable:loss1=0,loss2=0,loss3=0,loss4=0;
VARIABLE:loss_per=0;
variable:n2:=4,n3:=20,n1:=5,m1:=2,m2:=2;
MA5:MA(CLOSE,n2);
MA10:MA(CLOSE,n3);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);


平多开空:=CONDSELL and HOLDING>=0;
平空开多:=CONDBUY and HOLDING<=0;

d:=date+19000000;
日期条件:=if(d>20201001,1,0);
回测开始时间:BARSLAST( d<20201001);

上次开仓量:=if(holding<>0,abs(holding),n1);

if CONDBUY  and 日期条件 then SELLSHORT(1,HOLDING,MARKET);

if NUMPROFIT(1)<0 and ( CONDBUY)  then begin

loss1:=loss1+1;

END

if NUMPROFIT(1)/ENTERPRICE>0.005 and ( CONDBUY)  then begin

loss1:=0;

END


if CONDBUY and 日期条件 then buy(1,2,MARKET);

if CONDSELL and 日期条件  then sell(1,HOLDING,MARKET) ;

if NUMPROFIT(1)<0 and (CONDSELL)  then begin

loss1:=loss1+1;

END

if NUMPROFIT(1)/ENTERPRICE>0.005 and (CONDSELL )  then begin

loss1:=0;

END








if  condsell and 日期条件 then BUYSHORT(1,2,MARKET);

if condbuy and 日期条件  then sellshort(1,HOLDING,MARKET) ;

盈利次数:win_num;
亏损次数:loss_num;


连续亏损2次:count(ref(loss1,1)=2 and loss1=0 ,回测开始时间);
连续亏损3次:count(ref(loss1,1)=3 and loss1=0 ,回测开始时间);
连续亏损4次:count(ref(loss1,1)=4 and loss1=0 ,回测开始时间);

此主题相关图片如下:1.png
按此在新窗口浏览图片


此主题相关图片如下:2.png
按此在新窗口浏览图片

--  作者:FireScript
--  发布时间:2021/4/29 9:51:03
--  
 数据不足导致的。一个日线相当于非常多得2分钟线了。所以你2分钟数据不足的话,
回测开始时间:BARSLAST( d<20201001);

这个变量就出问题了,因为你至少要加载包括这个日期的分钟数据才行。