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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 如何让1根K线只执行1个信号?

   

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


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

主题:如何让1根K线只执行1个信号?

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


加好友 发短信
等级:论坛游侠 帖子:128 积分:0 威望:0 精华:0 注册:2017/7/31 14:10:51
如何让1根K线只执行1个信号?  发帖心情 Post By:2017/11/9 23:06:17 [只看该作者]

如果同一根k线上既满足开仓条件又满足平仓条件,则会出现又平仓又开仓的情况,如果想要这根K线只执行平仓信号而忽略开仓信号,应该怎么办?

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2017/11/10 8:34:18 [只看该作者]

可以参考函数TYPEBAR,在开仓条件中判断下平仓信号距离当前K线大于1个周期满足开仓条件才进行开仓。例如TYPEBAR(1,2);//倒数第一个平多信号距离当前的周期数

也可以使用函数TEXITBARS。在开仓时判断下平仓历时。

例如:

if 开仓条件 and TEXITBARS>0 then buy(1,1,market);

[此贴子已经被作者于2017/11/10 8:41:15编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:128 积分:0 威望:0 精华:0 注册:2017/7/31 14:10:51
  发帖心情 Post By:2017/11/10 13:33:51 [只看该作者]

老师,TEXITBARS函数是后台模式的,图表用不了。TYPEBAR(1,2);函数试用了一下,发现它好像不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,自身用不了,怎么办?如何解决?
[此贴子已经被作者于2017/11/10 13:34:38编辑过]

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


加好友 发短信
等级:超级版主 帖子:16558 积分:0 威望:0 精华:0 注册:2017/6/1 10:24:09
  发帖心情 Post By:2017/11/10 13:43:01 [只看该作者]

可以增加一个全局变量来控制,此K线平了仓就不再开仓,比如extgbdata函数;

1. 需要在工具-数据管理中添加变量名称,比如“bar”

2. 在平仓条件中: 

if 平仓条件 and holding>0 and extgbdata( 'bar')<barpos
then 

sell(1,holding,market);

extgbdataset('bar',barpos);//重置bar的值

end

 


 


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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2017/11/10 13:47:30 [只看该作者]

不好意思,多写了个T,用exitbars来判断,语句中平仓语句要写再开仓语句前面。

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


加好友 发短信
等级:论坛游侠 帖子:128 积分:0 威望:0 精华:0 注册:2017/7/31 14:10:51
  发帖心情 Post By:2017/11/10 14:50:20 [只看该作者]

老师,EXITBARS函数试了还是跟TYPEBAR(1,2);函数一样,都是不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,只有走完后,它的下根K线才会取值才会为1。怎么办?还有什么办法吗?另外一个老师的方法不是很看得懂,为什么重置bar的值后这根K线就不能再开仓了?还有那个数据怎么设置呢?
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171110144910.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2017/11/10 15:23:01 [只看该作者]

如果你用的是market、limit这种次周期指令,那在平仓信号出现后的当根K线上exitbars返回的就是-1,若用的是marketr、limitr这种本周期指令,那返回的就是0,所以你在开仓条件中加入exitbars>=0或exitbars>0,例如,以5分钟周期为例:

if time=140000 then buy(1,1,marketr);
if time=145500 then sell(1,1,marketr);
if time=145500 and exitbars>0 then buy(1,1,marketr);

这样就需要平仓语句写在开仓语句前面了,因为只有先执行了平仓语句,exitbars的值才会改变过来。


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


加好友 发短信
等级:论坛游侠 帖子:128 积分:0 威望:0 精华:0 注册:2017/7/31 14:10:51
  发帖心情 Post By:2017/11/10 15:47:48 [只看该作者]

试了一下,可以了,就是用exitbars函数,谢谢!

 回到顶部