龙听期货论坛's Archiver

龙听 发表于 2019-3-20 15:23

MC8.8 trailing语法在自动交易执行时的修正

[font=Tahoma, 宋体, Simsun][size=14px][size=5]说明:[/size][/size][/font]
[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]在上一个MC8.5版本中,与现在的MC8.8,trailing语法在执行逻辑上有不同,MC8.8是正确的逻辑。[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]trailling语法包括:setpercenttrailing、setdollartrailing[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]这两个语法的共同特点是:都要根据策略进场后的最大获利,计算出场委托单的价格。[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]若是N天前的进场,今日才开启自动交易,[/size][/font][/color]
[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]1) MC8.5会根据开启自动交易那一刻往后的行情计算最大获利,无法取到从进场那根K线算起的历史的获利[/size][/font][/color]
[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]    (这会导致开启自动交易的trailing委托价,和回测的委托价不同,[/size][/font][/color]
[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]        进一步说,实际交易已经出场,而图表上还没出场信号画出;或者实际没出场,图表已有出场信号画出。)[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]2)MC8.8可以正确的取到从进场当根的K线算起的历史获利 (此为正确的逻辑)[/size][/font][/color]

[hr][font=Tahoma, 宋体, Simsun][size=14px][size=5]测试举例:[/size][/size][/font]
[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]以下提供测试验证方式,本例以卖出进场,setpercenttrailing为例,[/size][/font][/color][color=#444444][font=Tahoma, 宋体, Simsun][size=14px]// 盈利达到200跳,进场后的最大获利回撤百分之50出场[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px]测试代码:[/size][/font][/color]

[color=#444444][font=Tahoma, 宋体, Simsun][size=14px][code]
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));
[/code]
[/size][/font][/color]


[font=arial, sans-serif][color=#444444][size=14px][color=#222222]测试商品:    ICE.CME.E7.HOT
[/color][color=#222222]周期:           1 分钟
[/color][color=#222222]模式:           异步AA[/color]
手续费设定: 0
滑价设定:     0

[color=#222222]在图表上,Sellshort [/color][color=#ff00ff]卖出进场价[/color][color=#222222]是 1.2929,我们起名为 [/color][color=#ff00ff]PriceA; (N天前的进场)[/color]
在图表上,[color=#ff00ff]进场后的最低价[/color]是 1.2704,我们起名为 [color=#ff00ff]PriceC[/color];

本地电脑日期 20140925,本地电脑时间 18点多,[color=#0000ff]此时开启自动交易[/color],[/size][/color][/font]
[font=arial, sans-serif][color=#444444][size=14px]并[color=#0000ff]告诉MC进场价[/color]是 [/size][/color][/font][color=#222222][font=Tahoma, 宋体, Simsun][size=14px][font=arial, sans-serif]1.2929[/font][/size][/font][/color][font=arial, sans-serif][color=#444444][size=14px], 这是我的实际账户的进场价,我们起名为 [color=#0000ff]PriceB[/color];[/size][/color][/font]
[font=arial, sans-serif][color=#444444][size=14px]
[color=#0000ff]开启自动交易那刻后的行情最低价[/color][color=#222222]是 1.2724,我们起名为 [/color][color=#0000ff]PriceD[/color][color=#222222];

[/color]

[color=#222222][size=3]在  MultiCharts8.8 中[/size],  委托的Trailing 出场价会是   [color=#3d85c6]1.2817[/color]=1.2929-(1.2929-[/color][color=#0000ff]1.2704[/color][color=#222222])*(1-50%),     [/color]

                                                                   即[color=#222222] [/color][color=#0000ff]TrailingPrice[/color][color=#222222]=[/color][color=#0000ff]PriceB[/color][color=#222222]-([/color][color=#ff00ff]PriceA[/color][color=#222222]-[/color][color=#ff00ff]PriceC[/color][color=#222222])*(1-50%) (正确)[/color]


[color=#222222][size=3]在 MultiCharts8.5 中[/size],   委托的Trailing 出场价会是 [color=#cc0000]1.2827[/color]=1.2929-([/color][/size][/color][/font][color=#222222][font=Tahoma, 宋体, Simsun][size=14px][font=arial, sans-serif]1.2929-[/font][/size][/font][/color][font=arial, sans-serif][color=#444444][size=14px][color=#ff0000]1.2724[/color][/size][/color][/font][font=arial, sans-serif][color=#444444][size=14px][color=#222222])*(1-50%),[/color]

                                                                  [color=#222222]即 TrailingPrice=[/color][color=#0000ff]PriceB[/color][color=#222222]-([/color][color=#0000ff]PriceB[/color][color=#222222]-[/color][color=#0000ff]PriceD[/color][color=#222222])[/color][color=#222222]*(1-50%)(错误)[/color]
[color=#222222]
大家可以对比看两张图片的效果:[/color]
[size=3]MC8.8[/size][/size][/color][/font]
[img]http://forums.icetech.com.cn/data/attachment/forum/201409/25/185456y0l95ky50oooox3x.jpg.thumb.jpg[/img]


[font=Tahoma, 宋体, Simsun][size=14px][size=3]MC8.5[/size][/size][/font]
[img]http://forums.icetech.com.cn/data/attachment/forum/201409/25/1854508p8p6gx11o18z68h.jpg.thumb.jpg[/img]

[font=arial, sans-serif][color=#444444][size=14px]
[color=#222222]很多时候,PriceD 和 PriceC 并不相同,在MC8.5中,开启自动交易后会有错误的 TrailingPrice 回撤出场价。[/color]

[color=#222222]P.S:[/color]

[color=#222222]如果 PriceB=PriceA(实际进场价=图上进场价), 计算结果将会是,以50%的回撤为例:[/color]
[color=#222222]MC8.8与MC7.4 TrailingPrice=A-(A-C)/2;  (正确)[/color]
[color=#222222]MC8.5               TrailingPrice=A-(A-D)/2;  (错误)[/color][/size][/color][/font]

页: [1]