我的思路是
5日线10日线金叉,买入;第一次收盘价下穿5日线,减一半仓。第二次收盘价下穿5日线,全平。
5日线上拐(今5日线高于昨天5日线,昨天5日线低于前天5日线,5日线高于10日线),买入;第一次收盘价下穿5日线,减一半仓。第二次收盘价下穿5日线,全平。
这样的话,买入时就不能限制HOLDING=0,但是如果没有这个限制,因为并不是每笔交易都有一个单号(外汇MT4平台每笔都有一个单号),在执行平仓操作时,就容易平乱了。
应该如何编写呢?谢谢
按你的意思 是有2个开仓条件 然后分别运行 互补干扰
2种方式
1、你把思路写成2个模型 自己建一个框架 分别运行2个模型
2、用variable 设置2个参数 a=0 和 b=0
5日线10日线金叉 and a=0 开仓时a=1. 第一次收盘价下穿5日线 and a=1 平半仓 全平后 恢复a的赋值 a=0
同理,5日线上拐 and b=0开仓 第一次收盘价下穿5日线and b=1 平半仓 全平后 恢复b的赋值 b=0
ma5:ma(c,5);
ma10:ma(c,10);
variable:cx:=0;
cond:cross(c,ma5) ;
if cross(ma5,ma10) then buy(1,2,market);
cc:holding/2;
bb:exitbars;
//if ma5>ref(ma5,1) and ref(ma5,1)<ref(ma5,2) and ma5>ma10 then buy(1,2,market);
if holding>0 and cond and cx=0 then
begin
sell(1,holding/2,market);
cx:=1;
end
dd:cx;
if holding>0 and cond and cx=1 and EXITBARS>0 then
begin
sell(1,0,market);
cx:=0;
end
这里有一个很棘手的问题:上拐后开仓,很可能在没有平仓前,又发生上拐,需要再次开仓。如果设全局变量a和b,解决不了这个问题,应该怎么办呢?
你开仓语句 不要加入变量控制就不会有这个问题了。
例:
variable:aa=0;
if cond then buy(1,1,market);
不要写成
if cond and aa=0 then buy(1,1,market);
if cond then buy(1,1,market);
就回到我最初的模型了,如我在最上面说的,我现在要做的是允许在没有平仓的条件下,多次开仓,而且平仓时互不影响,应该怎么办呢?