以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=163265)

--  作者:qq代人发帖
--  发布时间:2018/5/7 13:01:05
--  如何统计今天到开仓期间的阳线数量
如何统计今天到开仓期间的阳线数量

--  作者:FireScript
--  发布时间:2018/5/7 13:23:16
--  
假设开仓条件是A
result:count(c>o,BARSLAST(A));
--  作者:jmufhr
--  发布时间:2018/5/7 13:50:37
--  

这个是代码

n1:=5;//5周期均线


n2:=30;//30周期均线


ma5:ma(c,n1);


ma30:ma(c,n2);


sz:=ref(c,2)<ref(ma5,2) and all(c>=ma5,2);


al2:=ref(all(c<ma5,2),1);


NN:=COUNT(本次开空单到今天(平仓)之前sz的个数)


    if ma30>ma5 and al2 and holding=0 then begin


    开空:buyshort(1,7, limitr,ma5-15);


    end


    if NN>=1 and holding<0 then begin


    平空: sellshort(1,holding, limitr,ma5+15);


    End


里面的NN:=COUNT(本次开空单到今天(平仓)之前sz的个数),该怎么写呢




--  作者:jmufhr
--  发布时间:2018/5/7 13:51:06
--  

这个是代码

n1:=5;//5周期均线


n2:=30;//30周期均线


ma5:ma(c,n1);


ma30:ma(c,n2);


sz:=ref(c,2)<ref(ma5,2) and all(c>=ma5,2);


al2:=ref(all(c<ma5,2),1);


NN:=COUNT(本次开空单到今天(平仓)之前sz的个数)


    if ma30>ma5 and al2 and holding=0 then begin


    开空:buyshort(1,7, limitr,ma5-15);


    end


    if NN>=1 and holding<0 then begin


    平空: sellshort(1,holding, limitr,ma5+15);


    End


里面的NN:=COUNT(本次开空单到今天(平仓)之前sz的个数),该怎么写呢



--  作者:jmufhr
--  发布时间:2018/5/7 13:52:32
--  

这个是代码

n1:=5;//5周期均线


n2:=30;//30周期均线


ma5:ma(c,n1);


ma30:ma(c,n2);


sz:=ref(c,2)<ref(ma5,2) and all(c>=ma5,2);


al2:=ref(all(c<ma5,2),1);


NN:=COUNT(本次开空单到今天(平仓)之前sz的个数)


    if ma30>ma5 and al2 and holding=0 then begin


    开空:buyshort(1,7, limitr,ma5-15);


    end


    if NN>=1 and holding<0 then begin


    平空: sellshort(1,holding, limitr,ma5+15);


    End


里面的NN:=COUNT(本次开空单到今天(平仓之前sz的个数),该怎么写呢



--  作者:FireScript
--  发布时间:2018/5/7 14:06:36
--  
 你这里面不行啊。你这个关于NN的逻辑有问题。    你NN的定义是和NN自己有关联的。
为什么这样说呢,按照你这个逻辑你的代码应该这样实现:

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

这就是矛盾了。

--  作者:jmufhr
--  发布时间:2018/5/7 14:31:47
--  
这个是最原始的代码
n1:=5;//5周期均线

n2:=30;//30周期均线

ma5:ma(c,n1);

ma30:ma(c,n2);

sz:=ref(c,2)<ref(ma5,2) and all(c>=ma5,2);

al2:=ref(all(c<ma5,2),1);


    if ma30>ma5 and al2 and holding=0 then begin

    开空:buyshort(1,7, limitr,ma5-15);

    end

    if sz and holding<0 then begin

    平空: sellshort(1,holding, limitr,ma5+15);

    End
但是实际交易时发现 sz出现时由于限价的原因无法平仓,由于sz信号不会一直持续后面价格达到限定价格时也无法平仓。现在就是想通过统计sz出现的次数,也就是开仓期间当sz出现的次数大于等于1时,就可以持续发出平仓委托了


--  作者:FireScript
--  发布时间:2018/5/7 15:25:18
--  
 我能明白你这个问题,但是你这个问题很明确图表无法做到。 你即使统计了信号也没用。举例说明下:比如说第一次sz触发了,下单了但是没成交。这时候存在的问题是虚拟持仓holding已经变成0了,下次sz再次触发(假设这段时期中间没有触发开仓),因为虚拟持仓是0的缘故,无法再触发平仓语句了。

你这个情况我觉得你可以考虑下追撤单功能吧。
交易-下单设置 里面。



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

--  作者:jmufhr
--  发布时间:2018/5/7 17:42:53
--  
那这个问题后台能解决吗
--  作者:FireScript
--  发布时间:2018/5/8 8:46:24
--  
 那还要看你完整逻辑是怎样的了,比如多久未成交 就撤单重新发单之类的这些细节等。