以文本方式查看主题

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

--  作者:陈志海11
--  发布时间:2018/10/8 13:41:57
--  平仓条件的书写
我的平常条件是1,以开多为例,开仓进去价格低于开仓前5日最低价为止损价格2有一定盈利后,比如说2%盈利回落到成本时,也止损,3有比较大盈利,后从高点回车10%止盈,这个要怎么写?
--  作者:陈志海11
--  发布时间:2018/10/8 13:43:41
--  
开仓前5日 最低点止损点这个是固定止损,不是移动止损
--  作者:FireScript
--  发布时间:2018/10/8 14:03:54
--  
 maxProfit:(hhv(h,ENTERBARS+2)-c)/AVGENTERPRICE;//最大盈利
currentProfit:(c-AVGENTERPRICE)/AVGENTERPRICE;//当前盈利

cd1:c<REF(llv(l,5),ENTERBARS+2) and holding>0;//开仓进去价格低于开仓前5日最低价
cd2:maxProfit>=0.02 and currentProfit<=0 and holding>0; //盈利达到2%且回撤到成本价位
cd3:maxProfit>0.1 and (hhv(h,ENTERBARS+2)-c)/hhv(h,ENTERBARS+2)>=0.1 and holding>0;//最大盈利幅度自行设置,这里暂设10%

if cd1 or cd2 or cd3 then sell(1,holding,market);
--  作者:陈志海11
--  发布时间:2018/10/8 14:32:47
--  
还是么有高清楚enterbars+2到底是什么意思?能解释一下吗?
--  作者:FireScript
--  发布时间:2018/10/8 15:00:26
--  
你直接在图表上输出下enterbars,先搞清楚输出值情况,尤其是在开仓K上的输出值。


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

enterbars在开仓K返回值是-1,在开仓之后第二个K,返回值是0,第三个K返回值是1.  其实你就理解成有一个错位的在这里就可以了。

假设我要调用开仓K收盘价,ref(c,enterbars) 在上图这个K上相当于 ref(c,0)调用的其实是当前K收盘价。 所以为了正确引用需要做一个偏移。也就是enterbars+1.,来确保正确的引用。

上面那个enterbars+2也是类似的原理。如果是 hhv(l,enterbars),你在开仓K上相当于运算 hhv(l,-1)肯定不对的。在第二个K上就相当于 hhv(l,0),这个含义就完全变了,是统计所有K最低价。因此也要做一个偏移来确保正确的统计。




--  作者:陈志海11
--  发布时间:2018/10/8 17:08:13
--  
那当调用开仓以来第2跟的值的时候,相当于是hhv(L,2),那么开仓以来第二跟enterbars=1,那么只需要hhv(l,enterbars+1)来表示是吗?
--  作者:陈志海11
--  发布时间:2018/10/8 17:09:54
--  
是不是可以这样理解,当调用周期是开仓当天的时候只需要enterbars+1,当调用周期大于当根k线就是enterbars+2,,
--  作者:wenarm
--  发布时间:2018/10/8 19:30:32
--  
你自己写一个只开一次仓的条件,然后去看enterbars函数的返回值,它是从多少开始算的就知道了,至于加多少是受本周期指令和次周期指令的影响。例如
buy(BARPOS=20,1,MARKET);//buy(BARPOS=20,1,MARKETr)
aa:enterbars;

--  作者:陈志海11
--  发布时间:2018/10/9 9:57:02
--  
那在次周期开仓的情况下,开仓的那根k线还回值是-1,开仓以来第一根k还回值是0,第二根k还回值是1,第三根还回值是2,实际上是开仓那根的0,开仓以来第一根所跨的周期数应该是1,第二根所跨的周期数是2,第三根所跨的周期数是3,比如说我要取开仓以来三天(所跨周期数为3)最高价,那么就是这么表示 hhv(h,enterbars+1)的是吗?怎么会表示成hhv(h,enterbars+2)?
--  作者:FireScript
--  发布时间:2018/10/9 10:01:51
--  
 +1 和+2 区别是后者是按照包含开仓K在内进行最大值统计的,前者不保本开仓K本身。