高度なボリンジャーバンド移動平均グリッドトレンドフォロー戦略


作成日: 2023-11-24 14:48:28 最終変更日: 2023-11-24 14:48:28
コピー: 0 クリック数: 951
1
フォロー
1617
フォロワー

高度なボリンジャーバンド移動平均グリッドトレンドフォロー戦略

概要

この策略は,高級ブリン帯均線格子トレンド追跡策略である.これは,ブリン帯均線を利用してトレンド判断を行い,トレンド方向に格子保有追跡を確立する策略である.

戦略原則

この戦略の基本は以下の通りです.

  1. ブリン帯を利用して,現在の市場波動の範囲を判断する. ブリン帯の中央線はn日間の単純移動平均で,帯域はn日間のATR平均である.

  2. ブリン帯の外側の4条は,異数平均の真波幅の線である.戦略は,異なるレベルの線を突破する時にポジションを確立する.

  3. EMAはゆっくりと平均線が大周期トレンドの方向を判断する.大周期多頭時だけ多頭し,空頭はその逆である.

  4. トレンドの方向を追跡し,針形K線が現れたとき平仓停止.

具体的には,この戦略は以下の部分に分かれています.

  1. ブリン帯のパラメータを定義し,ブリンの中間線はn日SMA平均線,ブリン帯幅はn日ATR。戦略におけるブリン長さはn 20。

  2. 4つのブリン外拡張線を設定し,線上下中軌道距離はそれぞれ1.236倍,2.382倍,3.618倍および4.236倍の平均実際の波動幅である.

  3. 高周期トレンドを判断するために,快線25日,慢線200日であるEMA平均線を設定します.

  4. 大周期多頭時,価格が下方4つの均線を破るときに多頭持仓を段階的に構築する.空頭同理.

  5. 針形K線または価格が大周期平均線を再度横断した場合は,針形終了信号とみなし,平仓を停止する.

以上は,この戦略の主な技術的原理である. ブリン帯によって現在の波動範囲を判断し,大周期的なトレンドの下でポジション構築を追跡し,最終的に高確率のポジション保持の効果を達成する.

戦略的優位分析

この戦略の利点は以下の通りです.

  1. トレンド特性を充分利用し,大周期でトレンドの方向を判断し,トレンドの方向にポジションを構築することで,不必要な逆操作を減らすことができる。

  2. 多層ブリンラインを使用すると,現在の波動領域をより明確に判断でき,ほとんどの状況を把握するのに役立ちます.

  3. 格子保有方式は,各ユニットの資金を均等にリスクを分配し,安定した利益を得ることができます.

  4. 針形K線を用いた高効率の信号平仓は,迅速に停止させることができる.

  5. 戦略全体は,トレンド判断,格子持仓,特定信号平仓の三位一体を実現し,比較的成熟した完全な量化戦略である.

戦略的リスク分析

この戦略には以下のリスクがあります.

  1. 大周期的なトレンド判断の誤差の確率. 平均線には一定の誤差の確率があり,不必要な逆操作を引き起こす可能性がある.

  2. ブリンライン突破の失敗確率. ブリンラインは価格の道を100%予測できない.

  3. 針状K線信号は遅れて発信され,間に合わずに止まらない.

  4. 大周期震動調整では重複しすぎたポジションが形成されやすい.

対応方法は以下の通りです.

  1. 平均線のパラメータをゆっくりと調整して誤差の確率を下げます.

  2. ブリンラインのパラメータを調整して,ブリンラインをほとんどの波動にできるだけ近づけるようにする.

  3. 特定の形状の停止信号をテストする.

  4. 倉庫の大きさをコントロールする

戦略最適化の方向性

この戦略は以下の方向から最適化できます.

  1. 異なる平均線パラメータをテストして大周期トレンド判断を最適化する.例えば,EMA,RSIなどの他の指標をテストする.

  2. 異なる倍数ATRパラメータをテストし,ブリン通路幅の設定を最適化します.ブリン帯を実際の波動に近似します.

  3. 他の高効率の停止信号をテストする.例えば,SAR,カルマン均等線など.

  4. 格子間隔の最適化 波動区間を均一に切り分け,重複の倉庫建設を減らす

  5. 損失防止メカニズムの強化 極端な状況で大きな損失を避ける

要約する

この戦略は,ブリン帯通路,均線指標,特定のK線形状などの技術的手段を総合的に使用している.大周期的なトレンドを判断する前提で,トレンド追跡型の均線ブリン網戦略を構築している.従来のブリン帯突破と比較して,この戦略は,トレンド特性の判断を加え,不要な逆転ポジションを減らすことができる.同時に,網状のポジション保持方式は,各ユニットの資金リスクを分散させ,安定した収益を得ることができる.この戦略は,トレンド判断,ブリン幅度,ストップシグナル,ストップ損失方法など,複数の角度から最適化され,より安定した戦略効果を得ることができる.

ストラテジーソースコード
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")