以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=4775)

--  作者:bj_mxl
--  发布时间:2011/1/10 21:31:31
--  关于错误信号的问题,暂且这样说啊

关于错误信号的问题,暂且这样说啊。

在进行简单的程序化编程的过程中,发现所设置条件执行,但是有错误

 

以下是部分代码,在执行的过程中,从图中可以明显看出已经有了持仓即  HOLDING <>0 可是程序继续开空。不知道是什么原因

 

  IF(MMINW1>0 and W1>0 and HOLDING >0) then
    //SPK;卖平后卖开新仓
    begin 
         SELL(MMINW1>0 and W1>0,abs(HOLDING),market ); //=平多

 
       BUYSHORT(MMINW1>0 and W1>0,abs(HOLDING),market);//=开空

    end 
   
   IF(MMINW1>0 and W1>0 and HOLDING = 0) THEN
     //无仓直接 卖开新仓
    begin 
      
       BUYSHORT(MMINW1>0 and W1<=0,2,market);//=开空

    end 

 

对应图片无法上传,2.02

 

 同时,加入止损代码后,出现连续的开空,平空现象,也找不到原因

 

[此贴子已经被作者于2011-1-10 21:38:26编辑过]

--  作者:金字塔
--  发布时间:2011/1/11 8:53:25
--  

请严格按函数IF的语法写,如

 

IF (MMINW1>0 and W1>0 and HOLDING >0) then
    //SPK;卖平后卖开新仓
    begin 
         SELL(MMINW1>0 and W1>0,abs(HOLDING),market ); //=平多

 
       BUYSHORT(MMINW1>0 and W1>0,abs(HOLDING),market);//=开空

    end 
   
   IF (MMINW1>0 and W1>0 and HOLDING = 0) THEN
     //无仓直接 卖开新仓
    begin 
      
       BUYSHORT(MMINW1>0 and W1<=0,2,market);//=开空

    end 


--  作者:王锋
--  发布时间:2011/1/11 9:59:50
--  
请楼主多看看金字塔的公式编写教程,高级篇的控制语句部分,仔细看看IF THEN 语句的语法。
--  作者:fly
--  发布时间:2011/1/11 15:15:22
--  

个人认为楼主的语句,基本等同于以下语句(开仓改成了具体数量)

IF MMINW1>0 and W1>0  then
       begin 
         SELL(HOLDING >0,0,market ); //若有多仓,则平多;没有多仓,自然也就不执行此句
         BUYSHORT(HOLDING =0,1,market);//开空

       end  


--  作者:金字塔
--  发布时间:2011/1/11 15:33:43
--  

按语法,只要在IF后加个空格就行,如2楼那样