请选择 进入手机版 | 继续访问电脑版

利用KDJ指标进行IF加权日内交易的回测

[复制链接]
查看439 | 回复6 | Jason | 2020-9-27 13:41:13 | 显示全部楼层 |阅读模式
模型代码:
LOTS:=10000000*0.6/(C*MARGIN*UNIT+FEE);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
BACKGROUNDSTYLE(1);
CROSSUP(K,D),BPK(LOTS);
CROSSDOWN(K,D),SPK(LOTS);
C<BKPRICE-10*MINPRICE,SP(LOTS);
C>SKPRICE+10*MINPRICE,BP(LOTS);
CLOSEMINUTE<=1,CLOSEOUT;
基本逻辑:K线上穿D线时持有看多仓位,K线下穿D线后持有看空仓位,临近收盘时平仓。
止损:开仓后亏损了10跳最小变动价位后平仓。




回复

使用道具 举报

Jason | 2020-9-27 13:44:38 | 显示全部楼层
测试1:
测试标的:IF加权,10分钟线;
测试时间:2012.10.15-2020.9.28;
测试指标参数:(N:9;M1:3;M2:3);
测试回测参数:资金:1KW;保证金:10%;手续费0.23%%;滑点:1;
回测结果:
1.png
盈利率:537.98%;多仓:526.53%;空仓:11.44%
胜率:28.04%;
盈亏比:2.73;
交易次数:8470;多仓:4235次;空仓:4235次;
最大回撤:14252404;


回复

使用道具 举报

Jason | 2020-9-27 13:51:19 | 显示全部楼层
测试二中,第一感觉没有动态止损,尝试设入ATR动态止损:
LOTS:=10000000*0.6/(C*MARGIN*UNIT+FEE);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
BACKGROUNDSTYLE(1);
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,ZQ);
CROSSUP(K,D),BPK(LOTS);
CROSSDOWN(K,D),SPK(LOTS);
C>LC+K1*ATR,BP(LOTS);
C<LC-K1*ATR,SP(LOTS);
C<BKPRICE-10*MINPRICE,SP(LOTS);
C>SKPRICE+10*MINPRICE,BP(LOTS);
CLOSEMINUTE<=1,CLOSEOUT;
对ZQ和K1两个参数进行优化,最优结果为ZQ=20,K1=1.3;但盈利率仍然为-97%。

回复

使用道具 举报

Jason | 2020-9-28 14:14:44 | 显示全部楼层
了解到一个名为盘整的函数,加入函数看看有何效果:

LOTS:=10000000*0.3/(C*MARGIN*UNIT+FEE);

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
BACKGROUNDSTYLE(1);

TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);

CROSSUP(K,D)&&PANZHENG=0,BPK(LOTS);
CROSSDOWN(K,D)&&PANZHENG=0,SPK(LOTS);

C>LC+0.9*ATR,BP(LOTS);
C<LC-0.9*ATR,SP(LOTS);
C<BKPRICE-5*MINPRICE,SP(LOTS);
C>SKPRICE+5*MINPRICE,BP(LOTS);

CLOSEMINUTE<=1,CLOSEOUT;


实际盘位一般不会超过30%,因此开仓比例参数设定为0.3。

测试3:
测试标的:IF加权,10分钟线;
测试时间:2012.10.15-2020.9.28;
测试指标参数:(N:9;M1:3;M2:3);
测试回测参数:资金:1KW;保证金:10%;手续费0.23%%;滑点:1;
回测结果:
1111.png
盈利率:444.79%;多仓:320.79%;空仓:124.00%
胜率:24.83%;
盈亏比:3.58;
交易次数:5130;多仓:2532次;空仓:2598次;
最大回撤:3314200;

相比测试1,代码发生了一些变化:
1.      总体仓位从6成下降至3成;
2.      增加ATR止损,ATR参数周期为26,ATR止损倍数为0.9;
3.      固定止损参数由10跳最小变动单位改为5跳最小变动单位;
4.      增加PANZHENG()函数,同时满足PANZHENG=0才开仓;

相比测试1,结果发生了一些变化:
1.      仓位下降50%,盈利率减少100%左右;
2.      交易次数减少40%,开空仓的成功率有所增加;
3.      最大回撤减少76.7%
4.      胜率降低4%,盈亏比上升0.85;
回复

使用道具 举报

Jason | 2020-10-15 21:54:48 | 显示全部楼层
在此基础上,寻找区别“震荡”或“盘整”的代码:
//仓位
LOTS:=10000000*0.4/(C*MARGIN*UNIT+FEE);

//指标定义
//KDJ
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;

//ATR
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);

//标识定义
LC:=REF(C,1);

//开仓指令
DYX:= D>A1 || D<A2;
CROSSUP(K,D) && DYX, BPK(LOTS);
CROSSDOWN(K,D) && DYX, SPK(LOTS);

//止损
C>LC+0.9*ATR,BP(LOTS);
C<LC-0.9*ATR,SP(LOTS);
C<BKPRICE-16*MINPRICE,SP(LOTS);
C>SKPRICE+16*MINPRICE,BP(LOTS);
CLOSEMINUTE<=10,CLOSEOUT;


回复

使用道具 举报

Jason | 2020-10-15 21:58:41 | 显示全部楼层
对A1和A2进行参数优化,结果如下:

  
排名
  
参数组
总盈利率
平均盈亏
胜率
交易次数
平均盈利/平均亏损
权益最大回撤
权益最大回撤比
  
0
  
[9 3 3 0 0]
540.34%
6357.68
33.80%
8499
2.16
6597744
29.91%
  
1
  
[9 3 3 25 10 0]
688.88%
9825.73
33.79%
7011
2.28
6712003
19.08%
  
2
  
[9 3 3 25 0 0]
641.73%
9204.35
33.75%
6972
2.26
6247414
26.78%
  
3
  
[9 3 3 25 5 0]
641.73%
9204.35
33.75%
6972
2.26
6247414
26.78%
  
4
  
[9 3 3 20 10 0]
636.11%
8314.13
33.85%
7651
2.22
5923251
29.60%
  
5
  
[9 3 3 30 10 0]
615.11%
9705.04
33.32%
6338
2.32
7054608
29.63%
  
6
  
[9 3 3 25 15 0]
603.33%
8243.33
33.67%
7319
2.24
7368371
19.78%
  
7
  
[9 3 3 25 20 0]
597.09%
7621.8
33.75%
7834
2.21
7675521
23.41%
  
8
  
[9 3 3 100 85 0]
596.27%
7480.51
33.65%
7971
2.22
6768455
30.89%
  
9
  
[9 3 3 95 85 0]
592.32%
7429.12
33.65%
7973
2.21
6768455
30.89%
  
10
  
[9 3 3 20 0 0]
588.96%
7737.24
33.82%
7612
2.21
7604464
41.25%
  
11
  
[9 3 3 20 5 0]
588.96%
7737.24
33.82%
7612
2.21
7604464
41.25%
  
12
  
[9 3 3 100 80 0]
587.92%
7813.96
33.47%
7524
2.25
5679304
26.38%
  
13
  
[9 3 3 95 80 0]
583.97%
7759.43
33.47%
7526
2.24
5679304
26.38%
  
14
  
[9 3 3 90 85 0]
578.36%
7137.56
33.58%
8103
2.21
7530047
35.02%
  
15
  
[9 3 3 15 10 0]
576.21%
7045.03
33.84%
8179
2.18
7863199
32.09%
  
16
  
[9 3 3 90 80 0]
572.76%
7483.15
33.41%
7654
2.24
5743624
26.23%
  
17
  
[9 3 3 30 0 0]
568.87%
9031.09
33.28%
6299
2.3
6675950
32.21%
  
18
  
[9 3 3 30 5 0]
568.87%
9031.09
33.28%
6299
2.3
6675950
32.21%
  
19
  
[9 3 3 70 65 0]
562.78%
7075.41
33.76%
7954
2.19
6494697
24.13%
  
20
  
[9 3 3 100 90 0]
557.06%
6665.77
33.84%
8357
2.17
5896472
27.34%


0号为不对D值约束的回测结果,1~20是对A1、A2参数优化后收益率前20的组合。
A1在25、30,A在5、10左右的值时,对原有的模型起到了增强的效果。

按优化的逻辑,好的结果认为D在5-30之外的信号是比较有用的,在5-30之内出的上下穿信号都不大正确,信号被筛选掉了1500个左右。但胜率并没有提高,提高的是盈亏比。





回复

使用道具 举报

Jason | 2020-10-15 22:08:38 | 显示全部楼层
以下为A1=20,A2=10的情况下,代码对IF加权,10分钟线,2012年10月15日至2020年10月15日的回测参数、交易参数和回测结果:


IFJQ 10MIN KDJ 对D约束 参数.png
IFJQ 10MIN KDJ 对D约束 交易参数.png
IFJQ 10MIN KDJ 对D约束.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关课程推荐
桥博士《MACD指标详解》
为什么我们只用MACD金叉死叉来进行操作效果并不好,学习课程就能在研究MACD指标上少走很多弯路
桥博士《K线形态组合解析》
从理论到实战,让您全面掌握各种K线形态及各种组合,帮您分析梳理大量K线知识让您的投资更游刃有余
桥博士《股票入门基础知识》
从理论到实战,课程包括如何买卖股票、开户流程、交易软件、k线图知识、技术指标、价值投资等新手必备知识

37

主题

155

帖子

507

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
507
  • 官方论坛

    提供最新 Discuz! 产品新闻、软件下载与技术交流