以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  


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>=0 && 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<=0&&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>=0&&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<=0&&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 11:01:35
--  

原因:上面我要求你改holding=0为holding>=0和holding<0

你没照着改


--  作者:binsen0020
--  发布时间:2017/2/7 11:09:49
--  
呵呵,可以了,谢谢!