トレンドトレーダー バンド バックテスト戦略 トレンドトレーダーの移動平均値に基づいた

作者: リン・ハーンチャオチャン, 日付: 2023-12-11 13:12:44
タグ:

img

概要

この戦略の主な考え方は,価格動向を判断し,移動平均値とボリンジャーバンドを使用して取引信号を生成することです.具体的には,まず変動幅を得るため,一定の期間中の平均真の範囲 (ATR) を計算し,その後,最高値と最低値を組み合わせて制限チャネルを形成します.価格がこのチャネルを通過した場合,閉じる価格はチャネル価格に設定されます.その後,トレンドトレーダー移動平均値 (AVR) と呼ばれる制限された閉じる価格の移動平均値を計算します.最後に,トレンドトレーダー移動平均値の上下にボリンジャーバンドを描き,取引信号を形成します.価格が上帯を通過するとロング,下帯を通過するとショートします.

戦略の論理

この戦略は,まずATRレンジを計算し,最高値と最低値を組み合わせて制限チャネルを形成する. 閉じる価格は,チャネルを突破するときにのみチャネル価格に制限される. その後,中長期トレンド方向を反映する限定閉じる価格のトレンドトレーダー移動平均を計算する. 最後に,トレンドトレーダー移動平均に平行する上帯と下帯をボリンジャーバンドとして描く. 上帯を突破すると長い信号,下帯を突破すると短い信号が生成される.

トレンドを判断するコアは,中長期のトレンド方向を体現するトレンドトレーダーの移動平均にあります.ボリンジャーバンドの役割は,いくつかの偽のブレイクをフィルターし,取引信号をより信頼性のあるものにすることです. 戦略全体がトレンドフォローとブレイクを組み合わせて,強力なトレンドシステムを形成します.

利点

  1. ATRと価格帯は,市場の変動を追跡するための適応チャネルを構築する
  2. トレンド・トレード AVRは中長期の傾向を明確に判断している
  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")

もっと