以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  建一个最简单的后台交易系统,求救  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=48704)

--  作者:eric917
--  发布时间:2013/2/20 14:42:19
--  建一个最简单的后台交易系统,求救

我想写一个很简单的单均线交易系统,

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

我在论坛发了3天贴都没有问出来,应该怎么写才对或者指出我哪里写得不对,万分感激~!!!!!

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

MAA:MA(C,20);

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  AND TENTERBARS>=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  AND TENTERBARS>=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  ) ;


 

[此贴子已经被作者于2013-2-20 14:42:59编辑过]

--  作者:jinzhe
--  发布时间:2013/2/20 14:47:37
--  

开仓分两段,一段是初次开仓,一段是后续开仓,

把这个加上


--  作者:eric917
--  发布时间:2013/2/20 14:57:33
--  

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  AND TENTERBARS>=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  AND TENTERBARS>=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) ;


谢谢


--  作者:eric917
--  发布时间:2013/2/20 15:03:24
--  

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 AND TENTERBARS>=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 AND TENTERBARS>=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) ;


谢谢


--  作者:eric917
--  发布时间:2013/2/20 15:11:45
--  
是不是一根K线只能执行一次操作的缘故,现在加载后观察,运行就只能开仓,不能平仓,也就是平仓信号一直都没有被执行过
--  作者:eric917
--  发布时间:2013/2/20 15:27:17
--  
老师,解答一下,谢谢
--  作者:eric917
--  发布时间:2013/2/20 16:39:24
--  
可以帮忙看一下吗?
--  作者:jinzhe
--  发布时间:2013/2/20 17:03:29
--  
平仓不要加tenterbars>=1
--  作者:eric917
--  发布时间:2013/2/21 9:24:51
--  
试过了,但还是只帮我开仓,没有帮平仓