以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=168928) |
-- 作者:STREAM -- 发布时间:2019/3/22 14:37:57 -- 如何同方向连亏两次后,禁止同方向开仓 诸位同行高人,我有一个想法不知如何实现,请诸位帮忙! 如何同方向连亏两次后,禁止同方向开仓。如果在禁止开仓仍然连续发出同方向信号,则在第二次信号出现时 允许开仓 。 谢谢!
|
-- 作者:FireScript -- 发布时间:2019/3/22 15:01:41 -- 需要明确下: 1.亏损按照完整的平仓亏损计算。 2.连亏的定义。如果先开多 平仓后再次开空,等空头平了再开多,这种是否算按照连续开多处理还是说必须连续2次不间断的开多平多。 |
-- 作者:STREAM -- 发布时间:2019/3/22 15:05:25 -- 是的 1.亏损按照完整的平仓亏损计算。 2.连亏的定义。必须连续2次不间断的开多平多。 谢谢! 刚刚 金字塔系统 竟然还崩溃了
|
-- 作者:FireScript -- 发布时间:2019/3/22 16:34:51 -- input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置 VARIABLE:ct1:=0,ct2:=0; 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; DIFF:=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD1:=2*(DIFF-DEA), COLORSTICK; macdjc:cross(diff,dea);//macd金叉 macdsc:cross(dea,diff); kdjjc:cross(k,d);//kdj金叉 kdjsc:cross(d,k); if macdjc and holding=0 and not(ct1=2 and NUMPROFIT(1)<0 and NUMPROFIT(2)<0) then //macd金叉 且满足条件 not(连续开多且2次开多盈亏均为负) 开多 begin buy(holding=0,1,MARKET); ct1:=ct1+1;//ct1记录连续开多次数 ct2:=0;//开多时重置开空的计数 end if macdsc and holding>0 then //macd死叉平多 begin sell(holding>0,holding,MARKET); end if kdjsc and holding=0 and not(ct2=2 and NUMPROFIT(1)<0 and NUMPROFIT(2)<0) then begin buyshort(holding=0,1,market);//kdj死叉开空 ct2:=ct2+1;//ct2记录开空的次数 ct1:=0;//开空时重置开多的计数 end if kdjjc and holding<0 then begin sellshort(holding<0,holding,market);//kdj金叉平空 end 提供一个范例供参考,代码有点多,你先消化下思路。我尽量多做了写注释,有些地方不清晰的可以跟帖。
|
-- 作者:STREAM -- 发布时间:2019/3/23 14:27:14 -- 谢谢FireScript! 我基本看懂了。顺着你的思路 ,我消化一下。 ![]() |