以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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! 我基本看懂了。顺着你的思路 ,我消化一下。图片点击可在新窗口打开查看