以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助]对应条件开,平仓怎么写 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=147459) |
-- 作者:binsen0020 -- 发布时间:2017/2/7 10:02:16 -- [求助]对应条件开,平仓怎么写 请教老师,对应条件开,平仓怎么写? 多,空仓并存;我做的只会开空,不会开多,请帮忙改一下,谢谢! variable:b1=0,b2=0,b3=0,b4=0,b5=0,s1=0,s2=0,s3=0,s4=0,s5=0; M7:=eMA(C,30); M6:=eMA(C,20); M5:=eMA(C,10); M4:=eMA(C,5); max74:max(max(max(m4,m5),m6),m7),COLORMAGENTA,linethick2; j1:ema(c,3); min74:min(min(min(m4,m5),m6),m7),COLORred,linethick2; kcw:=1; //||开多1*********************************|| if b1=0&&j1>min74 then begin b1:=1; buy(1,kcw,thisclose); end //||平多1*********************************|| if HOLDING<>0&&b1=1&&j1<min74 then begin SELL(1,kcw,THISCLOSE); b1:=0; end //||开空1*********************************|| if s1=0&&j1<min74 then begin s1:=1; BUYSHORT(1,kcw,thisclose); end //||平空1*********************************|| if HOLDING<>0&&s1=1&&j1>min74 then begin SELLSHORT(1,kcw,THISCLOSE); s1:=0; end //||开多2*********************************|| if b2=0&&j1>max74 then begin b2:=2; buy(1,kcw,thisclose); end //||平多2*********************************|| if HOLDING<>0&&b2=2&&j1<max74 then begin SELL(1,kcw,THISCLOSE); b2:=0; end //||开空2*********************************|| if s2=0&&j1<max74 then begin s2:=2; BUYSHORT(1,kcw,thisclose); end //||平空2*********************************|| if HOLDING<>0&&s2=2&&j1>max74 then begin SELLSHORT(1,kcw,THISCLOSE); s2:=0; end |
-- 作者:jinzhe -- 发布时间:2017/2/7 10:12:19 -- if b1=0&&j1>min74 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
开仓的修改为: if b1=0 and j1>min74 and holding=0 then
begin
b1:=1;
buy(1,kcw,thisclose);
end
即添加holding=0 这个条件,开多开空都要加
平仓的修改为:
if HOLDING<0 and s2=2 and j1>max74 then
begin
SELLSHORT(1,kcw,THISCLOSE);
s2:=0;
end
if HOLDING>0 and b1=1 and j1<min74 then
begin
SELL(1,kcw,THISCLOSE);
b1:=0;
end
即平多的改为holding>0 ,平空的改为holding<0 |
-- 作者:binsen0020 -- 发布时间:2017/2/7 10:24:44 -- 谢谢回复!但是这样只会开1单,应该要开2单同方向的才行。 |
-- 作者:jinzhe -- 发布时间:2017/2/7 10:31:20 -- 那么开多的修改为:holding>=0 开空的修改为:holding<=0 |
-- 作者:binsen0020 -- 发布时间:2017/2/7 10:44:57 -- 改过了,但只会开一个方向,要么开多,要只开空。不知什么原因? |
-- 作者:jinzhe -- 发布时间:2017/2/7 10:52:29 -- 你把全部代码发一下 |
-- 作者:binsen0020 -- 发布时间:2017/2/7 10:57:44 -- variable:b1=0,b2=0,b3=0,b4=0,b5=0,s1=0,s2=0,s3=0,s4=0,s5=0; M7:=eMA(C,40); M6:=eMA(C,30); M5:=eMA(C,20); M4:=eMA(C,10); max74:max(max(max(m4,m5),m6),m7),COLORMAGENTA,linethick2; j1:ema(c,3); min74:min(min(min(m4,m5),m6),m7),COLORred,linethick2; kcw:=1; //||开多1*********************************|| if holding<=1&&b1=0&&j1>min74 then begin b1:=1; buy(1,kcw,thisclose); end //||平多1*********************************|| if HOLDING>0&&b1=1&&j1<min74 then begin SELL(1,kcw,THISCLOSE); b1:=0; end //||开空1*********************************|| if holding>=-1&&s1=0&&j1<min74 then begin s1:=1; BUYSHORT(1,kcw,thisclose); end //||平空1*********************************|| if HOLDING<0&&s1=1&&j1>min74 then begin SELLSHORT(1,kcw,THISCLOSE); s1:=0; end //||开多2*********************************|| if holding<=1&&b2=0&&j1>max74 then begin b2:=2; buy(1,kcw,thisclose); end //||平多2*********************************|| if HOLDING>0&&b2=2&&j1<max74 then begin SELL(1,kcw,THISCLOSE); b2:=0; end //||开空2*********************************|| if holding>=-1&&s2=0&&j1<max74 then begin s2:=2; BUYSHORT(1,kcw,thisclose); end //||平空2*********************************|| if HOLDING<0&&s2=2&&j1>max74 then begin SELLSHORT(1,kcw,THISCLOSE); s2:=0; end 持仓:holding,linethick0; 资产:asset,noaxis,colorgray,PRECISION0; 可用现金:cash(0),linethick0,PRECISION0; |
-- 作者:jinzhe -- 发布时间:2017/2/7 11:01:07 --
|
-- 作者:jinzhe -- 发布时间:2017/2/7 11:01:35 -- 原因:上面我要求你改holding=0为holding>=0和holding<0 你没照着改 |
-- 作者:binsen0020 -- 发布时间:2017/2/7 11:09:49 -- 呵呵,可以了,谢谢! |