以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [讨论]后台编写问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=56830)

--  作者:bbosaabb
--  发布时间:2013/9/22 12:00:27
--  [讨论]后台编写问题

一账户多策略情况下,三个策略的开仓条件编写都用D1:=开多条件  K1:=开空条件。现在问题是三个策略的D1 K1会不会冲压?


--  作者:jinzhe
--  发布时间:2013/9/22 13:00:35
--  
冲压是什么意思?
--  作者:bbosaabb
--  发布时间:2013/9/22 13:04:58
--  

一账户多策略情况下,三个策略的开仓条件编写都用D1:=开多条件  K1:=开空条件。现在问题是三个策略的D1 K1会不会冲突?


  单帖管理 | 引用 | 回复 | 编辑 | 图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2013/9/22 13:21:17
--  

这个要具体分析的,你把条件写出来,然后解释下条件里面的意思


--  作者:bbosaabb
--  发布时间:2013/9/22 14:47:40
--  

比方:策略A 

        BQ:=(H-L)<30&&条件;

 

       策略B

        BQ:=(H-C)<20&&条件&&条件;

    

       策略C

        BQ:=(C-L)<15&&条件;

 

三个策略中的BQ会不会冲突?

            

      


--  作者:jinzhe
--  发布时间:2013/9/22 15:02:02
--  如何取得某周期的主动性买卖盘成交数
不会冲突,名字一样不会互相干扰
--  作者:bbosaabb
--  发布时间:2013/9/22 15:13:37
--  

jinzhe@pobo.net.cn jinzhe@pobo.net.cn  

我以经把整个策略源码发到你的邮箱了,麻烦你有时间就帮我看一下还有那里有问题,行吗?


--  作者:jinzhe
--  发布时间:2013/9/22 15:22:23
--  
有问题发在论坛上面
--  作者:bbosaabb
--  发布时间:2013/9/22 15:37:36
--  求策略编写

//麻烦帮我看一下这个后台编写的策略有没有问题

//一账户多策略同时运行,这是其中一个

variable:B1_ZZ=0;//追单开关
VARIABLE:B1_Z=0;//定位开仓价
VARIABLE:B1_ZD=0;//多头变量
VARIABLE:B1_ZK=0;//空头变量
VARIABLE:B1_FD=0;//多头浮动盈亏
VARIABLE:B1_FK=0;//空头浮动盈亏
VARIABLE:B1_BS4开=0;//开仓条件4开关
VARIABLE:B1_仓=0,B1_J=0;//策略盈亏计算(以平+浮动)未含手续费
VARIABLE:B1_平=0;//平仓价与平仓价记录
FD:=EXTGBDATA(B1_FD);
FK:=EXTGBDATA(B1_FK);
ZZ:=EXTGBDATA(B1_ZZ);
Z:=EXTGBDATA(B1_Z);
ZK:=EXTGBDATA(B1_ZK);
ZD:=EXTGBDATA(B1_ZD);
BS4开:=EXTGBDATA(B1_BS4开);
Q:=EXTGBDATA(B1_仓);//持仓方向

//MACD引用
variable:ema12=c,ema26=c,dea=0;
if day<>ref(day,1) then begin
EXTGBDATASET( ema12,c);
EXTGBDATASET( ema26,c);
EXTGBDATASET( DEA,0);end
ema12:=EXTGBDATA(ema12)*11/13+c*2/13;
ema26:=EXTGBDATA(ema26)*25/27+c*2/27;
DIFF:=ema12-ema26;
DEA:=DEA*4/5+DIFF/5;

N:=BARSLAST(DATE<>REF(DATE,1))+1;//开盘到当前周期数
H30:=VALUEWHEN(N=16,HHV(H,16));//开盘后16根K柱最高价
L30:=VALUEWHEN(N=16,LLV(L,16));//开盘后16根K柱最低价
HL30:=H30-L30;

//引用15分钟周的MACD
DIFF15:="BB.DIFF1#MIN15";
DEA15:="BB.DEA1#MIN15";

//资金风险控制
BBS1:=EXTGBDATA(B1_J) ;//当天盈亏合计
BB1:=BBS1>=-5000&&BBS1<=12000 ;

T:=COUNT(EXTGBDATA(B1_仓)<>0,N)<2;//限制开仓次数(2次)

IF TIME<091600 THEN BEGIN EXTGBDATASET(B1_J,0);EXTGBDATASET(B1_平,0);END
//开仓条件
B1:=(CROSS(C,H30)||CROSS(C,L30))&&DIFF15>DEA15&&DIFF>DEA&&DEA>0;//开多条件1
S1:=(CROSS(L30,C)||CROSS(H30,C))&&DIFF15<DEA15&&DIFF<DEA&&DEA<0;//开空条件1
B2:=CROSS(DIFF15,DEA15)&&C>H30&&DIFF>DEA&&TIME>100000&&TIME<140000&&DEA>0;//开多条件2
S2:=CROSS(DEA15,DIFF15)&&C<L30&&DIFF<DEA&&TIME>100000&&TIME<140000&&DEA<0;//开空条件2
//平仓条件
PB1:=CROSS(DEA15,DIFF15)&&DEA<0;//平多条件1
PB2:=DEA<0&&DIFF<DEA&&C-Z<ZD-20&&Q>0 ;
PS1:=CROSS(DIFF15,DEA15)&&DEA>0 ;//平空条件1
PS2:=DEA>0&&DIFF>DEA&&Z-C<ZK-20&&Q<0;

//多开
IF TIME>093200&&TIME<143500&&(B1||B2)&&T&&Q=0&&(TBUYHOLDING(1)+TSELLHOLDING(1)<=10)&&BB1 &&H-L<20 THEN
  BEGIN  TBUY(1,1,LMT,C);
         EXTGBDATASET(B1_Z,C);
         EXTGBDATASET(B1_ZD,H-Z); 
         EXTGBDATASET(B1_ZZ,0);
         EXTGBDATASET(B1_仓,1);      
  END
 
//空开
IF TIME>093200&&TIME<143500&&(S1||S2)&&T&&Q=0&&(TBUYHOLDING(1)+TSELLHOLDING(1)<=10)&&BB1&&H-L<20 THEN
  BEGIN TBUYSHORT(1,1,LMT,C);
         EXTGBDATASET(B1_Z,C);
         EXTGBDATASET(B1_ZK,Z-L);
         EXTGBDATASET(B1_ZZ,0);
         EXTGBDATASET(B1_仓,-1);
  END
//持仓浮点风险控制       
IF H-Z>ZD && Q>0 then EXTGBDATASET(B1_ZD,H-Z);
IF Z-L>ZK && Q<0 THEN EXTGBDATASET(B1_ZK,Z-L);
IF Q>=0 THEN EXTGBDATASET(B1_ZK,0);
IF Q<=0 THEN EXTGBDATASET(B1_ZD,0);
IF Q>0 THEN EXTGBDATASET(B1_FD,C-Z);//计算多头浮动盈亏
IF Q<0 THEN EXTGBDATASET(B1_FK,Z-C);//计算空头浮动盈亏
IF Q=0 THEN BEGIN EXTGBDATASET(B1_FD,0); EXTGBDATASET(B1_FK,0);EXTGBDATASET(B1_Z,0); END
BSD:=(FD<=-20|| FD<=ZD-25)&& Q>0;//多头浮亏20个点
BSK:=(Z-C<=-20 || Z-C<=ZK-25)&& Q<0;//空头浮亏20个点
BSD3:=H-Z>=70&& Q>0 ;//多头浮亏20个点
BSK3:=Z-L>=70&& Q<0;//空头浮亏20个点
BSD1:= FD<=0.6*ZD && ZD>=25&& Q>0 ;//浮盈从25个点以上回撤40%
BSD2:= FD<=ZD-15 && ZD>=45&& Q>0 ;//浮盈从45个点以上回撤15个点
BSK1:= Z-C<=0.6*ZK && ZK>=25 ;//浮盈从25个点以上回撤40%
BSK2:= Z-C<=ZK-15 && ZK>=45;//浮盈从45个点以上回撤15个点


//多平
IF (BSD3||BSD1||BSD2)&& Q>0 THEN
  BEGIN  TSELL(1,1 ,LMT,C);
         EXTGBDATASET(B1_ZZ,1);
         EXTGBDATASET(B1_J,EXTGBDATA(B1_J)+(C-Z));
         EXTGBDATASET(B1_仓,0);
         EXTGBDATASET(B1_平,C);END
        
IF (TIME>150500||PB2||BSD||S1||S2||BBS1<=-6000)& Q>0 THEN BEGIN TSELL(1,1 ,LMT,C);
                                                    EXTGBDATASET(B1_J,EXTGBDATA(B1_J)+(C-Z));
                                                    EXTGBDATASET(B1_仓,0);
                                                    EXTGBDATASET(B1_平,C);END

//平空
IF (BSK3||BSK1||BSK2)&& Q<0 THEN
  BEGIN  TSELLSHORT(1,1,LMT,C);
         EXTGBDATASET(B1_ZZ,1);
         EXTGBDATASET(B1_J,EXTGBDATA(B1_J)+(Z-C));
         EXTGBDATASET(B1_仓,0);
         EXTGBDATASET(B1_平,C);END
        
IF (PS2||BSK||B1||B2||BBS1<=-6000||TIME>150500)&& Q<0 THEN BEGIN TSELLSHORT(1,1,LMT,C);
                                                     EXTGBDATASET(B1_J,EXTGBDATA(B1_J)+(Z-C));
                                                     EXTGBDATASET(B1_仓,0);
                                                     EXTGBDATASET(B1_平,C);END
//追价条件
if c>EXTGBDATA(B1_平)+15 && ZZ=1 &&TIME>093200&&TIME<141500&&T&& Q=0&&(TBUYHOLDING(1)+TSELLHOLDING(1)<=10)&&BB1&&H-L<20 then
BEGIN  TBUY(1,1,LMT,C);
         EXTGBDATASET(B1_Z,C);
         EXTGBDATASET(B1_ZD,H-Z); 
         EXTGBDATASET(B1_ZZ,0);
         EXTGBDATASET(B1_仓,1); 
 end
 
if c<EXTGBDATA(B1_平)-15 && ZZ=1 &&TIME>093200&&TIME<141500&&T&& Q=0&&(TBUYHOLDING(1)+TSELLHOLDING(1)<=10)&&BB1&&H-L<20 then
 BEGIN  TBUYSHORT(1,1,LMT,C);
         EXTGBDATASET(B1_Z,C);
         EXTGBDATASET(B1_ZK,Z-L);
         EXTGBDATASET(B1_ZZ,0);
         EXTGBDATASET(B1_仓,-1);
end       

if time>=151000 then  EXTGBDATASET(B1_ZZ,0);
 
最高:=MAX(ZK,ZD) ;
多:=IF( Q>0,C-Z,0);
空:=IF( Q<0,Z-C,0);      

持仓:=EXTGBDATA(B1_仓),noaxis  ;
盈亏:=BBS1;

DEBUGOUT(\'当前持仓量%.2f\',持仓);
DEBUGOUT(\'当前盈亏%.2f\',盈亏 );
DEBUGOUT(\'持仓最高浮盈%.2f\',最高 );
DEBUGOUT(\'多单浮盈%.2f\',多 );
DEBUGOUT(\'空单浮盈%.2f\',空 );


--  作者:jinzhe
--  发布时间:2013/9/22 15:40:01
--  

语法上:要在后台定义全局变量,要么用GLOBALVARIABLE,要么用EXTGBDATASET,不要用VARIABLE

至于策略有没有问题,这个自己编译一下,就能看出有没有问题

[此贴子已经被作者于2013/9/22 15:40:38编辑过]