以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何编写符合条件不执行:不开多和不开空不执行  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=61136)

--  作者:hlm200854321
--  发布时间:2014/1/20 17:39:36
--  如何编写符合条件不执行:不开多和不开空不执行


INPUT:SS(1,1,10000,10);
手数:=SS;
N:=BARSLAST(DATE<>REF(DATE,1));
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
A:=HHV(H,N+1);
B:=LLV(L,N+1);
观察卖出价:昨高+0.35*(昨收-昨低);//SSETUP
反转卖出价:(1.07/2)*(昨高+昨低)-0.07*昨低;//SENTER
反转买入价:(1.07/2)*(昨高+昨低)-0.07*昨高;//BENTER
观察买入价:昨低-0.35*(昨高-昨收);//BSETUP
突破买入价:(观察卖出价+0.25*(观察卖出价-观察买入价));//BBREEAK
突破卖出价:观察买入价-0.25*(观察卖出价-观察买入价);//SBREAK

MACD4:EMA(CLOSE,("MACD.MACD"(26,12,3))*3);

手数:=SS;

DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  : =EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;

LC:=REF(CLOSE,1),NOAXIS;
RSI:=SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100,NOAXIS; 
顶部雷达:=CROSS(80,RSI)*30,LINETHICK2 ,colorgreen,NOAXIS; 
DRAWTEXT(CROSS(80,RSI),30,\'见顶 \'),colorgreen,NOAXIS; 
Varb:=SMA(MAX(CLOSE-LC,0),7,1)/SMA(ABS(CLOSE-LC),7,1)*100,NOAXIS; 
Varc:=SMA(MAX(CLOSE-LC,0),13,1)/SMA(ABS(CLOSE-LC),13,1)*100,NOAXIS; 
Vard:=BARSCOUNT(CLOSE),NOAXIS; 
底部雷达:=(Varb< 20 AND Varc< 25 AND Vard> 50)*30,linethick2, colorff9933,NOAXIS;
DRAWTEXT(CROSS(100,底部雷达) ,20,\'底 \'),linethick1,COLORF00FF0,NOAXIS;
主力:=EMA( (CLOSE-MA(CLOSE,7))/MA(CLOSE,7)*480,2),linethick2 ,COLORRED,NOAXIS; 
散户:=EMA( (CLOSE-MA(CLOSE,11))/MA(CLOSE,11)*480,7),linethick2 ,COLORWHITE,NOAXIS; 
DRAWTEXT(CROSS(主力,散户) AND 主力<-10,-20,\'升\'),color00ccff,NOAXIS;   
DRAWICON(CROSS(主力,散户) AND 主力<-10 AND 散户>REF(散户,1)OR CROSS(主力,散户) AND 散户<-35 ,-15,1),NOAXIS;
DRAWTEXT(CROSS(18,RSI)AND 散户<-20 AND 底部雷达 ,25,\'底 \'),linethick1, COLORF00FF0,NOAXIS;
MAV:=(2*C+H+L)/4,NOAXIS; 
Var1:=LLV(LOW,4),NOAXIS; 
Var2:=HHV(HIGH,7),NOAXIS; 
SK:=EMA((MAV-Var1)/(Var2-Var1)*100,13),NOAXIS; 
SD:=EMA(0.667*REF(SK,1)+0.333*SK,2),NOAXIS; 
持仓:=STICKLINE(SK> SD,6,0,1,0) ,linethick3, COLORYELLOW,NOAXIS; 
空仓:=STICKLINE(SK< SD,6,0,1,0) ,linethick3, color009900,NOAXIS; 
正负量比:=12*(winner(c)-winner(o)) ,linethick2 ,colorstick,NOAXIS; 
时空分裂点:=STICKLINE(100*v/capital>= 3 and 100*v/capital<7,100*v/capital,15,7,0),linethick2, COLORff3399,NOAXIS; 
STICKLINE(MACD1>0,OPEN,CLOSE,4,0,COLORRED); 
STICKLINE(MACD1<0,OPEN,CLOSE,4,0,COLORGREEN); 

//顺序必须主要需要根据仓位先平后开的原则
平多仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
开多仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
平空仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
开空仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
不开多:=观察买入价<c AND c>突破卖出价;
不开空:=观察买入价<c AND c>突破卖出价;
IF 不开多 THEN BEGIN
EXIT 开多:BUY(开多仓条件 AND HOLDING<=0,10,MARKET,C);
EXIT 平空:SELLSHORT(平空仓条件 AND HOLDING<0,10,MARKET,C);
END
IF 不开空 THEN BEGIN
EXIT 开空:BUYSHORT(开空仓条件 AND HOLDING>=0,10,MARKET,C);
EXIT 平多:SELL(平多仓条件 AND HOLDING>0,10,MARKET,C);
END
平空:SELLSHORT(平空仓条件 AND HOLDING<0,10,MARKET,C);
平多:SELL(平多仓条件 AND HOLDING>0,10,MARKET,C);
开空:BUYSHORT(开空仓条件 AND HOLDING>=0,10,MARKET,C);
开多:BUY(开多仓条件 AND HOLDING<=0,10,MARKET,C);








--  作者:jinzhe
--  发布时间:2014/1/21 8:42:12
--  

满足条件然后不开空不开多?

那你把开空开多条件给限定一下

开多开空条件增加一个 不满足特定条件


--  作者:hlm200854321
--  发布时间:2014/1/21 12:21:34
--  
请问用什么函数表达
--  作者:jinzhe
--  发布时间:2014/1/21 13:10:37
--  
平多仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
开多仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
平空仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
开空仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
不开多:=观察买入价<c AND c>突破卖出价;
不开空:=观察买入价<c AND c>突破卖出价;
IF 不开多 THEN BEGIN
EXIT 开多:BUY(开多仓条件 AND HOLDING<=0,10,MARKET,C);
EXIT 平空:SELLSHORT(平空仓条件 AND HOLDING<0,10,MARKET,C);
END
IF 不开空 THEN BEGIN
EXIT 开空:BUYSHORT(开空仓条件 AND HOLDING>=0,10,MARKET,C);
EXIT 平多:SELL(平多仓条件 AND HOLDING>0,10,MARKET,C);
END
平空:SELLSHORT(平空仓条件 AND HOLDING<0,10,MARKET,C);
平多:SELL(平多仓条件 AND HOLDING>0,10,MARKET,C);
开空:BUYSHORT(开空仓条件 AND HOLDING>=0,10,MARKET,C);
开多:BUY(开多仓条件 AND HOLDING<=0,10,MARKET,C);

 

 

改成

 

平多仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
开多仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
平空仓条件:=主力>0 AND 正负量比>0 AND MACD1>0;
开空仓条件:=主力<0 AND 正负量比<0 AND MACD1<0;
不开多:=观察买入价<c AND c>突破卖出价;
不开空:=观察买入价<c AND c>突破卖出价;
平空:SELLSHORT(平空仓条件 and not(不开多) AND HOLDING<0,10,MARKET,C);
开多:BUY(开多仓条件 AND HOLDING<=0 and not(不开多),10,MARKET,C);
平多:SELL(平多仓条件 AND HOLDING>0  and not(不开空),10,MARKET,C);
开空:BUYSHORT(开空仓条件 AND HOLDING>=0 and not(不开空),10,MARKET,C);