以文本方式查看主题

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

--  作者:jzt666
--  发布时间:2019/7/12 15:37:50
--  连续开仓
连续开仓怎么解决
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

--  作者:wenarm
--  发布时间:2019/7/12 16:01:26
--  

自己在条件中增加现象。如果只有holding=0 时,才开仓


--  作者:jzt666
--  发布时间:2019/7/12 16:10:20
--  
是的HOLDING=0才开的,老师帮我写一下,当前开仓距离上次平仓点大于N个周期
--  作者:wenarm
--  发布时间:2019/7/12 16:14:57
--  

如果已经限制了,按就是说明第二个开多位置,是先平多仓再开仓的。你自己检查下你的开平条件为什么会同时成立。

代码贴出来看下

[此贴子已经被作者于2019/7/12 16:16:14编辑过]

--  作者:jzt666
--  发布时间:2019/7/12 16:19:06
--  
 


TKK:=TIME>0100 AND TIME<2130;
TPP:=TIME>0100 AND TIME<2200;


IF REF((TIME>2155 AND TIME<2200 AND TPP AND DT=0 AND KT=0 AND HOLDING<>0),1) THEN
BEGIN
DT:=IF(DTPL=1,1,0);
KT:=IF(KTPL=1,1,0);
SELLSHORT(HOLDING<0,HOLDING,MARKETR);
SELL(HOLDING>0,HOLDING,MARKETR);
END
DT:=IF(DT=1 AND DTPL=1,1,0);
KT:=IF(KT=1 AND KTPL=1,1,0
IF REF((CLOSE-AVGENTERPRICE>=KZS*10*MINDIFF AND TPP AND KT=0 AND HOLDING<0),1) THEN
BEGIN
KT:=IF(KTPL=1,1,0);
SELLSHORT(HOLDING<0,HOLDING,MARKETR);
END
KT:=IF(KT=1 AND KTPL=1,1,0);
IF REF((AVGENTERPRICE-CLOSE>=DZS*10*MINDIFF AND DT=0 AND HOLDING>0 AND TPP),1) THEN
BEGIN
DT:=IF(DTPL=1,1,0);
SELL(HOLDING>0,HOLDING,MARKETR);
END
DT:=IF(DT=1 AND DTPL=1,1,0);
IF REF((AVGENTERPRICE-CLOSE>=KZY*10*MINDIFF AND  HOLDING<0 AND KT=0 AND  TPP),1) THEN
BEGIN
KT:=IF(KTPL=1,1,0);
SELLSHORT(HOLDING<0,HOLDING,MARKETR);
END
KT:=IF(KT=1 AND KTPL=1,1,0);
IF REF((CLOSE-AVGENTERPRICE>=DZY*10*MINDIFF AND HOLDING>0 AND DT=0 AND TPP),1) THEN
BEGIN
DT:=IF(DTPL=1,1,0);
SELL(HOLDING>0,HOLDING,MARKETR);
END
DT:=IF(DT=1 AND DTPL=1,1,0);
IF REF((KTZY1 AND KT=0 AND HOLDING<0 AND TPP),1) THEN
BEGIN
KT:=IF(KTPL=1,1,0);
SELLSHORT(HOLDING<0,HOLDING,MARKETR);
END
KT:=IF(KT=1 AND KTPL=1,1,0);
IF REF((DTZY1 AND DT=0 AND HOLDING>0 AND TPP),1) THEN
BEGIN
DT:=IF(DTPL=1,1,0);
SELL(HOLDING>0,HOLDING,MARKETR);
END
DT:=IF(DT=1 AND DTPL=1,1,0);
IF REF((SELLSHORTCOND1 AND TPP AND KT=0),1) THEN
BEGIN
KT:=IF(KTPL=1,1,0);
SELLSHORT(HOLDING<0,HOLDING,MARKETR);
END
KT:=IF(KT=1 AND KTPL=1,1,0);
IF REF((SELLCOND1 AND TPP AND DT=0),1) THEN
BEGIN
DT:=IF(DTPL=1,1,0);
SELL(HOLDING>0,HOLDING,MARKETR);
END
DT:=IF(DT=1 AND DTPL=1,1,0);
IF REF((BUYSHORTCOND3 AND TKK AND KT=0),1)  THEN
BEGIN
BUYSHORT(HOLDING=0,SS,MARKETR);
END
IF REF((BUYCOND2 AND TKK AND DT=0),1) THEN
BEGIN
BUY(HOLDING=0,SS,MARKETR);
END

--  作者:FireScript
--  发布时间:2019/7/12 16:48:23
--  
那个K上 平多和开多先后满足了才会这样,这是很正常的,平仓了又再次满足了开仓条件就会继续开仓。你可以给开仓条件再加一个条件:
ENTERBARS+1>=N

表示距离上次开仓的K线距离。

--  作者:jzt666
--  发布时间:2019/7/12 16:53:14
--  
老师平仓的K线距离怎么写?
--  作者:FireScript
--  发布时间:2019/7/12 16:55:32
--  
 TYPEBAR 你可以用这个函数。比较灵活点,然后就是注意返回值的起始位置,也就是出信号的K位置时候这个值是从0还是-1开始的。

--  作者:jzt666
--  发布时间:2019/7/12 16:55:51
--  
因为开仓到平仓有时要走很多K线,用平仓K线距离比较合适
--  作者:yukizzc
--  发布时间:2019/7/15 9:31:47
--  
exitbars>5 or exitbars=-1
用这个控制平仓后开仓距离