以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://www.weistock.com/bbs/list.asp?boardid=4) ---- 同一个品种多个模型 合并下单 (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=89699) |
-- 作者:tsycd -- 发布时间:2016/1/12 9:33:41 -- 同一个品种多个模型 合并下单 老师好 我们在同一个内盘品种下有三个模型在跟踪,能不能 合并三个模型的信号统一下单,比如是两多一空,就只合并下一个多单? 谢谢
|
-- 作者:jinzhe -- 发布时间:2016/1/12 9:47:07 -- 那需要做引用了,用户把3个代码贴出来,我写引用格式 |
-- 作者:tsycd -- 发布时间:2016/1/12 9:52:11 -- 但是他们是运行在不同的时间周期下的,可以吗? 能不能像盈透那样直接合并下单? |
-- 作者:jinzhe -- 发布时间:2016/1/12 10:00:40 -- 不同周期的就比较难了,因为信号的原因会造成重复下单 不能像盈透那样 |
-- 作者:tsycd -- 发布时间:2016/1/21 15:41:14 -- 模型A input:LOTS(1,1,30,1); GLOBALVARIABLE:HOLD:=drawnull; VARIABLE:CW:=0; variable:n=0; 向上波动率:=(((HIGH - REF(CLOSE,1)) / REF(CLOSE,1)) * 100); AA1:=SMA(向上波动率,1,1); 向下波动率:=(((LOW - REF(CLOSE,1)) / REF(CLOSE,1)) * 100); AA:=SMA(向下波动率,1,1); DAYOPEN1:=VALUEWHEN((AA1 > REF(AA1,1)),OPEN); DAYOPEN:=VALUEWHEN((AA > REF(AA,1)),OPEN); 交易时间D:=((TIME >91500) AND (TIME <92000)) OR ((TIME >93100) AND (TIME <112900)) OR ((TIME >130000) AND (TIME <132100)) OR ((TIME >133000) AND (TIME <151300)); 交易时间K:=((TIME >91500) AND (TIME < 91900)) OR ((TIME >92700) AND (TIME <112900)) OR ((TIME >130000) AND (TIME <133000)) OR ((TIME >133000) AND (TIME <151300)); 开多平空:=(DAYOPEN * (1 + (0.3 / 208))); 开空平多:=(DAYOPEN1 * (1 - (0.23 /208))); K:=VALUEWHEN((OPEN > REF(LOW,1)),TRMA(开多平空,62)); K1:=VALUEWHEN((OPEN < REF(HIGH,1)),TRMA(开空平多,44)); K2:=EMA(HIGH,6); K3:=EMA(LOW,6); K4:=(K1 > K3); K5:=(K2 > K); K6:=FILTER(CROSS(HIGH,开多平空),1); K7:=FILTER(CROSS(开空平多,LOW),1); BO:=((HOLDING > 0) AND (ENTERBARS > 1)); SO:=((HOLDING < 0) AND (ENTERBARS > 1)); TP:=IF(BO,HHV(CLOSE,ENTERBARS),IF(SO,LLV(CLOSE,ENTERBARS),0)); OO:VALUEWHEN(DATE<>REF(DATE,1),O);//当日开盘价 IF ((K6 AND (HOLDING < 0)) AND K5) THEN BEGIN SELLSHORT((HOLDING < 0) ,HOLDING ,market),ignorecheckprice;//平空 END IF ((K7 AND (HOLDING > 0)) AND K4) THEN BEGIN SELL((HOLDING > 0),HOLDING ,market),ignorecheckprice;//平多 END IF (((K6 AND (HOLDING = 0)) AND 交易时间D) AND K5) THEN BEGIN BUY((HOLDING = 0), LOTS ,market),ignorecheckprice;//开多 n:=enterprice; END IF ((BO AND (CLOSE <= (TP * (1 - (0.0001 * 11))))) AND (HIGH >= (ENTERPRICE + (OO*13/10000)))) THEN BEGIN //多单止盈 SELL((HOLDING > 0),HOLDING,market),ignorecheckprice; END if c>n then n:=c; if n>enterprice and c<enterprice && TYPEBAR(1 ,1) >225 then BEGIN SELL((HOLDING > 0),HOLDING,market),ignorecheckprice;//平盘平多 END IF ((ENTERPRICE - CLOSE) >(OO*20/10000)) THEN //多单止损 BEGIN SELL((HOLDING > 0),HOLDING,market),ignorecheckprice; END BEGIN SELL(((HOLDING > 0) AND (TIME > 151400)),HOLDING,market); END IF (((K7 AND (HOLDING = 0)) AND 交易时间K) AND K4) THEN BEGIN BUYSHORT((HOLDING = 0), LOTS,market),ignorecheckprice;//开空 n:=enterprice; END if c>n then n:=c; if n>enterprice and c<enterprice && TYPEBAR(1 ,3) >187 then BEGIN SELLSHORT((HOLDING < 0),HOLDING,market),ignorecheckprice;//平盘平空 END IF ((CLOSE - ENTERPRICE) >(OO*30/10000)) THEN //空单止损 BEGIN SELLSHORT((HOLDING < 0),HOLDING,market),ignorecheckprice; END IF ((SO AND (CLOSE >= (TP * (1 + (0.0001 *6))))) AND (LOW <= (ENTERPRICE - (OO*15/10000)))) THEN //空单止盈 BEGIN SELLSHORT((HOLDING < 0),HOLDING,market),ignorecheckprice; END BEGIN SELLSHORT(((HOLDING < 0) AND (TIME > 151400)),HOLDING,market); END BEGIN SELL(((HOLDING > 0) AND (TIME > 151400)),HOLDING,market); END IF (DATE <> REF(DATE,1)) THEN BEGIN YTDASSET:=ASSET; END 日盈:(ASSET - YTDASSET),NODRAW,COLORRED; { KD:=; //开多条件 PD:=; //平多条件 KK:=; //开空条件 PK:=; //平空条件 平空:SELLSHORT(PK,1,THISCLOSE); //平空信号 开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号 平多:SELL(PD,1,THISCLOSE); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号 } { 信号语句排列规则——先平后开 “费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息: 持仓:holding,linethick0; 资产:asset,noaxis; 可用现金:cash(0),linethick0; } 模型B input:Y(1,1,100000000,1),TQ(3,3,60,1); RSV:=(((CLOSE - LLV(LOW,2)) / (HHV(HIGH,2) - LLV(LOW,2))) * 100); FASTK:=SMA(RSV,3,1); MA1:=SMA(FASTK,6,1); D:=SMA(MA1,5,1); PT:=(REF(HIGH,1) - REF(LOW,1)); CDP:=(((REF(HIGH,1) + REF(LOW,1)) + REF(CLOSE,1)) / 3); AH:=MA((CDP + PT),2); AL:=MA((CDP - PT),2); NH:=MA(((2 * CDP) - LOW),2); NL:=MA(((2 * CDP) - HIGH),2); NQ:=(AH + AL + NH + NL) / 4; ABB:=(((TIME0 - TIMETOT0(DYNAINFO(207))) <= TQ) OR NOT(ISLASTBAR)); IF ABB then ; IF ((HOLDING > 0) AND CROSS((HHV(NQ,6) * (1 - (2 * 0.001))),NQ)) THEN BEGIN SELL((HOLDING > 0),Y,market); END IF ((HOLDING < 0) AND CROSS(NQ,(LLV(NQ,6) * (1 + (2 * 0.001))))) THEN BEGIN SELLSHORT((HOLDING < 0),Y,MARKET); END IF ((((HOLDING = 0) AND CROSS(NQ,(LLV(NQ,6) * (1 + (2 * 0.001))))) AND (MA1 >= REF(MA1,1))) AND (TIME <= 150300)) THEN BEGIN BUY((HOLDING = 0) ,Y,MARKET); END IF ((((HOLDING = 0) AND CROSS((HHV(NQ,6) * (1 - (2 * 0.001))),NQ)) AND (MA1 <= REF(MA1,1))) AND (TIME <= 150300)) THEN BEGIN BUYSHORT((HOLDING = 0) ,Y,MARKET); END BO:=((HOLDING > 0) AND (ENTERBARS > 1)); SO:=((HOLDING < 0) AND (ENTERBARS > 1)); TP:=IF(BO,HHV(CLOSE,ENTERBARS),IF(SO,LLV(CLOSE,ENTERBARS),0)); IF ((BO AND (CLOSE <= (TP * (1 - ((0.0001 * 11) * 3))))) AND (HIGH >= (ENTERPRICE + 10))) THEN BEGIN SELL((HOLDING > 0),Y,market); END IF ((SO AND (CLOSE >= (TP * (1 + ((0.0001 * 5) * 3))))) AND (LOW <= (ENTERPRICE - 12))) THEN BEGIN SELLSHORT((HOLDING < 0),Y,MARKET); END BEGIN SELLSHORT(((HOLDING < 0) AND (TIME > 151200)),HOLDING,market); END BEGIN SELL(((HOLDING > 0) AND (TIME > 151200)),HOLDING,market); END IF (DATE <> REF(DATE,1)) THEN BEGIN YYTDASSET:=ASSET; END 日盈:(ASSET - YYTDASSET),NODRAW,COLORRED; |
-- 作者:tsycd -- 发布时间:2016/1/21 15:42:25 -- 请老师帮忙把两个模型合并下单,谢谢 股指5分钟
|
-- 作者:jinzhe -- 发布时间:2016/1/21 16:04:14 -- 稍等,这个需要时间 |
-- 作者:jinzhe -- 发布时间:2016/1/21 16:19:43 -- 我发现上面的信号并非在同一根k线上产生的,这个要如何处理? |
-- 作者:jinzhe -- 发布时间:2016/1/21 16:20:46 -- 如果在一根k线上, 一个出开仓信号,一个出平仓信号,那么又要如何处理? |
-- 作者:tsycd -- 发布时间:2016/1/21 17:54:42 -- 可不可以用轮询方式,比如说30秒计算一次持仓,然后下单? 谢谢 |