欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何避免在开仓那根k线被止损

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3096人关注过本帖树形打印复制链接

主题:如何避免在开仓那根k线被止损

帅哥哟,离线,有人找我吗?
daviwang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2016/8/20 15:46:56
如何避免在开仓那根k线被止损  发帖心情 Post By:2017/11/27 14:39:29    Post IP:117.48.202.190[只看该作者]

我采用小时线进行图表交易,下单按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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/11/27 14:58:41    Post IP:180.169.30.6[只看该作者]

设置的是软件自带的提前下单吗?


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
daviwang
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2016/8/20 15:46:56
  发帖心情 Post By:2017/11/27 20:53:20    Post IP:117.48.202.190[只看该作者]

不是的。

用代码完成的:

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

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

开多

开空

end;


 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/11/28 8:30:05    Post IP:180.169.30.6[只看该作者]

你是希望止损在下根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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2016/8/20 15:46:56
  发帖心情 Post By:2017/11/28 15:07:21    Post IP:117.48.202.190[只看该作者]

以下是引用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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/11/28 15:30:07    Post IP:180.169.30.6[只看该作者]

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

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

 

enterbars的记录结果如下图


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


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/11/28 15:35:15    Post IP:180.169.30.6[只看该作者]

以下是引用daviwang在2017/11/28 15:07:21的发言:

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

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

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



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
daviwang
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2016/8/20 15:46:56
  发帖心情 Post By:2017/11/30 9:45:24    Post IP:117.48.202.190[只看该作者]

是的,你是对的。我查看enterbars 的变量赋值时放错位置了,放在开仓前,导致出错。

 回到顶部