帮修正一下这个日内限制
因为仓位管理有分形,不能在IF语句中开平仓
要求是这样的:日内只允许一次上穿或下穿开平仓,但是在上方及下方可以开平仓多次
当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限
当下穿开空仓后,如果行情回到上方,那平能平空仓,但能平多仓,如果再回到下方多空不限
下面是精减过的调式代码
ma1:ma(c,100);
KDD:=close>ma1; //开多条件
PDD:=ma1>close; //平多条件
KKD:=ma1>close; //开空条件
PKD:=close>ma1; //平空条件
//------------------软件限制开关开始-----------
variable:n1:=1;
variable:n2:=1;
//正关
if n1=1 and KDD and holding=0 then begin //怎么知道开过仓?
// buy(1,1,marketr); 因为开平仓部门有仓位分形,没有办法在这里开平仓
n1:=0; //平多,开空无效
end
//负关
if n2=1 and KKD and holding=0 then begin
// buy(1,1,marketr); 因为开平仓部门有仓位分形,没有办法在这里开平仓
KDD:=0;
n2:=0; //平空,开多无效
end
if time=closetime(0) then n1:=1;
if time=closetime(0) then n2:=1;
IF n1=0 and C<ma1 THEN PDD:=0; //当开过一次多仓时,价格回到低位也不允许平多仓
IF n2=0 and C>ma1 THEN PKD:=0; //当开过一次空仓时,价格回到高位也不允许平空仓
//--------------软件限制开关结束---------得到的标志可以放在后面加以限制-----------------
KD:=KDD ; //开多条件
PD:=PDD and n1; //平多条件
KK:=KKD and n2; //开空条件
PK:=PKD ;//and n1; //平空条件
平空:SELLSHORT(PK,1,THISCLOSE); //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL(PD,1,THISCLOSE); //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号
当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限
这句要表达什么意思?
就是防止来回的打仓,在那个均线上方,不限制,要是上了均线开多后,又下来,就是杠仓了
相当于这样,PD:=PDD and C<ma1 AND 今天开的仓就不能平仓,但是昨天的单可以平 (如果C>ma1那平仓有效); //平多条件 ;
这有一个不会做的标志,那个开关用N可以,但是开仓标志不行,因为下面有可能开仓许可但是他并没有开仓,因为这个标志只有开过仓才有效,想在IF里不停的置,当有效开仓后就没有加法进IF里置1,但是写不出来
这里面有一个问题,是我上方的开仓请求,下面这开平仓处理不一定会执行,因为开平仓中还有很多限制
我上面没有写更多的如下(这个当日只限一次的开仓限制只是其中的一个限制)
开多:BUY(KD and 时间 AND 开仓数量 AND 限制开仓 AND 限制开仓2 AND HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL(PD and 时间 AND 开仓数量 AND 限制平仓 AND 限制平仓2,1,THISCLOSE); //平多信号
以下是引用jinzhe在2017-2-16 11:18:33的发言:
当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限
这句要表达什么意思?
”那平能平多仓,但能平空仓”
我的意思是上面那段话里面的这句话,不知道讲什么意思,
你只要一个标志就行,如允许平仓,允可平仓:=1;这样就会有程序去执行
你再回到问题的原点,只要不要在IF里面开平仓,而把可以开平仓用标志标上,我在后面会有程序去执行开平仓的就可以了要求是这样的:日内只允许一次上穿或下穿开平仓,但是在上方及下方可以开平仓多次
当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限
当下穿开空仓后,如果行情回到上方,那平能平空仓,但能平多仓,如果再回到下方多空不限
//------------------------------------
Post By:2017-2-16 11:48:44 Post IP:121.13.65.239[只看该作者] 这里面有一个问题,是我上方的开仓请求,下面这开平仓处理不一定会执行,因为开平仓中还有很多限制
我上面没有写更多的如下(这个当日只限一次的开仓限制只是其中的一个限制) 开多:BUY(KD and 时间 AND 开仓数量 AND 限制开仓 AND 限制开仓2 AND HOLDING=0,1,THISCLOSE); //开多信号 平多:SELL(PD and 时间 AND 开仓数量 AND 限制平仓 AND 限制平仓2,1,THISCLOSE); //平多信号
|
以下是引用jinzhe在2017-2-16 13:13:35的发言:
”那平能平多仓,但能平空仓”
我的意思是上面那段话里面的这句话,不知道讲什么意思,
所以, 你能不能解释一下这句话,好让我知道你想要干什么?
我就是有两个标志,一个是允许平多一个不允许
好吧,你当不存在,只出一个限制当日已经过线的平多,就是开多了,再回来不许平多,再回到线上才允许平多
[此贴子已经被作者于2017-2-16 14:51:07编辑过]