トレンドトレーダーのための移動平均に基づくボリンジャーバンドバックテスト戦略


作成日: 2023-12-11 13:12:44 最終変更日: 2023-12-11 13:12:44
コピー: 0 クリック数: 593
1
フォロー
1621
フォロワー

トレンドトレーダーのための移動平均に基づくボリンジャーバンドバックテスト戦略

概要

この戦略の主な考えは,移動平均線とブリン帯を利用して,価格の傾向を判断し,取引信号を生成することである.具体的には,まず,一定の周期における平均的な実際の波動範囲ATRを計算し,それから最高価格と最低価格を組み合わせて,制限通路を得ることである.価格がその通路を突破した場合,閉じる価格は通路価格に等しくさせることである.その後,制限後の閉じる価格に移動平均線を求め,その上にさらに下にブリン帯を描き,取引信号を形成することである.価格がブリン帯を突破したとき,ブリン帯を突破した時の空間に多めにすることである.

戦略原則

この戦略は,ATRの波動範囲を計算し,その後,最高値と最低値と結合し,チャネルを制限する. 価格がチャネルを突破したときにのみ,閉じる価格はチャネル価格に制限される. その後,制限後の閉じる価格の移動平均を求め,この移動平均はトレンドトレーダーの平均 (Trend Trade AVR) と呼ばれる.

この戦略の判断トレンドの核心は,トレンドトレーダーの平均線であり,中長期のトレンド方向を反映している.ブリン帯の役割は,部分的な偽ブレイクをフィルターして取引信号をより信頼性のあるものにすることである.全体戦略は,トレンド追跡とブレイク判断を組み合わせて,より強いトレンドシステムを形成する.

戦略的優位性

  1. ATRを最大最小値と組み合わせて,市場波動を効果的に追跡するチャネルを形成します.
  2. トレンドトレーダーの平均は中長期のトレンドを明確に判断する
  3. ブリンが偽の突破で信号の質を向上させた.
  4. システム全体は強い傾向を示しており,長期にわたって保有すると良い利益を得ることができます.

戦略リスク

  1. 中長期保有の場合,突発的な損失が発生する可能性があります.
  2. パラメータの不適切な設定は,取引の頻度,取引費用の増加,滑り点の損失を引き起こす可能性があります.
  3. 効果はパラメータ設定と非常に関連しており,最適のパラメータを見つけるために調整する必要があります.

対策として

  1. 適当にポジション保持期間を短縮し,時効的に損失を止める
  2. 信号にバファーを置くための最適化パラメータ
  3. 過去データとリッドディスクの最適化パラメータを利用する

戦略最適化の方向性

  1. より詳細に異なる市場での異なる周期パラメータ設定を研究する
  2. テストは,偽突破をフィルターする他の指標を追加するかどうか
  3. ストップ・ロスの戦略を組み合わせて,単一損失をコントロールする

要約する

この戦略は,全体として強いトレンド追跡システムである。中長線で市場トレンドを判断し,ブリン帯と組み合わせて取引信号を生成する。パラメータ最適化により,安定した超利益を得ることができる。しかし,長期にわたって持っていたときに重大な出来事による損失を避けるために,リスク管理にも注意する必要がある。全体的に,この戦略は,長期にわたって継続的なアルファを得るため,さらなる研究と最適化の価値があります。

ストラテジーソースコード
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
// And draw two bands above and below TT line.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader Bands Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
BandStep = input(20),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0.0
pos := iff(close < nResMA - BandStep , -1,
       iff(close > nResMA + BandStep, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")
plot(nResMA+BandStep, color= red , title="Trend Trader UpBand")
plot(nResMA-BandStep, color= green, title="Trend Trader DnBand")