以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp)
-- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2)
---- 如何让1根K线只执行1个信号? (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=159378)
|
-- 作者:qingwa888
-- 发布时间:2017/11/9 23:06:17
-- 如何让1根K线只执行1个信号?
如果同一根k线上既满足开仓条件又满足平仓条件,则会出现又平仓又开仓的情况,如果想要这根K线只执行平仓信号而忽略开仓信号,应该怎么办?
|
-- 作者:gxx978
-- 发布时间: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
-- 发布时间:2017/11/10 13:33:51
--
老师,TEXITBARS函数是后台模式的,图表用不了。TYPEBAR(1,2);函数试用了一下,发现它好像不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,自身用不了,怎么办?如何解决?
[此贴子已经被作者于2017/11/10 13:34:38编辑过]
|
-- 作者:banzhuan
-- 发布时间: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
-- 发布时间:2017/11/10 13:47:30
--
不好意思,多写了个T,用exitbars来判断,语句中平仓语句要写再开仓语句前面。
|
-- 作者:qingwa888
-- 发布时间:2017/11/10 14:50:20
--
老师,EXITBARS函数试了还是跟TYPEBAR(1,2);函数一样,都是不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,只有走完后,它的下根K线才会取值才会为1。怎么办?还有什么办法吗?另外一个老师的方法不是很看得懂,为什么重置bar的值后这根K线就不能再开仓了?还有那个数据怎么设置呢?
此主题相关图片如下:qq截图20171110144910.jpg

|
-- 作者:gxx978
-- 发布时间: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
-- 发布时间:2017/11/10 15:47:48
--
试了一下,可以了,就是用exitbars函数,谢谢!
|