CTA 策略分享之三 -- 策略优化

上一个帖子介绍了一个趋势跟踪策略的优化思路,今天我们继续对策略进行分析,找到另外的优化方法。先看回测的权益曲线:
CTA 策略分享之三 -- 策略优化_第1张图片

看到在2017 8月份到2018 2月份策略出现了较大的回撤。先定性分析一下,应该是在这段时间内日线级别的图形上震荡走势,造成策略不适应导致,看一下日线图是不是这样:
CTA 策略分享之三 -- 策略优化_第2张图片

可以看出这一段日线的无趋势走势造成了策略的亏损。

因为我们采用的日线的EMA过滤导致。
那么,我们更换一个思维,把日线换为1小时周期K线看一下:
CTA 策略分享之三 -- 策略优化_第3张图片

总体分析:
CTA 策略分享之三 -- 策略优化_第4张图片

胜率和盈亏比还是不尽如人意。继续想方法:加上1小时的趋势指标ADX试一下:

CTA 策略分享之三 -- 策略优化_第5张图片

胜率提高较为明显,单笔交易的净利润有了较大提高。但是,还达不到实盘标准。随后我们还需要继续合理优化。

下面为脚本源码(easy language,或者人家称之为 power language):
Inputs: AvgLen(30), ADXLen(12), EntryBar(2);
Vars: UpperMA(0), LowerMA(0), ADXValue(0), ChanSpread(0), BuySetup(False), SellSetup(False), BuyTarget(0), SellTarget(0), MROBS(0), MROSS(0);
var: va_data2(0,data2),var_adx_data2(0,data2);
va_data2 = XAverage(c,20) data2;
var_adx_data2 =adx(14) data2;
//text_new (d,t,l -10, text(var_adx_data2));
//text_new (d,t,l -20, text(var_adx_data2[1]));
{Variable Declarations}
UpperMA = XAverage(High, AvgLen)[1];
LowerMA = XAverage(Low, AvgLen)[1];
ADXValue = ADX(ADXLen);
ChanSpread = (UpperMA - LowerMA) / 2;

{Setup}
BuySetup = Close > UpperMA AND ADXValue > ADXValue[1];
SellSetup = Close < LowerMA AND ADXValue > ADXValue[1];

IF BuySetup Then
BuyTarget = Close + ChanSpread;
IF SellSetup Then
SellTarget = Close - ChanSpread;

MROBS = MRO(BuySetup, EntryBar, 1);
MROSS = MRO(SellSetup, EntryBar, 1);

{Entries}
IF MROBS <> -1 AND MRO(MarketPosition=1, MROBS, 1) = -1 and c > va_data2 and var_adx_data2 > var_adx_data2[1] Then
Buy Next Bar at BuyTarget Stop;
IF MROSS <> -1 AND MRO(MarketPosition=-1, MROSS, 1) = -1 and c < va_data2 and var_adx_data2 > var_adx_data2[1] Then
SellSHORT Next Bar at SellTarget Stop;

{Exits}

SELL Next Bar at LowerMA Stop;
BUYTOCOVER Next Bar at UpperMA Stop;

你可能感兴趣的:(量化交易,POWER,LANGUAGE,CTA,策略)