1、 止损价格是对的,都是在开仓价格上下5个点。但止损的位置不对,所有的止损都是在K线的实体阳线(或阴线)中发生的,从来不会在上下影线中。这样测试偏差会很大,具体可以看图。
2、止损指令是
sell(c-enterprice<=-5,0,stopr,enterprice-5);
sellshort(c-enterprice>=5,0,stopr,enterprice+5);
如下是图:
从测试图中可以看到,开仓的位置在2216附近,平仓应该在2221。从平仓的位置可以看到,平仓的K线前的两个K线都已经触及了止损位(最高价都在2223附近)。但因为收盘价低于2221(我推测),都没有平仓。一直到了第三个K线才平仓。
我们知道,如果平仓位置不对,将影响后续的开仓点位,请重视。
如果不是BUG,也请说明这么设计的原因,因为这必然造成实盘和测试结果有较大偏差。
金字塔对于所有的可交易品种,均支持4种交易指令,即限价、市价、停损、限价停损。但是这几种交易指令是通过不同方式完成工作的,限价指令是所有平台都支持的,对于市价和停损单,下面几种交易平台执行情况如下:
1.CTP综合交易平台
A市价单
上期所不支持市价,大连/郑州/中金3个交易所均支持市价指令。
上期所的品种下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。
大连/郑州/中金的品种下市价单,交易所的市价单。
B停损单
大连交易所支持停损指令,上期所/郑州/中金3个交易所均不支持停损指令。
大连交易所的品种下停损单,交易所的停损单。
上期所/郑州/中金的品种下停损单,金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。
C限价停损指令
金字塔CTP平台不支持限价停损指令,用户使用限价停损指令发出为委托单时,实际会按照停损指令发出。
2.金仕达交易平台
A市价单
上/大/郑/中金下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。
B停损单/限价停损
上/大/郑/中金下停损单/限价停损,金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。
3.IB(美国赢透)交易平台 这个平台支持所有限价、市价、停损、限价停损这个4个指令。在IB平台发出停损指令后会将指令单发送到IB的交易服务器上保存,等待触发。
代码里用的是c-enterprice>=5做为判断的
c在测评中就是收盘价.
平仓的K线前的两个K线(最高价都在2223附近)。---------而非收盘价满足条件,故不会有平仓信号
感谢二位老大答复
有两点
1、实盘用后台的STP指令,这个是允许的吧?
2、图表测试中用stopr是为了验证盘中止损的效果。
我知道STP在实盘中是实时触发的,但如果测试中Stopr会因为收盘价是否触发止损价而改变平仓位置,必然会造成测试和实盘的偏差。其实测试的时候,系统每次开仓都有开仓价,也能自动算出止损价,如果止损价在某根K线的最高价和最低价之内,就应该标记为止损平仓。
是否有解决方案?我的目的就是验证盘中止损的效果,尽可能的接近实盘。谢谢
不知道我的表述是否清楚
止损价在某根K线的最高价和最低价之内,就应该标记为止损平仓
那就用
sell(low-enterprice<=-5,0,stopr,enterprice-5);
sellshort(high-enterprice>=5,0,stopr,enterprice+5);