以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 谢谢,我试下 |