【python数字货币量化_21精华帖_策略第8篇】基于BOLLING布林通道_网格思想_策略:融合趋势策略+震荡策略

[复制链接]
查看6111 | 回复0 | 2023-8-2 07:54:39 | 显示全部楼层 |阅读模式
(回测结果已经更新到最下方)
* o- x' O" c' `3 p- p0 J0 F: r该策略基于布林进行改编,以网格思想做仓位管理,包含了震荡和趋势两种形态。
/ V! }, U' `7 k策略包含两个布林通道9 [5 r' @- x0 `# q& N
A.大布林采用大参数,适用于趋势策略) N# l0 ^- e4 [  c; d3 z5 a
B.小布林采用的参数基于大参数得来,适用于震荡策略。
' _: v/ c9 E4 h  q7 o$ E9 P* `该策略的举例说明:
; F9 H3 r, ^. |9 O. O+ r大布林参数 : 【500, 3】 上轨: up1  下轨:low1   (大周期去除中轨)
" V5 a6 b2 H3 C# J9 i& ?小布林参数 : 【250, 1.5】 上轨: up2   中轨 : median   下轨: low2" }9 c9 z6 ^4 h; k$ `1 r
(基于大参数变换而来,大家喜欢可以用0.618,变成【309,1.8】)* W- g' M9 A9 b8 g3 \- s
**仓位设定:4份**      周期: 15T  (网格策略其实周期可以更短,5T,10T, 这里用15T举例)​
& K  K3 A  b5 g5 ?- @策略可视化图如下:
+ R5 W* d& V6 j+ e, Q! |0 ]6 _
6 }* s/ D$ m3 F4 _' ~7 z7 j6 e+ C# `$ A- z4 `- v4 I9 q) z
小布林执行震荡策略 (分享会有震荡布林的代码). f( w7 U5 x+ H* b- y# G
做空1份仓位" l: ], _- n: N; u
condition1 :上一根k线close > up2 & W- y: Z3 N; V* W1 D: v- M, p
condition2:目前的close < up22 L5 W' n$ {- ^) }
-----------------------------------------6 R2 K" K9 W# B, a) w' x" a
做多1份仓位
9 j# o0 T9 N3 _; |8 Y4 {condition1 =上一根k线close < low2
6 z& ]. V- k# j! G2 Fcondition2 = 目前的close > low2* F( m, H2 ?0 g! L3 j! a
-----------------------------------------
4 ]* a5 |* E, a  r多空平仓 (触发中轨仓位全平)
/ ^3 ^8 h1 i. Y% h7 R% J, G上一根k线close > median & 目前的close <= median  (平空)' r' e1 L' B( W+ P! v
上一根k线close < median & 目前的close >= median  (平多)0 k  `+ y5 b5 F# T3 G) x* k
震荡情况注意点0 G" q5 H6 `4 j1 _
注意:仓位的上限是4份,k线有可能在上轨反复穿梭,导致震荡期间仓位开满4份。, Y: F6 Z- d+ L
因此设定只要k线回归中轨则仓位全平
, i& |! }* V) c+ u+ H+ U下图为震荡策略开平示意图
. d* F! b: n7 E* @# B4 u& p5 h( z3 ?
【python数字货币量化_21精华帖_策略第8篇】基于BOLLING布林通道_网格思想_策略:融合趋势策略+震荡策略-2.jpg
" j2 Q6 p# |& V7 A$ t* R(k线在上轨反复穿梭的情况)0 R3 m! \% W! ~2 D6 {
! V# W8 }  h0 h) p# }) g
8 j2 S, ~# }! g/ P7 A3 g9 L* Y
大布林执行趋势策略  @7 [! h7 Y) t
做多2份仓位
. ?4 U) ]: Y9 h. P! P1 ocondition1 = 上一根k线close < up1
9 j1 X, ?: O* h& Icondition2 = 目前的close > up1
1 ~' _1 Y$ n. A5 G-----------------------------------------
4 V) u0 ]& |0 M; u: u8 `, \* S, e) J做空2份仓位2 h* [' j+ Z0 h& y
condition1 :上一根k线close > low1
# H* ^, z$ Y, f+ F. _$ f% b- dcondition2: 目前的close < low1
; `0 P! Q. O- J5 q9 }-----------------------------------------( {! Q) X! A. k" X
多空平仓 (触发中轨仓位全平)
! ]3 Y" ~) `+ K- p上一根k线close > median & 目前的close <= median  (平空)
, S5 d, g% U1 U4 i: [9 \4 i上一根k线close < median & 目前的close >= median  (平多)8 [4 b. _" j4 q) `. T( Z/ K/ J
趋势情况注意点& t- V- {! P0 o: ^0 E
注意:趋势突破的时候有可能会有大行情,所以采取做多2份,反复突破则加仓2份,仓位的上限为4份。0 v: q$ C# M* ^+ d2 S
下图为趋势策略开平示意图. D. {9 u, [& W# O* \6 \$ Q/ i

" v  I% j* g' y+ v. a0 W
$ ~( o9 n6 s/ r( H+ ~2 t9 m当趋势策略和震荡策略结合的时候,理想状况下的行情就如 2020/4/29 ~ 2020/5/2 所示(BTC,15T)0 s' Y% `9 x6 p' j5 S! v% J* z
4 B' A8 R* T: K- ~2 H  `4 R% p
【python数字货币量化_21精华帖_策略第8篇】基于BOLLING布林通道_网格思想_策略:融合趋势策略+震荡策略-5.jpg
9 X8 A% j, Z/ D2 @3 n2 f2 o1 h& k以上是该策略的基础情况,在5条线之间做网格化的仓位管理; R4 ^' F7 P/ Q0 [$ g; }$ m: M
但是依然涉及到很多细节的地方可以优化处理,以下是我根据不同行情找出的优化思路
. s& V( s0 r% A4 p2 K5 W# y' _**1.震荡区间仓位4份仓位加满,结果行情就往反方向去了,4份仓位大亏。**情况如图# u2 V0 C# G$ c; D

9 j/ O# o0 B# S* s) b, x 【python数字货币量化_21精华帖_策略第8篇】基于BOLLING布林通道_网格思想_策略:融合趋势策略+震荡策略-6.jpg 2 f6 v; P9 \" l/ E! i) x
我的优化思路:
( ]* s# y6 [+ @. K0 w! X7 I! K1.限制做空份数,既然震荡区间赚钱是小赚,那我就不开那么多,最多两份仓位
3 A4 ^) o1 q# t- R, _限制做空份数​
9 g) a1 z+ r& K7 `1 F, g那么我上图一共会持有2份空头,在k线上穿大布林up1后策略会做多2份仓位,实际上就是平了2份做空仓位。
- a: J: }4 ^/ ^) Z少亏就是赚,这波我认。; v) h4 z$ @/ X9 m7 g' w( i
2.增加震荡区间做空限制条件,震荡区间开仓,我当然希望开仓后,k线会向median中轨靠拢。/ t% B( l1 E4 U
而且震荡状态下,k线价格会有向中轨靠拢的趋势,表现为布林收窄。# ^! t8 s( S1 y; x. i1 l$ f
设定一个条件:
( q* ?" d; {+ y**下一次做空1份仓位的收盘价 < 当前做空1份仓位的收盘价** 7 |. E2 T# @1 L1 Y
**下一次做多1份仓位的收盘价 > 当前做多1份仓位的收盘价**  ​
" e$ z% |) n, `& O1 p" f4 G# S也就是说我开了一份空仓后,我会记录下目前我开一份空仓的收盘价格close,如果下一次再次满足做空条件,可是价格比我上一次开空的价格高,那么我就放弃做空这一份仓位,如果低于上一次开空的价格我就加这份空仓。
! R# {( x. R/ x2 T# v! |- k在这个新增条件下,原来初版策略开空4份仓位的价格分别是 8981 ; 9013;9012; 9032 。这个时候我就只会持有1份空仓,因为后面的价格都比我前面的高。
  t) s4 z7 ?" v) C8 g- n  Y2 w(这里可以用jason文件记录每次开仓的仓位价格,然后拿最新的收盘价与jason文件里的比较,然后有一个细节就是到底每次开仓后更新最新的开仓价存到jason里覆盖原来的开仓价,还是就把第一次开仓的价格定下来做一个标准,这个可以分开回测查看效果)
4 r- y' D2 u, y. k+ Y+ c. p3.增加趋势策略加仓的条件% |: r+ S, H' w4 ^
对于趋势策略,我们也可以设定一个加仓限制条件。因为趋势突破下,价格会沿趋势的上轨来回穿梭。
) ^  @7 Q+ X( Q% S( B* ~6 N6 L6 p* h6 T) P1 C7 L# [
设定一个条件:
/ C1 f$ q- N; T7 `! {下一次做空2份仓位的收盘价 < 当前做空2份仓位的收盘价0 K- |5 g, F: C: Y+ O, d. P
下一次做多2份仓位的收盘价 > 当前做多2份仓位的收盘价  h6 z$ g% s' C- v
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ; h" }6 Z# _; S) R8 Q
一个策略好不好,能不能有新方向优化我一般看极端行情的表现如何,我们接下来看最近极端行情的表现, v5 M$ B; n8 g( [: p" O# @
: |2 I: l! T, j: d* ?
看起来还行,赚钱了,赚了1份的钱。1 U7 j+ D% B" S" I" W9 l/ r
-----------------------------------------------------------------------------------------------------------------------
! R5 a0 P! J1 X% K# s0 Q; q-----------------------------------------------------------------------------------------------------------------------
8 b- y0 G% \5 J) v! Q5 p6 g# i1 P0 L: [  b& ]! D% `
急速的画门行情依然无法避免呀,15T走完依然需要亏损,还好就是网格加仓的条件有限制,做多加仓的条件并没有满足,仓位没有加满4份。好消息就是后面震荡行情有赚钱了。
6 L2 z) R: u; m' y2 _优化的方向是不是降低网格策略的周期?盘中开仓会不会更好?
/ `& @( g* G0 I' j% U( t* B9 N5 N8 t0 A

8 y0 o1 L, Z( O$ Y以上是基于网格思想的趋势+震荡策略。15T的周期其实对于高频率做网格的策略来说依然太长了,网格策略可以向5T,3T的时间入手,6.2极端行情的k线在3T的情况下,在该策略的不变参数下居然是赚钱的hhh。希望老板们有什么好优化方向也给指条名路。" ?& m9 K# @9 B; w
-----------------------------------------------------------------------------------------------------------------------
9 _8 D9 D2 D- t* s-----------------------------------------------------------------------------------------------------------------------
; a) b- X, ]; q最后做一个网格开仓条件概括图! j, k& Y2 o+ A& j

9 q9 t% y$ g" G( _/ l/ A----------------------------------------------------------------------------------------------------------------------
8 J0 i5 _& w" w7 A- [-----------------------------------------------------------------------------------------------------------------------8 U$ s; L0 L9 H0 g  `; F
**以下附带回测结果展示(2019年6月 —— 2020年6月)ETH 15T**
% S8 P! c# U1 _; q$ \  @原始版本在震荡区间内加仓的效果并不好,如果震荡区间加满4分仓位在一波大趋势下会损失惨重。
: i- F- b& ?8 s  u, V1 r+ A0 w所以将原始版本震荡区间的仓位,也就是震荡策略部分的开仓限定在1份,也就是**震荡区间只会开1份仓位**。6 |/ ^0 s  V3 V- y. X5 w
# |) v& H% m! S0 Q
**1.原始版本布林策略【500,3】**
  ?* a0 ], d  U' {. ~* f趋势策略收益果然就是香,就是最近4.5.6三个月反复磨损震荡,无比痛苦 ,懂得都懂。- H* p$ @" I' E" o' x

- Z* V8 L* q- p* h0 ~+ e" P3 p**2.网格版本(震荡区间限定一份仓位)**
* P0 `1 A% G; h, d" V$ H# s可以看出净值确实不比趋势策略的高,但是胜率高,达到了60%,而且交易的次数多了不少。
) r2 C  I% t- b4 |今年1月份开始为期2个月的上涨趋势没有抓住还少亏了点,但是没有错过312的大行情,不错不错
* D; b! v+ X: _- q3 o令人欣慰的是4.5.6居然亏得不多,合起来就亏了6个点,令人欣慰,比起原始布林26%的亏损。如何6 y/ J) J& `, n# J
在两个策略之间切换或许是很好的研究方向。
4 J+ x0 c/ c, f4 b  i$ Z) R7 c. P7 B& S! B" e4 ~3 A& c
6 i) ]# N; X; t
**3.一个神奇的发现,震荡区间的范围定义是可以增加一个参数来回测的。**1 p% {+ r# {* u
一开始界定震荡的范围是原始布林【n /2 , m/ 2】
: G4 s  k- C6 }' P$ c当范围变为【n /2 .5, m/ 2.5】, 收益减少了,回撤减少了,胜率提升为66%。总体看赚不了钱,但是最近3个月的表现可以赚钱。或许有什么神奇的方法可以自适应变化这个震荡周期? 以后发现了再更新吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

243

金钱

0

收听

0

听众
性别

新手上路

金钱
243 元