MC8.8 trailing语法在自动交易执行时的修正
- UID
- 2
- 积分
- 2874674
- 威望
- 1387366 布
- 龙e币
- 1487308 刀
- 在线时间
- 13156 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
MC8.8 trailing语法在自动交易执行时的修正
说明:
在上一个MC8.5版本中,与现在的MC8.8,trailing语法在执行逻辑上有不同,MC8.8是正确的逻辑。
trailling语法包括:setpercenttrailing、setdollartrailing
这两个语法的共同特点是:都要根据策略进场后的最大获利,计算出场委托单的价格。
若是N天前的进场,今日才开启自动交易,
1) MC8.5会根据开启自动交易那一刻往后的行情计算最大获利,无法取到从进场那根K线算起的历史的获利
(这会导致开启自动交易的trailing委托价,和回测的委托价不同,
进一步说,实际交易已经出场,而图表上还没出场信号画出;或者实际没出场,图表已有出场信号画出。)
2)MC8.8可以正确的取到从进场当根的K线算起的历史获利 (此为正确的逻辑)
测试举例:
以下提供测试验证方式,本例以卖出进场,setpercenttrailing为例,// 盈利达到200跳,进场后的最大获利回撤百分之50出场
测试代码:
- input:date1(1140603),time1(0300),time2(1200),N(20),perct(50);
- var:mp(0);
- IF DATE=date1 AND TIME>=time1 AND TIME<time2 THEN
- sellshort next bar at market;
- mp=marketposition;
- if mp[1]=0 and mp<>0 then
- text_new(date,time,entryprice+0.005,text(entryprice:0:4));
- setpercenttrailing(N POINT*MINMOVE*BIGPOINTVALUE,perct);
- if mp[1]<>0 and mp=0 then
- text_new(date,time,exitprice(1)+0.001,text(exitprice(1):0:4));
复制代码
测试商品: ICE.CME.E7.HOT
周期: 1 分钟
模式: 异步AA
手续费设定: 0
滑价设定: 0
在图表上,Sellshort 卖出进场价是 1.2929,我们起名为 PriceA; (N天前的进场)
在图表上,进场后的最低价是 1.2704,我们起名为 PriceC;
本地电脑日期 20140925,本地电脑时间 18点多,此时开启自动交易,
并告诉MC进场价是 1.2929, 这是我的实际账户的进场价,我们起名为 PriceB;
开启自动交易那刻后的行情最低价是 1.2724,我们起名为 PriceD;
在 MultiCharts8.8 中, 委托的Trailing 出场价会是 1.2817=1.2929-(1.2929-1.2704)*(1-50%),
即 TrailingPrice=PriceB-(PriceA-PriceC)*(1-50%) (正确)
在 MultiCharts8.5 中, 委托的Trailing 出场价会是 1.2827=1.2929-(1.2929-1.2724)*(1-50%),
即 TrailingPrice=PriceB-(PriceB-PriceD)*(1-50%)(错误)
大家可以对比看两张图片的效果:
MC8.8
MC8.5
很多时候,PriceD 和 PriceC 并不相同,在MC8.5中,开启自动交易后会有错误的 TrailingPrice 回撤出场价。
P.S:
如果 PriceB=PriceA(实际进场价=图上进场价), 计算结果将会是,以50%的回撤为例:
MC8.8与MC7.4 TrailingPrice=A-(A-C)/2; (正确)
MC8.5 TrailingPrice=A-(A-D)/2; (错误) |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|