以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  如何避免在开仓那根k线被止损  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159894)

--  作者:daviwang
--  发布时间:2017/11/27 14:39:29
--  如何避免在开仓那根k线被止损

我采用小时线进行图表交易,下单按k线结束前20秒下单,使用marketr函数开仓。止损为开仓价格反向波动n1止损,代码如下:

 

止损条件:=l<=ENTERPRICE-n1;//多头止损标准(以多头为例)

if   holding>0 and  止损条件=1   THEN sell(1,0,MARKETr);

 

如果开仓的那根k线的最低价l,满足l<=ENTERPRICE-n1,是否会在开仓后立即被止损?如何避免这种情况?

 

 

之前用market函数开仓,止损代码为:

 

if   holding>0 and  止损条件=1  and enterbars>0 THEN sell(1,0,MARKETr);

这样写不能在开仓后的第一根k线止损,也不避免开仓后立即被止损


--  作者:FireScript
--  发布时间:2017/11/27 14:58:41
--  
设置的是软件自带的提前下单吗?
--  作者:daviwang
--  发布时间:2017/11/27 20:53:20
--  

不是的。

用代码完成的:

abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);

if abb then begin;//k线结束前提前20秒下单

开多

开空

end;


--  作者:wenarm
--  发布时间:2017/11/28 8:30:05
--  

你是希望止损在下根k上生效?

if   holding>0 and  止损条件=1  and enterbars>0 THEN sell(1,0,MARKETr);

这个写法没有问题,你把开空和开多指令中的MARKET==》MARKETR、这样enterbars函数就能满足你的要求。(本周期和次周期的指令对enterbars函数的计算是有影响的,你可以自己在图表中看一下)

abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);

if abb then begin;//k线结束前提前20秒下单

开多

开空


--  作者:daviwang
--  发布时间:2017/11/28 15:07:21
--  
以下是引用wenarm在2017/11/28 8:30:05的发言:

你是希望止损在下根k上生效?

if   holding>0 and  止损条件=1  and enterbars>0 THEN sell(1,0,MARKETr);

这个写法没有问题,你把开空和开多指令中的MARKET==》MARKETR、这样enterbars函数就能满足你的要求。(本周期和次周期的指令对enterbars函数的计算是有影响的,你可以自己在图表中看一下)

abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);

if abb then begin;//k线结束前提前20秒下单

开多

开空

我开空和开多指令就是用的MARKETR,但是不能让止损在下根k上生效。

我在图表上试过了,在本次开仓的当根K线时,enterbars显示的数值是上次开仓到现在的bar数,而不是0.


--  作者:wenarm
--  发布时间:2017/11/28 15:30:07
--  

贴出你完成的测试代码。你止损条件中使用的是建议你排查下其他条件。

if   holding>0 and  止损条件=1  and enterbars>0 THEN sell(1,0,MARKETr);

 

enterbars的记录结果如下图


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

--  作者:FireScript
--  发布时间:2017/11/28 15:35:15
--  
以下是引用daviwang在2017/11/28 15:07:21的发言:

我开空和开多指令就是用的MARKETR,但是不能让止损在下根k上生效。

我在图表上试过了,在本次开仓的当根K线时,enterbars显示的数值是上次开仓到现在的bar数,而不是0.

enterbars的返回值在开仓的K上不是0就是-1.你可以再次确认下。 


--  作者:daviwang
--  发布时间:2017/11/30 9:45:24
--  
是的,你是对的。我查看enterbars 的变量赋值时放错位置了,放在开仓前,导致出错。