以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 请问多头排列的写法 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=185163) |
-- 作者:leonard2887 -- 发布时间:2021/4/13 13:49:34 -- 请问多头排列的写法 老师您好,请问均线多头排列该怎么表达,是ma5>ma10>ma20吗?还是其他的表现形式,谢谢 |
-- 作者:FireScript -- 发布时间:2021/4/13 13:50:08 -- ma5>ma10 and ma10>ma20 一般都是这种写法的。
|
-- 作者:leonard2887 -- 发布时间:2021/4/13 15:01:32 -- 假设我想让人小周期和大周期都是多头排列的时候,且MACD大0开仓,这个该怎么表述,可能是我语法的问题,机器不认,谢谢 |
-- 作者:FireScript -- 发布时间:2021/4/13 15:12:44 -- 那就要跨周期跨指标了。 多头排列写法不变,代码还是前面的。单独放到一个指标里。比如指标为A。然后你再跨周期调用就行了。 指标A的代码: ma5:ma(c,5); ma10:ma(c,10); ma20:ma(c,20); dtpl:ma5>ma10 and ma10>ma20; 如果不跨品种的话。调用写法很容易。 input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6); DIFF :EMA(CLOSE,S) - EMA(CLOSE,P); DEA :EMA(DIFF,M); MACD1 :2*(DIFF-DEA), COLORSTICK; cd0: ma5>ma10 and ma10>ma20;//当前周期多头排列。均线你自行完善下定义。 cd1:“A.dtpl#MIN10”; 引用10分钟周期的指标A的dtpl. cd2:MACD1>0; 指标调用的函数说明: 引用操作符 例如: "INDIE.VAR"(P1,P2) 引用INDI指标的VAR输出,计算参数为P1,P2。 数据类型有TICK、MIN1、MIN3、MIN5、MIN10、MIN15、MIN30、MIN60、DAY、WEEK、MONTH、YEAR、MULTIDAY、MULTIMIN、MULTISEC、MULTIHOUR、QUARTER、SEMIYEAR、SOLARTERM "MACD.DIFF#WEEK"(26,10,5) 引用周线数据的MACD公式指标线DIFF输出 "MACD.DIFF"表示引用MACD指标的DIFF指标线输出并且使用公式的默认参数。 "000001$CLOSE" 引用品种000001的收盘价 "SZ000001$CLOSE#WEEK" 引用SZ市场的品种000001周线收盘价 "VOL##DAY"引用日线数据的前一周期的VOL指标 引用数据时,需要实现确认被引用品种周期数据齐全,再首次使用或者在不确定时,请手工进行数据补充工作 "DLLNAME@FNCNAME"(P1,P2) 引用DLLNAME.DLL的FNCNAME函数,计算参数为P1,P2 用户函数模式:#用户函数.指标线(参数)# 例如:#test01.B1(20,45)#,表示调用test01指标的B1输出线,参数为20和45,使用用户函数模式比扩周期引用更加节省内存,提高运行效率. |
-- 作者:leonard2887 -- 发布时间:2021/4/13 15:28:10 -- 谢谢 谢谢您,我先试下,辛苦您了 |
-- 作者:leonard2887 -- 发布时间:2021/4/13 17:09:20 -- 您好,公式不做空,麻烦您帮我看下,谢谢: INPUT:ZS(20,5,30,5); INPUT:ZY(20,5,100,5); INPUT:HT(20,5,50,5); INPUT:KXSL(20,0,100,5);//K线数量 INPUT:SS(1,1,10000,1);////手数 MA20:=eMA(C,20); MA60:=EMA(C,60); ma120:=ema(c,120); DIFF := EMA(CLOSE,14) - EMA(CLOSE,26); DEA := EMA(DIFF,9); MACD1:=2*(DIFF-DEA); ///周期共振 MA20D:=STKINDI(\'\',\'JLLHDAY.MA3\',0,6,-1),COLORWHITE; MA60D:=STKINDI(\'\',\'JLLHDAY.MA4\',0,6,-1); MA120D:=STKINDI(\'\',\'JLLHDAY.MA5\',0,6,-1); DTPL:= MA20D>MA60D AND MA60D>MA120D;;//多头排列 KTPL:= MA20D<MA60D AND MA60D<MA120D;//空头排列 dtpl1:=ma20>ma60 and ma60>ma120; ktpl2:=ma20<ma60 and ma60<ma120; DRAWICON(DTPL,RCC,031); DRAWICON(KTPL,RCC,02); 入场价:=REF(CLOSE,ENTERBARS+1); BKHIGH:=HHV(HIGH,ENTERBARS+1); SKLOW:=LLV(LOW,ENTERBARS+1); BBB:= c>DTPL1 and DTPL and cross(diff,dea) and diff>0 and dea>0; SSS:= c<ktpl2 and KTPL and cross(dea,diff) and diff<0 and dea<0; //开多条件 IF BBB AND HOLDING=0 THEN BEGIN SELLSHORT(1,SS,MARKET); BUY(HOLDING=0,SS,MARKET); ////开仓 END IF L<入场价-OPEN*ZS/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多止损:SELL(1,SS,MARKET); IF h>入场价+OPEN*ZY/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多止盈:SELL(1,SS,MARKET); IF C<BKHIGH-OPEN*HT/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多回头1:SELL(1,SS,MARKET); //开空条件 IF SSS AND HOLDING=0 THEN BEGIN SELL(1,SS,MARKET); BUYSHORT(HOLDING=0,SS,MARKET); ////开仓 END IF h>入场价+OPEN*ZS/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空止损:SELLSHORT(1,SS,MARKET); IF l<入场价-OPEN*ZY/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空止盈:SELLSHORT(1,SS,MARKET); IF C>SKLOW+OPEN*HT/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空回头1:SELLSHORT(1,SS,MARKET); ENB:ENTERBARS,COLORWHITE,NODRAW; IF ENB>=KXSL && BBB=0 && HOLDING>0 AND ENTERBARS>0 /////平仓条件 THEN 时间: SELL(1,SS,MARKET); /////平仓 SNB:ENTERBARS,COLORWHITE,NODRAW; IF SNB>=KXSL && SSS=0 && HOLDING<0 AND ENTERBARS>0 /////平仓条件 THEN 时间1:sellshort(1,SS,MARKET); /////平仓 |
-- 作者:FireScript -- 发布时间:2021/4/13 17:12:54 -- 是要去掉开空头的部分? |
-- 作者:leonard2887 -- 发布时间:2021/4/13 17:18:44 -- 我想保留开空的部分,写好后,机器只做多,不做空 |
-- 作者:FireScript -- 发布时间:2021/4/13 17:22:26 -- 那你直接把空头部分注释掉就行了。需要用的时候再去掉注释就行了。 //开多条件 IF BBB AND HOLDING=0 THEN BEGIN //SELLSHORT(1,SS,MARKET); BUY(HOLDING=0,SS,MARKET); ////开仓 END IF L<入场价-OPEN*ZS/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多止损:SELL(1,SS,MARKET); IF h>入场价+OPEN*ZY/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多止盈:SELL(1,SS,MARKET); IF C<BKHIGH-OPEN*HT/1000 AND HOLDING>0 AND ENTERBARS>0 THEN 多回头1:SELL(1,SS,MARKET); //开空条件 IF SSS AND HOLDING=0 THEN BEGIN SELL(1,SS,MARKET); //BUYSHORT(HOLDING=0,SS,MARKET); ////开仓 END //IF h>入场价+OPEN*ZS/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空止损:SELLSHORT(1,SS,MARKET); //IF l<入场价-OPEN*ZY/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空止盈:SELLSHORT(1,SS,MARKET); //IF C>SKLOW+OPEN*HT/1000 AND HOLDING<0 AND ENTERBARS>0 THEN 空回头1:SELLSHORT(1,SS,MARKET); ENB:ENTERBARS,COLORWHITE,NODRAW; IF ENB>=KXSL && BBB=0 && HOLDING>0 AND ENTERBARS>0 /////平仓条件 THEN 时间: SELL(1,SS,MARKET); /////平仓 //SNB:ENTERBARS,COLORWHITE,NODRAW; // //IF SNB>=KXSL && SSS=0 && HOLDING<0 AND ENTERBARS>0 /////平仓条件 //THEN 时间1:sellshort(1,SS,MARKET); /////平仓 // |
-- 作者:FireScript -- 发布时间:2021/4/13 17:25:36 -- 如果是实际交易中时候 ,也可以在设置里过滤空头信号。但是图表上还是正常显示空头信号。 这里可以选择需要执行的信号。 |