以文本方式查看主题

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

--  作者:bbosaabb
--  发布时间:2013/8/30 14:55:04
--  [求助]后台模型编写问题

麻烦你们一下帮我看看以下的后台模型有没有编错,这是我第一次编写的后台模型,谢谢

 

VARIABLE:Z=0;//定位开仓价
VARIABLE:ZD=0;//多头变量
VARIABLE:ZK=0;//空头变量
VARIABLE:开多=0;
VARIABLE:平多=0;
VARIABLE:开空=0;
VARIABLE:平空=0;
N:=barslast(DATE<>REF(DATE,1))+1;//开盘到当前周期数
//引用15分钟周的MACD
DIFF15:="BB.DIFF1#MIN15";
DEA15:="BB.DEA1#MIN15";
DIFF5:="BB.DIFF1#MIN5";
DEA5:="BB.DEA1#MIN5";
MA5日:="DD.MA5#DAY";

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

//分时图上的加权平均价
dm:=4-INTPART(LOG(C));
AA:ROUNDS(IF(sum(vol,N)=0,C,sum(C*vol,N)/sum(vol,N)),dm+2),colorred;

MA12:=EMA(C,12);

H15:=REF(MA(H,15),1);
L15:=REF(MA(L,15),1);
//CCI
TYP := (HIGH + LOW + CLOSE)/3;
CCI:=(TYP-MA(TYP,14))/(0.015*AVEDEV(TYP,14));


MA5:=MA(C,5);
MA21:=MA(C,21);

//指标线
多12:=VALUEWHEN(CROSS(DEA,0),C);
空12:=VALUEWHEN(CROSS(0,DEA),C);
多11:=VALUEWHEN(CROSS(MA5,MA21),L);
空11:=VALUEWHEN(CROSS(MA21,MA5),H);
IF  DEA>0 THEN D: 多12,COLORRED;
IF  DEA<0 THEN K: 空12,COLORGREEN;

//开仓条件
B1:= CROSS(C,D)&&DEA>0&&C>H15&&C>AA&&DIFF>DEA&&CCI>100&&TIME>=100000;
S1:= CROSS(K,C)&&DEA<0&&C<L15&&C<AA&&DIFF<DEA&&CCI<-100&&TIME>=100000 ;
B2:= CROSS(C,D)&&DEA>0&&C>AA&&DIFF>DEA&&DIFF15>DEA15&&CCI>100&&TIME<=100000;
S2:= CROSS(K,C)&&DEA<0&&C<AA&&DIFF<DEA&&DIFF15<DEA15&&CCI<-100&&TIME<=100000;

//平仓条件
PB1:=CROSS(AA,C)&&K>AA&&DEA<0;
PS1:=CROSS(C,AA)&&D<AA&&DEA>0;

//资金风险控制
BBS1:=ASSET-REF(ASSET,N),noaxis ,linethick0 ;//当天盈亏合计
BBS2:=TNUMLOSSTRADE-REF(TNUMLOSSTRADE,N);//当天亏损次数
BBS3:=BBS2<2;//限制开仓次数
BB1:=BBS1>=-5000&&BBS1<=12000 ;//限制开仓

//平空或同时开多
IF TIME>=091600&&TIME<143500&&(B1||B2)&&THOLDING<=0&&BB1&&H-L<20 THEN
BEGIN TSELLSHORT(THOLDING<0,1,LMT,C);
      TBUY(THOLDING=0,1,LMT,C);
      Z:=TENTERPRICE;
      ZD:=H-Z;END
     
IF TIME>=091600&&TIME<143500&&(B1||B2)&& THOLDING<0&&BB1 THEN  TSELLSHORT(THOLDING<0,1,LMT,C); 
  
 //平多或同时开空
IF TIME>=091600&&TIME<143500&&(S1||S2)&&THOLDING>=0&&BB1&&H-L<20 THEN
BEGIN  TSELL(THOLDING>0,1,LMT,C);
       TBUYSHORT(THOLDING=0,1,LMT,C);
       Z:=TENTERPRICE;
       ZK:=Z-L;
END
IF TIME>=091600&&TIME<143500&&(S1||S2)&& THOLDING>0&&BB1 THEN TSELL(THOLDING>0,1,LMT,C);

//持仓浮动盈亏风险控制
IF H-Z>ZD then ZD:=H-Z;//当前持仓最大浮盈计算(多单)
IF Z-L>ZK THEN ZK:=Z-L;//当前持仓最大浮盈计算(空单)
IF THOLDING=0|| THOLDING>0 THEN ZK:=0;
IF THOLDING=0|| THOLDING<0 THEN ZD:=0;
BSD:=C-Z<=ZD-15&&THOLDING>0;//多头持仓从最高浮动盈亏回撤15个点以上
BSK:=Z-C<=ZK-15&&THOLDING<0;//空头持仓从最高浮动盈亏回撤15个点以上
BSD3:=C-Z>=70&&THOLDING>0;//多头持仓浮盈70个点以上
BSK3:=Z-C>=70&&THOLDING<0;//多头持仓浮盈70个点以上
BSD1:= C-Z<=0.6*ZD && ZD>=25&&THOLDING>0;//多头浮盈从25个点以上回撤40%
BSD2:= C-Z<=ZD-15 && ZD>=45&&THOLDING>0;//多头浮盈从45个点以上回撤15个点
BSK1:= Z-C<=0.6*ZK && ZK>=25&&THOLDING<0;//多头浮盈从25个点以上回撤40%
BSK2:= Z-C<=ZK-15 && ZK>=45&&THOLDING<0;//多头浮盈从45个点以上回撤15个点   

 

//风险控制平多
IF (TIME>150500||BSD||BSD1||BSD2||BSD3||BBS1<=-6000||PB1)&&THOLDING>0 THEN
BEGIN TSELL(THOLDING>0,1,LMT,C);
END

//风险控制平空
IF (TIME>150500||BSK||BSK1||BSK2||BSK3||BBS1<=-6000||PS1)&&THOLDING<0 THEN
BEGIN TSELLSHORT(THOLDING<0,1,LMT,C);
END

//监控(开多)未成交单
KD:=TREMAINQTY(1,\'\',\'\');
IF KD<>0 THEN BEGIN
开多:=KD;
END
//对(开多)未成交单撤单,并追单
IF KD>0 THEN BEGIN
TCANCEL(1,1);
TBUY(KD=0,开多,MKT);
END

//监控(平多)未成交单
PD:=TREMAINQTY( 2,\'\',\'\');
IF PD<>0 THEN BEGIN
平多:=PD;
END
//对(平多)未成交单撤单,并追单
IF PD>0 THEN BEGIN
TCANCEL(1,2);
TSELL(PD=0,平多,MKT);
END

//监控(开空)未成交单
KK:=TREMAINQTY( 3,\'\',\'\');
IF KK<>0 THEN BEGIN
开空:=KK;
END
//对(空开)未成交单撤单,并追单
IF KK>0 THEN BEGIN
TCANCEL(1,3);
TBUYSHORT(KK=0,开空,MKT);
END

//监控(平空)未成交单
PK:=TREMAINQTY( 4,\'\',\'\');
IF PK<>0 THEN BEGIN
平空:=PK;
END
//对(平空)未成交单撤单,并追单
IF PK>0 THEN BEGIN
TCANCEL(1,4);
TSELLSHORT(PK=0,平空,MKT);
END

//在图表显示数据
多:=IF(THOLDING>0,C-Z,0);
空:=IF(THOLDING<0,Z-C,0);
最高:=MAX(ZK,ZD);
盈亏:=asset-REF(ASSET,N);
持仓:=TODAYHOLDING;
DEBUGOUT(\'当前持仓量%.2f\',持仓);
DEBUGOUT(\'当前盈亏%.2f\',盈亏 );
DEBUGOUT(\'持仓最高浮盈%.2f\',最高 );
DEBUGOUT(\'多单浮盈%.2f\',多 );
DEBUGOUT(\'空单浮盈%.2f\',空 );

 


--  作者:lichenghu
--  发布时间:2013/8/30 15:35:14
--  
好的,有空帮您看看。