开拓者期货期权程序化系统交易论坛

标题: 提示 :无法识别的字符串 bool [打印本页]

作者: r5d0z6n8    时间: 2019-5-18 08:45:39     标题: 提示 :无法识别的字符串 bool

本帖最后由 r5d0z6n8 于 2019-5-18 09:28 编辑

最终目标文件编译错误  
:fatal  error LNK1181:cannot  open  imput  file...
FOR,WHILE ,IF,ELSE中包含序列函数,可能存在潜在…     错误 号wo2o1   行号 43



作者: r5d0z6n8    时间: 2019-5-18 08:48:35

本帖最后由 r5d0z6n8 于 2019-5-18 09:30 编辑

模型原码

Params

     Bool BINITSTATUS(FALSE);
     NUMERIC INITMP(0);       //初始仓,+
     //NUMERIC MIDLINE(5600);    //初始中线值
     NUMERIC MIDLINELENGTH(250);   //中线移动的平均周期数
     NUMERIC FIRSTGRID(3);         //第一格的间距,点数
     NUMERIC TOTALGRIDS(10);       //总网格数,即最大持仓数
     NUMERIC GRIDINTERVAL(3);    //网格间距,点数
     NUMERIC WINGRID(3);    //盈利点数
     NUMERIC EVERYLOTS(1);   //每次开仓手数
     NUMERIC MIDLINEWEIGHT(1);    //中线所占权重
     NUMERIC EXITONCLOSEMINS(14.50);   //收盘平仓时间
Vars
   NumericSeries midline;
   NUMERIC MINPOINT;
   NUMERIC AVGOFCLOSE;
   NUMERIC ASKLINE;
   NUMERIC BIDLINE;
   NUMERICSERIES REALMIDLINE;
   NUMERIC MYREALMP(0);
   NUMERIC TMPGRIDINDEX;
   NUMERIC TMPPRICE;
Begin
  IF(DAY<>DAY[1])
  {MIDLINE=OPEND(0); }ELSE
  {MIDLINE=MIDLINE[1];}
   MINPOINT=MINMOVE*PRICESCALE;
   MYREALMP=GETGLOBALVAR(0);

   AVGOFCLOSE=AVERAGEFC(CLOSE,MIDLINELENGTH);
   IF(BARSTATUS==0)
        IF(MYREALMP == INVALIDNUMERIC  ||  BINITSTATUS)
   {MYREALMP = INITMP; SETGLOBALVAR(0,MYREALMP); }
   ELSE  IF(BARSTATUS == 2 && A_ACCOUNTID != " " )
   {IF(Q_ASKPRICE <= 0 || Q_BIDPRICE <= 0 ) RETURN;}
   IF(Q_BIDPRICE == Q_UPPERLIMIT || Q_ASKPRICE == Q_LOWERLIMIT) RETURN;
   IF ((TIME == 0.0900 || TIME == 0.1030 || TIME == 0.1330 ) && (HIGH==LOW)) RETURN;
   IF(CURRENTTIME<EXITONCLOSEMINS/100)
   {REALMIDLINE=MIDLINE*MIDLINEWEIGHT+AVGOFCLOSE*(1-MIDLINEWEIGHT);
   ASKLINE=Q_ASKPRICE;
   BIDLINE=Q_BIDPRICE;
   COMMENTARY("中线="+TEXT(REALMIDLINE));
   COMMENTARY("叫卖价="+TEXT(ASKLINE));
   COMMENTARY("叫买价="+TEXT(BIDLINE));
   IF(MYREALMP<=0&&BIDLINE>REALMIDLINE+FIRSTGRID*MINPOINT)
   {TMPPRICE=REALMIDLINE+FIRSTGRID*MINPOINT+(ABS  (MYREALMP)*  GRIDINTERVAL*MINPOINT);
   TMPPRICE=CEILING(TMPPRICE,MINPOINT);
   COMMENTARY("开仓价="+TEXT(TMPPRICE));
   TMPGRIDINDEX=-1-INTPART  ((BIDLINE-REALMIDLINE-FIRSTGRID*MINPOINT)/(GRIDINTERVAL*MINPOINT));
   IF(TMPGRIDINDEX<MYREALMP&&TMPGRIDINDEX>=-1*TOTALGRIDS)
   {MYREALMP=MYREALMP-1;  A_SENDORDER  (ENUM_BUY,ENUM_ENTRY,EVERYLOTS,BIDLINE);}}ELSE IF(MYREALMP>=0 && ASKLINE<REALMIDLINE-FIRSTGRID*MINPOINT)
   {TMPPRICE=REALMIDLINE-FIRSTGRID*MINPOINT-ABS (MYREALMP)*  (GRIDINTERVAL*MINPOINT);
   TMPPRICE=FLOOR(TMPPRICE,MINPOINT);
   COMMENTARY("开仓价="+TEXT(TMPPRICE));
   TMPGRIDINDEX=1+INTPART  ((REALMIDLINE-FIRSTGRID*MINPOINT-   ASKLINE)/(GRIDINTERVAL*MINPOINT));
   IF(TMPGRIDINDEX>MYREALMP && TMPGRIDINDEX<=TOTALGRIDS)
   {MYREALMP=MYREALMP+1;
   A_SENDORDER(ENUM_SELL,ENUM_ENTRY,EVERYLOTS,ASKLINE);}
   IF(MYREALMP>0)
   {TMPPRICE=REALMIDLINE-FIRSTGRID*MINPOINT-(ABS(MYREALMP)-1)*(GRIDINTERVAL*MINPOINT)+WINGRID*MINPOINT;
   TMPPRICE = CEILING(TMPPRICE,MINPOINT);
   COMMENTARY("平仓价="+TEXT(TMPPRICE));
   }ELSE IF(MYREALMP<0)
   {TMPPRICE=REALMIDLINE+FIRSTGRID*MINPOINT+(ABS(MYREALMP)-1)*(GRIDINTERVAL*MINPOINT)-WINGRID*MINPOINT;
   TMPPRICE = FLOOR(TMPPRICE,MINPOINT);
   COMMENTARY("平仓价="+TEXT(TMPPRICE));}
   TMPGRIDINDEX=-1-INTPART  
   ((ASKLINE-FIRSTGRID*MINPOINT+WINGRID*MINPOINT-REALMIDLINE)/(GRIDINTERVAL*MINPOINT));
   TMPGRIDINDEX=MIN(0,TMPGRIDINDEX);
   IF(TMPGRIDINDEX>MYREALMP)
   {MYREALMP=MYREALMP+1;     A_SENDORDER   (ENUM_SELL,ENUM_EXIT,EVERYLOTS,ASKLINE);}
   TMPGRIDINDEX=1+INTPART
   ((REALMIDLINE-FIRSTGRID*MINPOINT+WINGRID*MINPOINT-BIDLINE)/(GRIDINTERVAL*MINPOINT));
   TMPGRIDINDEX=MAX(0,TMPGRIDINDEX);
   IF(TMPGRIDINDEX < MYREALMP)
   {MYREALMP=MYREALMP-1; A_SENDORDER   (ENUM_BUY,ENUM_EXIT,EVERYLOTS,BIDLINE);}
   }ELSE IF(CURRENTTIME > EXITONCLOSEMINS/100)
   {IF(MYREALMP > 0)
   {MYREALMP = MYREALMP - 1;A_SENDORDER  (ENUM_SELL,ENUM_EXIT,EVERYLOTS,BIDLINE);}
   ELSE IF(MYREALMP<0)
   {MYREALMP  =  MYREALMP + 1;A_SENDORDER (ENUM_BUY,ENUM_EXIT,EVERYLOTS,ASKLINE);}
  }SETGLOBALVAR(0,MYREALMP);}
   COMMENTARY("实际仓位="+TEXT(MYREALMP));
   COMMENTARY("当前时间="+TEXT(Q_LASTTIME));
   IF (Q_LASTTIME>0.145000 AND CURRENTTIME<0.150000)
   {A_SENDORDER(ENUM_SELL,ENUM_EXIT,1,Q_BIDPRICE);
   A_SENDORDER(ENUM_BUY,ENUM_EXIT,1,Q_ASKPRICE);}
   
   END
作者: r5d0z6n8    时间: 2019-5-18 09:14:50

本帖最后由 r5d0z6n8 于 2019-5-18 09:34 编辑

麻烦老师辛苦下帮我改下,多谢了!!
作者: 小米    时间: 2019-5-20 14:54:18

r5d0z6n8 发表于 2019-5-18 08:48
模型原码

Params

公式可以通过编译,
出现的提示是midline= openD(0)这一句放到了条件内,是可能导致计算结果出错的。。
建议使用中间变量,在条件外将openD(0)赋值给中间变量,再将中间变量代入条件中使用。
作者: r5d0z6n8    时间: 2019-5-20 18:06:31

小米 发表于 2019-5-20 14:54
公式可以通过编译,
出现的提示是midline= openD(0)这一句放到了条件内,是可能导致计算结果出错的。。
...

"出现的提示是midline= openD(0)这一句放到了条件内,是可能导致计算结果出错的。。
建议使用中间变量,在条件外将openD(0)赋值给中间变量,再将中间变量代入条件中使用"

恳求老师帮我改下,万分感谢!!!
作者: r5d0z6n8    时间: 2019-5-22 17:35:02

"出现的提示是midline= openD(0)这一句放到了条件内,是可能导致计算结果出错的。。
建议使用中间变量,在条件外将openD(0)赋值给中间变量,再将中间变量代入条件中使用"

恳求老师帮我改下,万分感谢!!!
作者: 小米    时间: 2019-5-23 09:38:41

r5d0z6n8 发表于 2019-5-22 17:35
"出现的提示是midline= openD(0)这一句放到了条件内,是可能导致计算结果出错的。。
建议使用中间变量,在 ...

这段代码真的没有修改的价值。
建议系统学习再编写策略公式吧。
作者: r5d0z6n8    时间: 2019-5-23 09:42:06

谢谢!!




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2