以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=182962) |
-- 作者:wweerr -- 发布时间:2020/11/11 23:29:52 -- 加仓信号 大师请教一下!一个方向出现三次以上开仓时马上全平,而且后面同方向开仓无效,直到出现不同方向为止。 比如:多单出现三了次开多信号,当出现第四次时就全平多单,后面的多单信号不开仓。当出现开空时再开空单。空单也是就是加仓了三次后第四次加空信号出现就全平,后面出现空单信号无效。
|
-- 作者:FireScript -- 发布时间:2020/11/12 9:09:11 -- 需要明确下:开仓条件是某个单一条件反复触发,还是有多个独立的开仓条件在触发? |
-- 作者:wweerr -- 发布时间:2020/11/12 12:32:52 -- 单一的条件;如条件:开盘价大于收盘价开多仓。出现三根阳线后面的阳线不再表示,且平多仓。出现阴K线再开空仓,同样出现三次后面的阴线不再表示,且平空仓。请大神编一个!!!!谢谢 |
-- 作者:wweerr -- 发布时间:2020/11/12 13:21:46 -- 开仓条件是某个单一条件反复触发 |
-- 作者:FireScript -- 发布时间:2020/11/12 13:32:35 -- 还有个地方需要处理。你开了一次多,次根K立马就触发开空条件怎么处理?忽略掉?直到开足三次多头? |
-- 作者:wweerr -- 发布时间:2020/11/12 18:39:27 -- 开了一次多,后出现开一次空有效,只是连开了三次多单后第四次出现开多就全平多单,以后的所有多单无效不开多仓,直到出现开空信号才开空单为止。开空反过来就是一样的。麻烦大神了! 只是连开了三个多单,在第四个多单信号出现时平仓。
|
-- 作者:wweerr -- 发布时间:2020/11/12 21:33:36 -- 条件w 当开多条件满足W时,开多单一次 ,再一次出现开多条件信号W时开多单第二次,再一次出现开多信号W时开多单第三次,当出现这种连续开多单时在出现第四次W开多时平多单,且以后出现N次条件W开多单都无效,直到出现反向开空单。 当出现一次开多后,再出现开空这样的信号还是不变,照样执行开平空信号。只是要表示当出现连续三次开多,中单没有开空的时候。当出现第四次开多要提示信号!
|
-- 作者:FireScript -- 发布时间:2020/11/13 9:57:05 -- VARIABLE:ct:=0,mark:=0;//使用全局变量ct记录单向的开仓次数,mark表示下次可开仓的方向。在连续单向开仓三次后,mark重置一次或者是反手后也会重置一次 ma25:=ma(c,25); ma50:=ma(c,50); masc:cross(ma50,ma25); input:n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置 RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:SMA(RSV,P1,1); D:SMA(K,P2,1); J:3*K-2*D,NODRAW; kdjjc:cross(k,d),NODRAW;//kdj金叉 //以kdjjc金叉作为开仓条件 masc死叉作为平仓条件。你替换成自己的条件即可 //遇到反向信号时候直接反手 if kdjjc and ct=3 and holding>0 then //满足已经单向开仓三次,则平仓 重置全局变量 begin sell(1,holding,market); mark:=-1; ct:=0; end if holding<0 and kdjjc then //反手 begin 反手平空:sellshort(1,holding,market); ct:=0; mark:=1; end if kdjjc and ct<3 and mark>=0 then //开仓+加仓 begin buy(ct<3,1,market); if holding>=0 then ct:=ct+1; end if masc and ct=3 and holding<0 then //满足已经单向开仓三次,则平仓 重置全局变量 begin sellshort(1,holding,market); mark:=1; ct:=0; end if holding>0 and masc then //反手 begin 反手平多:sell(1,holding,market); ct:=0; mark:=-1; end if masc and ct<3 and mark<=0 then //开仓+加仓 begin buyshort(ct<3,1,market); if holding<=0 then ct:=ct+1; end DRAWICON(kdjjc,h,1);//标记下金叉死叉的位置,方便观察。 DRAWICON(masc,l,2); |
-- 作者:FireScript -- 发布时间:2020/11/13 9:57:50 -- 楼上代码供参考。主要就是需要用到全局变量来记录开仓次数。以及在合适时机重置全局变量。 |
-- 作者:wweerr -- 发布时间:2020/11/13 12:36:43 -- 图表交易能用你编的吗? |