设为首页收藏本站

 找回密码
 注册
查看: 7927|回复: 12
打印 上一主题 下一主题

随机试错模型 [复制链接]

Rank: 3Rank: 3

精华
0
UID
117185
积分
220
帖子
68
主题
10
阅读权限
40
注册时间
2013-3-21
最后登录
2015-6-2
跳转到指定楼层
1#
发表于 2013-3-29 13:53:10 |只看该作者 |倒序浏览
投资学里经典的一句话 - 限制损失,让盈利奔跑。只要盈亏比达到一个理想的值,那胜率低也一样能赚到钱。为了验证这个理论,我写了一个随机发买卖单的模型,并且限制每次损失的上限,对盈利进行追踪止损。模型为日内交易,每3分钟发一个单。
  1. Params
  2.         Numeric InitialStop(2);
  3.         Numeric BreakEvenStop(3);
  4.         Numeric TrailStop(5);
  5.    
  6. Vars
  7.         Numeric RandNum;
  8.         Numeric BuyOrSell;
  9.         Numeric StopLine;
  10.         Numeric MyEntryPrice;
  11.         Numeric MyExitPrice;
  12.         NumericSeries HighestAfterEntry;
  13.         NumericSeries LowestAfterEntry;

  14. Begin

  15.         If(Time>=0.1455){//如果要实盘测试,把Time改为CurrentTime
  16.                         If(MarketPosition == 1)
  17.                                 Sell(0,Close);
  18.                         If(MarketPosition == -1)
  19.                                 BuyToCover(0,Close);
  20.                                 return;
  21.                         }

  22. If(BarsSinceentry == 0)
  23.         {  
  24.                 HighestAfterEntry = Close;
  25.                 LowestAfterEntry = Close;  
  26.          If(MarketPosition <> 0)  
  27.          {
  28.                 HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);
  29.                 LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);
  30.          }         
  31.     }else
  32.         {
  33.                 HighestAfterEntry = Max(HighestAfterEntry,High);
  34.                 LowestAfterEntry = Min(LowestAfterEntry,Low);
  35.         }
  36.         Commentary("HighestAfterEntry="+Text(HighestAfterEntry)); Commentary("LowestAfterEntry="+Text(LowestAfterEntry));
  37.         MyEntryPrice = AvgEntryPrice;

  38.         If(MarketPosition==1) // 有多仓的情况  
  39.         {
  40.                 StopLine = AvgEntryPrice * (1-InitialStop/1000);
  41.                
  42.                 If(HighestAfterEntry[1] >= MyEntryPrice *(1 + BreakEvenStop/1000))
  43.                   Stopline  = MyEntryPrice;
  44.                
  45.                 If(Stopline < HighestAfterEntry[1]*(1 - TrailStop/1000))
  46.                   Stopline  = HighestAfterEntry[1]*(1 - TrailStop/1000);
  47.                
  48.                 if(Low <= Stopline)
  49.                 {
  50.                         MyExitPrice = Stopline;
  51.                         If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
  52.                         Sell(0,MyExitPrice);
  53.                         return;
  54.                 }
  55.         }else if(MarketPosition==-1) // 有空仓的情况
  56.         {
  57.             StopLine = AvgEntryPrice * (1+InitialStop/1000);
  58.                
  59.                 If(LowestAfterEntry[1] <= MyEntryPrice *(1 - BreakEvenStop/1000))
  60.                   Stopline  = MyEntryPrice;
  61.                
  62.                 If(Stopline > LowestAfterEntry[1]*(1 + TrailStop/1000))
  63.                   Stopline  = LowestAfterEntry[1]*(1 + TrailStop/1000);
  64.                
  65.                 Commentary("StopLine="+Text(Stopline));
  66.                 If(High >= Stopline)
  67.                 {
  68.                         MyExitPrice = Stopline;
  69.                         If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
  70.                         BuyToCover(0,MyExitPrice);
  71.                         return;
  72.                 }
  73.         }

  74.         RandNum = Rand(0,100); //产生0到100的随机数
  75.         BuyOrSell = Mod(RandNum,2); //产生0到1的随机数

  76.         Commentary("BuyOrSell:"+TEXT(BuyOrSell));

  77.         If(BuyOrSell == 0 && Mod(Minute,3) == 0 && MarketPosition!= -1) //如果BuyOrSell为0,每3分钟发一次多单
  78.                 Buy(1,Close);
  79.         else If(BuyOrSell == 1 && Mod(Minute,3) == 0 && MarketPosition!=1)//如果BuyOrSell为1,每3分钟发一次空单
  80.                 SellShort(1,Close);  
  81. End
复制代码
用这个模型在橡胶单日做了10次测试,开一手,结果意外的发现共赢8次,仅亏2次。最大亏损才660,最大盈利4210. 难道是我RP比较好?

第1次 : 亏450
第2次 : 赢1520
第3次 : 赢2790
第4次 :赢3540
第5次 :赢4210
第6次 :亏660
第7次 :赢2840
第8次 :赢1020
第9次 :赢3130
第10次 :赢810

不信邪,再测10次,结果还是很意外的盈利8次,亏2两次。不过这次最大亏损达到4910,最大盈利4030.
第1次 : 赢240
第2次 : 赢1480
第3次 : 赢1020
第4次 :赢360
第5次 :亏4910
第6次 :赢4030
第7次 :赢1920
第8次 :赢1230
第9次 :赢1980
第10次 :亏3090

经过这次测试我终于相信盈利其实跟入市的选择关系并不大,关键是要控制好亏损,让盈利尽量增长,就是人们经常说的高盈亏比。篮球赛场上也有一句话,就是谁的防守好谁就能赢得总冠军,我相信投资也是一样的,我们很难控制盈利,那我们能做的就是很好的防守,让损失降到最低。小弟愚见,欢迎拍砖。

Rank: 3Rank: 3

精华
0
UID
112403
积分
168
帖子
126
主题
6
阅读权限
40
注册时间
2012-9-7
最后登录
2013-6-21
2#
发表于 2013-3-29 13:59:44 |只看该作者
分析对错不重要,关键是对于持仓的处理

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117185
积分
220
帖子
68
主题
10
阅读权限
40
注册时间
2013-3-21
最后登录
2015-6-2
3#
发表于 2013-3-29 14:02:32 |只看该作者
tcx 发表于 2013-3-29 13:59
分析对错不重要,关键是对于持仓的处理

说得不错,坚持好仓位控制,加上一定的盈亏比,长期一样能盈利。

使用道具 举报

Rank: 2

精华
0
UID
63431
积分
55
帖子
6
主题
4
阅读权限
30
注册时间
2011-9-4
最后登录
2013-8-6
4#
发表于 2013-6-16 13:09:54 |只看该作者
好像Close是未来数据吧?????????

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117185
积分
220
帖子
68
主题
10
阅读权限
40
注册时间
2013-3-21
最后登录
2015-6-2
5#
发表于 2013-6-16 17:07:56 |只看该作者
ywh211 发表于 2013-6-16 13:09
好像Close是未来数据吧?????????

这个模型用close没关系,因为是随机买卖。TB对Bar进行了处理,不会在同一个bar开仓多次。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4647
积分
1403
帖子
432
主题
31
阅读权限
60
注册时间
2009-6-16
最后登录
2019-10-27
6#
发表于 2013-6-17 07:33:14 |只看该作者
“...用这个模型在橡胶单日做了10次测试,开一手,结果意外的发现共赢8次,仅亏2次。最大亏损才660,最大盈利4210...”

请问一下,这是模拟实盘的结果吗?

使用道具 举报

Rank: 8Rank: 8

精华
0
UID
17581
积分
5464
帖子
275
主题
27
阅读权限
100
注册时间
2010-10-13
最后登录
2021-8-30
7#
发表于 2013-6-17 09:20:33 |只看该作者
那是因为lz的手续费一向设得很低,否则这个代码的资金曲线陀陀地都是30度向下

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117185
积分
220
帖子
68
主题
10
阅读权限
40
注册时间
2013-3-21
最后登录
2015-6-2
8#
发表于 2013-6-17 09:47:49 |只看该作者
liq77 发表于 2013-6-17 07:33
“...用这个模型在橡胶单日做了10次测试,开一手,结果意外的发现共赢8次,仅亏2次。最大亏损才660,最大盈 ...

不是,是简单的backtest,用历史数据测试。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117185
积分
220
帖子
68
主题
10
阅读权限
40
注册时间
2013-3-21
最后登录
2015-6-2
9#
发表于 2013-6-17 09:50:07 |只看该作者
zzzlondon 发表于 2013-6-17 09:20
那是因为lz的手续费一向设得很低,否则这个代码的资金曲线陀陀地都是30度向下 ...

做这个测试的时候没考虑滑点,手续费等因素。只是想测试如果风险控制的好的话,入场条件不重要。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4647
积分
1403
帖子
432
主题
31
阅读权限
60
注册时间
2009-6-16
最后登录
2019-10-27
10#
发表于 2013-6-17 13:09:27 |只看该作者
有证据表明,对于日内短线来说,入场的优势至关重要!

使用道具 举报

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

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-7 05:02

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部