以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  帮修正一下软件限制开关  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=147821)

--  作者:XXL
--  发布时间:2017/2/16 11:04:52
--  帮修正一下软件限制开关
帮修正一下这个日内限制
因为仓位管理有分形,不能在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);     //开空信号


--  作者:jinzhe
--  发布时间:2017/2/16 11:18:33
--  

当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限

这句要表达什么意思?


--  作者:XXL
--  发布时间:2017/2/16 11:33:41
--  
就是防止来回的打仓,在那个均线上方,不限制,要是上了均线开多后,又下来,就是杠仓了

相当于这样,PD:=PDD  and C<ma1  AND  今天开的仓就不能平仓,但是昨天的单可以平   (如果C>ma1那平仓有效);          //平多条件 ;       



这有一个不会做的标志,那个开关用N可以,但是开仓标志不行,因为下面有可能开仓许可但是他并没有开仓,因为这个标志只有开过仓才有效,想在IF里不停的置,当有效开仓后就没有加法进IF里置1,但是写不出来

--  作者:XXL
--  发布时间:2017/2/16 11:48:44
--  
这里面有一个问题,是我上方的开仓请求,下面这开平仓处理不一定会执行,因为开平仓中还有很多限制

我上面没有写更多的如下(这个当日只限一次的开仓限制只是其中的一个限制)
开多:BUY(KD  and  时间   AND 开仓数量  AND 限制开仓 AND 限制开仓2 AND HOLDING=0,1,THISCLOSE);          //开多信号
平多:SELL(PD and 时间   AND 开仓数量  AND 限制平仓 AND 限制平仓2,1,THISCLOSE);                       //平多信号

--  作者:XXL
--  发布时间:2017/2/16 11:54:14
--  
  发帖心情 Post By:2017-2-16 11:18:33    Post IP:180.173.193.42[只看该作者

当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限

这句要表达什么意思?


这句话没有说明不好意思
当上穿开多仓后,如果行情回到下方(这只限日内回头),那价格在均线下方,平多无效,但能平空(我的仓位里可以同时开多空的,所以我需要一个标签让执行空方操作有效)
如果价格再次日内回到上方(刚才上穿的),那么所有的多空操作不限制,就是这个限制程序相当于无效的


--  作者:jinzhe
--  发布时间:2017/2/16 13:13:35
--  
以下是引用jinzhe在2017-2-16 11:18:33的发言:

当上穿开多仓后,如果行情回到下方,那平能平多仓,但能平空仓,如果再回到上方多空不限

这句要表达什么意思?

”那平能平多仓,但能平空仓”

我的意思是上面那段话里面的这句话,不知道讲什么意思,


--  作者:XXL
--  发布时间:2017/2/16 14:38:16
--  
你只要一个标志就行,如允许平仓,允可平仓:=1;这样就会有程序去执行



--  作者:XXL
--  发布时间:2017/2/16 14:40:31
--  
你再回到问题的原点,只要不要在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 14:45:26
--  
以下是引用jinzhe在2017-2-16 13:13:35的发言:

”那平能平多仓,但能平空仓”

我的意思是上面那段话里面的这句话,不知道讲什么意思,

所以, 你能不能解释一下这句话,好让我知道你想要干什么?


--  作者:XXL
--  发布时间:2017/2/16 14:50:02
--  
我就是有两个标志,一个是允许平多一个不允许

好吧,你当不存在,只出一个限制当日已经过线的平多,就是开多了,再回来不许平多,再回到线上才允许平多
[此贴子已经被作者于2017-2-16 14:51:07编辑过]