如果当日出现一次多头持仓并平仓后,则多头不要开仓了
空头还是可以开
怎么编
图表不支持同时锁仓,即不能同时持有空头和多头。
只开仓1次,可以直接通过holding进行限制,只有当图表holding=0时,才可以开仓。
if 开仓条件 and holding=0 then begin
buy(....);
end
我说的是只是单向开
不是套利
是当日只开一次多头
即第一次多头已平了,此时持仓也是0,可能出现多头信号,但是不再开仓了
第二次多头不开
[此贴子已经被作者于2018/10/29 15:46:58编辑过]
buycond:TYPEBAR(1,1)>TODAYBAR and holding=0 and cond;
开仓条件加一些代码。
假定以一分钟计一个BAR,七分钟后开仓,这时TyPEbar会永远小于todaybar
这种你直接用全局变量记录交易次数就行了。
【金字塔使用技巧】----限定一天交易次数
variable:num=0;// 全局变量,来控制当天交易次数
cs:=5;//限定一天最多交易5次
ma5:=ma(close,5);
ma20:=ma(close,20);
con1:=cross(ma5,ma20);
con2:=cross(ma20,ma5);
if cond2 and holding>0 then sell(1,1,market);
if cond1 and holding=0 and lossnum<5 then
begin
buy(1,1,market);
num:=num+1;
end
if time=closetime(0) then num:=0;// 商品期货,收盘的同时,num赋值为0
//收盘num不赋值为0,第二天就不再开仓了
你不是要日内只开一次仓么。所以小于刚好限制后面再次开多啦。
亦或者你按照6楼的,不过开多和开空需要分别用2个变量去控制了。
昨天的TyPEbar与今天的信号有时是大于是重复的
VARIABLE:n1:=0,n2:=0;
ma5:ma(c,5);
ma20:ma(c,20);
cond1:cross(ma5,ma20);
cond2:cross(ma20,ma5);
if COND1 and n1<1 THEN BEGIN
sellshort(holding<0,1,MARKET);
buy(HOLDING=0,1,MARKET);
n1:=n1+1;
end
if COND2 and n2<1 THEN BEGIN
sell(holding>0,1,MARKET);
buyshort(holding=0,1,MARKET);
n2:=n2+1;
end
if COND1 THEN BEGIN
sellshort(holding<0,1,MARKET);
end
if COND2 THEN BEGIN
sell(holding>0,1,MARKET);
n2:=n2+1;
end
if time>CLOSETIME(0)-30 then BEGIN
n1:=0;
n2:=0;
ENd
s1:n1;
s2:n2;
这个错在哪里