以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  enterbars的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=157334)

--  作者:王北浪
--  发布时间:2017/8/28 10:03:30
--  enterbars的问题
请教: 当开仓后,enterbars开始计数,如果过几个周期后,同方向又加仓了,此时enterbars 怎么算?
我希望使用第一个开仓的数,忽略后一个,能否实现?

--  作者:FireScript
--  发布时间:2017/8/28 10:09:52
--  

1.enterbars 会直接返回你最近一次加仓位置的相应历时数据。

2.第一个开仓位置的数据?用这个试试BARSSINCE函数。


--  作者:王北浪
--  发布时间:2017/8/28 11:08:35
--  
尝试了,好像不行,barssince 强调的是第一次,如果程序反向开仓了,正常逻辑是enterbars 重新计数了,但是它还是累加的。请指教。有没有其他思路?
--  作者:FireScript
--  发布时间:2017/8/28 11:18:56
--  

barssince (开多条件);

这样的处理也不行吗?就是根据开仓条件来。


--  作者:王北浪
--  发布时间:2017/8/28 11:22:23
--  
可以,但是这个数值永远是增长的,你知道的,当平仓,或者反手后应该重新计数的
--  作者:FireScript
--  发布时间:2017/8/28 11:30:57
--  
所以你其实是想要最近一次开仓并且中间没有平仓以及反手这样的?
--  作者:王北浪
--  发布时间:2017/8/28 11:52:19
--  
是的
--  作者:FireScript
--  发布时间:2017/8/28 13:28:33
--  

这样:

variable:mark=0;

if buycond then  buy(); mark:=1;

if sellcond then sell();mark:=-1;

lastMark:if(last(mark=1,BARSLAST(mark=1),0),BARSLAST(mark=1),0);

 

把开仓的位置用全局变量标记下,然后平仓或者反向开或者其他不符合条件的,全局变量都赋值为-1.

这样如果上次开仓以来,mark一直是1,说明满足条件。

[此贴子已经被作者于2017/8/28 13:41:40编辑过]

--  作者:王北浪
--  发布时间:2017/8/28 13:51:45
--  
谢谢,我试下