以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  STOPR指令测试中的BUG  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=53522)

--  作者:金字塔粉丝
--  发布时间:2013/7/1 13:24:09
--  STOPR指令测试中的BUG
我在指标中采用5个点的固定止损来测试IF。但发现:


1、 止损价格是对的,都是在开仓价格上下5个点。但止损的位置不对,所有的止损都是在K线的实体阳线(或阴线)中发生的,从来不会在上下影线中这样测试偏差会很大,具体可以看图。


2、止损指令是
sell(c-enterprice<=-5,0,stopr,enterprice-5);

sellshort(c-enterprice>=5,0,stopr,enterprice+5);
如下是图:

 


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

从测试图中可以看到,开仓的位置在2216附近,平仓应该在2221。从平仓的位置可以看到,平仓的K线前的两个K线都已经触及了止损位(最高价都在2223附近)。但因为收盘价低于2221(我推测),都没有平仓。一直到了第三个K线才平仓。

 

我们知道,如果平仓位置不对,将影响后续的开仓点位,请重视。

 

如果不是BUG,也请说明这么设计的原因,因为这必然造成实盘和测试结果有较大偏差。


--  作者:jinzhe
--  发布时间:2013/7/1 13:43:25
--  

 

金字塔对于所有的可交易品种,均支持4种交易指令,即限价、市价、停损、限价停损。但是这几种交易指令是通过不同方式完成工作的,限价指令是所有平台都支持的,对于市价和停损单,下面几种交易平台执行情况如下:

1.CTP综合交易平台

A市价单

上期所不支持市价,大连/郑州/中金3个交易所均支持市价指令。

上期所的品种下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。

大连/郑州/中金的品种下市价单,交易所的市价单。

B停损单

大连交易所支持停损指令,上期所/郑州/中金3个交易所均不支持停损指令。

大连交易所的品种下停损单,交易所的停损单。

上期所/郑州/中金的品种下停损单,金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。

C限价停损指令

金字塔CTP平台不支持限价停损指令,用户使用限价停损指令发出为委托单时,实际会按照停损指令发出。

 

2.金仕达交易平台

A市价单

///中金下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。

B停损单/限价停损

///中金下停损单/限价停损,金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。

 

3.IB(美国赢透)交易平台 这个平台支持所有限价、市价、停损、限价停损这个4个指令。在IB平台发出停损指令后会将指令单发送到IB的交易服务器上保存,等待触发。


--  作者:fly
--  发布时间:2013/7/1 13:46:34
--  

代码里用的是c-enterprice>=5做为判断的

c在测评中就是收盘价.

 

平仓的K线前的两个K线(最高价都在2223附近)。---------而非收盘价满足条件,故不会有平仓信号


--  作者:金字塔粉丝
--  发布时间:2013/7/1 13:58:57
--  

感谢二位老大答复

有两点

1、实盘用后台的STP指令,这个是允许的吧?

2、图表测试中用stopr是为了验证盘中止损的效果。

 

我知道STP在实盘中是实时触发的,但如果测试中Stopr会因为收盘价是否触发止损价而改变平仓位置,必然会造成测试和实盘的偏差。其实测试的时候,系统每次开仓都有开仓价,也能自动算出止损价,如果止损价在某根K线的最高价和最低价之内,就应该标记为止损平仓。

是否有解决方案?我的目的就是验证盘中止损的效果,尽可能的接近实盘。谢谢

 

不知道我的表述是否清楚

[此贴子已经被作者于2013/7/1 13:59:42编辑过]

--  作者:fly
--  发布时间:2013/7/1 14:07:41
--  

止损价在某根K线的最高价和最低价之内,就应该标记为止损平仓

 

那就用

sell(low-enterprice<=-5,0,stopr,enterprice-5);

sellshort(high-enterprice>=5,0,stopr,enterprice+5);