Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
qingwa888 发表于:2017/11/9 23:06:17
如果同一根k线上既满足开仓条件又满足平仓条件,则会出现又平仓又开仓的情况,如果想要这根K线只执行平仓信号而忽略开仓信号,应该怎么办?
2楼
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编辑过]
3楼
qingwa888 发表于:2017/11/10 13:33:51
老师,TEXITBARS函数是后台模式的,图表用不了。TYPEBAR(1,2);函数试用了一下,发现它好像不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,自身用不了,怎么办?如何解决?
[此贴子已经被作者于2017/11/10 13:34:38编辑过]
4楼
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

 


 

5楼
gxx978 发表于:2017/11/10 13:47:30
不好意思,多写了个T,用exitbars来判断,语句中平仓语句要写再开仓语句前面。
6楼
qingwa888 发表于:2017/11/10 14:50:20
老师,EXITBARS函数试了还是跟TYPEBAR(1,2);函数一样,都是不能判断当根K线刚平仓的情况,取得的值还是之前平仓到当前K线的距离,只有走完后,它的下根K线才会取值才会为1。怎么办?还有什么办法吗?另外一个老师的方法不是很看得懂,为什么重置bar的值后这根K线就不能再开仓了?还有那个数据怎么设置呢?
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171110144910.jpg
图片点击可在新窗口打开查看
7楼
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的值才会改变过来。

8楼
qingwa888 发表于:2017/11/10 15:47:48
试了一下,可以了,就是用exitbars函数,谢谢!
共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 2 queries.