以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  简单的后台模型,麻烦帮忙修改  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=48734)

--  作者:eric917
--  发布时间:2013/2/21 9:53:08
--  简单的后台模型,麻烦帮忙修改

我已经经过多番修改,但还是没有找到原因

这是一个简单的单均线 上穿BPK   下破SPK的 模型

 

要求:出信号立即开仓不进行复核,每根K线只开仓一次,在总账号有其他持仓的情况,不能平掉或者影响其他交易系统的持仓

 

下面为代码:麻烦老师帮忙修改,谢谢!

 

SS:=1; //手数
 
EXTGBDATASET(\'POSITIONAA\',0);

MAA:MA(C,5);

BPK:=CROSS(H,MAA);
SPK:=CROSS(MAA ,L);

//初次开仓
IF  EXTGBDATA(\'POSITIONAA\')=0    THEN BEGIN
     IF BPK THEN  BEGIN
         BUY(HOLDING=0,SS,MARKET);
         TBUY(1,SS,MKT);
         POSITIONAA:=1;
         EXTGBDATASET(\'POSITIONAA\',1);
     END
    
     IF  SPK THEN  BEGIN
          BUYSHORT(HOLDING=0,SS,MARKET);
          TBUYSHORT(1,SS,MKT);
          POSITIONAA:=-1;
          EXTGBDATASET(\'POSITIONAA\',-1);
      END
 END

//后续开仓
IF BPK AND EXTGBDATA(\'POSITIONAA\')=-1    THEN BEGIN
   SELLSHORT(HOLDING<0,SS,MARKET);
   TSELLSHORT(1,SS,MKT);
END

 

IF BPK AND EXTGBDATA(\'POSITIONAA\')=-1   AND TENTERBARS>=1 THEN BEGIN
   BUY(HOLDING<0,SS,MARKET);
   TBUY(1,SS,MKT);
   POSITIONAA:=1;
   EXTGBDATASET(\'POSITIONAA\',1);
END

 

IF SPK AND EXTGBDATA(\'POSITIONAA\')=1    THEN BEGIN
   SELL(HOLDING>0,SS,MARKET);
   TSELL(1,SS,MKT);
END

 

IF SPK AND EXTGBDATA(\'POSITIONAA\')=1  AND TENTERBARS>=1  THEN BEGIN
   BUYSHORT(HOLDING>0,SS,MARKET);
   TBUYSHORT(1,SS,MKT);
   POSITIONAA:=-1;
   EXTGBDATASET(\'POSITIONAA\',-1);
END

 

AA:=TENTERBARS;
BB:=TEXITBARS;

DEBUGOUT(\'POSITIONAA=%.0f\' ,POSITIONAA) ;
DEBUGOUT(\'AA=%.0f\' ,AA) ;
DEBUGOUT(\'BB=%.0f\' ,BB) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'POSITIONAA=%.0f\' ,POSITIONAA,1) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'AA=%.0f\' ,AA,1) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'BB=%.0f\' ,BB,1) ;


 

 


--  作者:eric917
--  发布时间:2013/2/21 10:12:39
--  

我在后台测试后,只有开仓的操作而没有平仓的操作,找不到原因

 


--  作者:eric917
--  发布时间:2013/2/21 10:39:05
--  
都没有人帮忙看一下的吗?大侠们都去哪里了
--  作者:eric917
--  发布时间:2013/2/21 14:07:52
--  
我提出的这个问题有这么难吗?应该很容易就能解决的啊,是没人看还是不会写
--  作者:jinzhe
--  发布时间:2013/2/21 14:13:00
--  

系统判断不出某个单子是不是特定公式下的


--  作者:just
--  发布时间:2013/2/21 14:13:21
--  
是否满足平仓条件?
你用debugfile调试语句输出你的平仓条件看看是否满足条件。
还有勾选一下记录下单日志 方便查找运行过程的出现的问题

--  作者:eric917
--  发布时间:2013/2/21 14:30:09
--  

当持有仓位的时候,平多仓同时开空仓,平空仓同时会开多仓,既然符合开仓的条件,为什么不复核平仓的条件呢?

 

看日志记录,AA 和 POSITIONAA 都是会变化的,但BB一直都没有变化


--  作者:eric917
--  发布时间:2013/2/21 14:31:41
--  

图片点击可在新窗口打开查看此主题相关图片如下:1111.jpg
图片点击可在新窗口打开查看

--  作者:eric917
--  发布时间:2013/2/21 14:36:39
--  
以下是引用jinzhe在2013-2-21 14:13:00的发言:

系统判断不出某个单子是不是特定公式下的

什么意思呢?不太明白,能否详细说明一下


--  作者:eric917
--  发布时间:2013/2/21 14:59:54
--  
以下是引用just在2013-2-21 14:13:21的发言:
是否满足平仓条件?
你用debugfile调试语句输出你的平仓条件看看是否满足条件。
还有勾选一下记录下单日志 方便查找运行过程的出现的问题

这样写对吗?

SS:=1; //手数
 
EXTGBDATASET(\'POSITIONAA\',0);

MAA:MA(C,5);

BPK:=CROSS(H,MAA);
SPK:=CROSS(MAA ,L);

//初次开仓
IF  EXTGBDATA(\'POSITIONAA\')=0    THEN BEGIN
     IF BPK THEN  BEGIN
         BUY(HOLDING=0,SS,MARKET);
         TBUY(1,SS,MKT);
         POSITIONAA:=1;
         EXTGBDATASET(\'POSITIONAA\',1);
     END
    
     IF  SPK THEN  BEGIN
          BUYSHORT(HOLDING=0,SS,MARKET);
          TBUYSHORT(1,SS,MKT);
          POSITIONAA:=-1;
          EXTGBDATASET(\'POSITIONAA\',-1);
      END
 END

//后续开仓
IF BPK AND EXTGBDATA(\'POSITIONAA\')=-1    THEN BEGIN
   SELLSHORT(HOLDING<0,SS,MARKET);
   TSELLSHORT(1,SS,MKT);
   平空条件:=1;
END

IF BPK AND EXTGBDATA(\'POSITIONAA\')=-1   AND TENTERBARS>=1 THEN BEGIN
   BUY(HOLDING<0,SS,MARKET);
   TBUY(1,SS,MKT);
   POSITIONAA:=1;
   EXTGBDATASET(\'POSITIONAA\',1);
END

IF SPK AND EXTGBDATA(\'POSITIONAA\')=1    THEN BEGIN
   SELL(HOLDING>0,SS,MARKET);
   TSELL(1,SS,MKT);
    平多条件:=1;
END

IF SPK AND EXTGBDATA(\'POSITIONAA\')=1  AND TENTERBARS>=1  THEN BEGIN
   BUYSHORT(HOLDING>0,SS,MARKET);
   TBUYSHORT(1,SS,MKT);
   POSITIONAA:=-1;
   EXTGBDATASET(\'POSITIONAA\',-1);
END

AA:=TENTERBARS;
BB:=TEXITBARS;


DEBUGOUT(\'POSITIONAA=%.0f\' ,POSITIONAA) ;
DEBUGOUT(\'AA=%.0f\' ,AA) ;
DEBUGOUT(\'BB=%.0f\' ,BB) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'POSITIONAA=%.0f\' ,POSITIONAA,1) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'AA=%.0f\' ,AA,1) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'BB=%.0f\' ,BB,1) ;

DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'平空条件=%.0f\' ,平空条件,1) ;
DEBUGFILE2(\'D:\\Debug\\DEBUGFILE.TXT\',\'平多条件=%.0f\' ,平多条件,1) ;