以文本方式查看主题

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

--  作者:ma9453
--  发布时间:2016/4/1 11:27:54
--  没有空头交易结果怎么处理
我自己在一个简单的策略上做了一些非常简单的修改,测试的时候发现单独测多头或者空头都没问题,如果双向测试的话,就只有多头的开仓,没有空头的开仓,代码应该没有什么问题,只是增加了一些标志位,请问我是不是哪里设置的有问题?
--  作者:jinzhe
--  发布时间:2016/4/1 11:29:07
--  

用户讲的有些抽象,请贴出代码,我们根据实际的代码做分析


--  作者:ma9453
--  发布时间:2016/4/1 11:33:35
--  
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
variable:highest = 0;
variable:lowest = 0;
variable:CrossPrice = 0;
variable:Position = 0;
//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
PP:=Position;

手数:=ss;
//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件

if 开多平空条件 or 开空平多条件 then begin
 CrossPrice := CLOSE;
end 
//交易系统

BUY(开多平空条件,手数,MARKET);
BUYSHORT(开空平多条件,手数,MARKET);


if Position<>0 and (开多平空条件 or 开空平多条件) THEN begin
 SELLSHORT(开多平空条件,手数,MARKET);
 SELL(开空平多条件,手数,MARKET);
 Position := 0 ;
end

if 开多平空条件 then begin
 highest := CLOSE;
 Position := 1;
end
 
if Position=1 and highest<HIGH then begin
 highest:=MAX(highest,HIGH);
end
 
if 开空平多条件 then begin
 lowest := CLOSE ;
 Position := 2 ;
end 

if Position=2 and lowest>LOW then begin
 lowest:=MIN(lowest,LOW);
end 


当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

//注意交易系统先开后平的原则

--  作者:ma9453
--  发布时间:2016/4/1 11:33:46
--  
这个是代码


--  作者:jinzhe
--  发布时间:2016/4/1 13:17:20
--  

variable:highest = 0;
variable:lowest = 0;
variable:CrossPrice = 0;
variable:Position = 0;
//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
PP:=Position;


手数:=ss;
//交易条件


开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件


if 开多平空条件 or 开空平多条件 then begin
 CrossPrice := CLOSE;
end
//交易系统

SELLSHORT(开多平空条件,手数,MARKET);
BUY(开多平空条件,手数,MARKET);
SELL(开空平多条件,手数,MARKET);
BUYSHORT(开空平多条件,手数,MARKET);

 


if Position<>0 and (开多平空条件 or 开空平多条件) THEN begin

 Position := 0 ;
end


if 开多平空条件 then begin
 highest := CLOSE;
 Position := 1;
end
 
if Position=1 and highest<HIGH then begin
 highest:=MAX(highest,HIGH);
end
 
if 开空平多条件 then begin
 lowest := CLOSE ;
 Position := 2 ;
end


if Position=2 and lowest>LOW then begin
 lowest:=MIN(lowest,LOW);
end

 


当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

 

 

类似于这样反手的,要按照 平空--开多---平多---开空的顺序写