ダイナミックチャネル移動平均トレンドフォロー戦略


作成日: 2024-02-22 15:51:48 最終変更日: 2024-02-22 15:51:48
コピー: 0 クリック数: 577
1
フォロー
1617
フォロワー

ダイナミックチャネル移動平均トレンドフォロー戦略

概要

この戦略は,ダイナミックチャネルと均線のトレンド追跡原理に基づいて設計されている.これは,価格のダイナミックチャネルを計算し,チャネルの上下軌道によって価格トレンドの方向を判断し,均線フィルター価格散度と組み合わせて取引シグナルを生成する.この戦略は,中短線トレンド取引に適用されます.

原則

この戦略は以下の原則に基づいています.

  1. ダイナミック価格チャネルを計算する.チャネルの中線は,最高価格と最低価格を計算し,チャネルの上線は中線+価格分散度平均線,下線は中線-価格分散度平均線である.

  2. トレンドの方向を判断する。上線を踏むとき,看板と定義する;下線を踏むとき,下落と定義する。

  3. 波騒音 特定の周期の価格分散度平均線を使用し,波価格のランダムな波動による騒音

  4. 取引シグナルを生成する.看板の場合,その周期の閉盘価格が開盘価格より低いときに買取シグナルを生成する.看板の場合,その周期の閉盘価格が開盘価格より高いときに売出シグナルを生成する.

利点

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

  1. ダイナミックチャネルは価格の動向をリアルタイムで捉えます.
  2. 均線フィルタリングは偽信号を減少させる.
  3. トレンド方向とK線実体方向を組み合わせて取引信号を生成し,套入を避ける.

リスク

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

  1. パラマスを正しく選択しないことは,過度な最適化につながります.
  2. 振動盤の整理は誤った信号を発生させる可能性が高い.
  3. 価格の急激な変動は予測できない.

対応方法:

  1. 厳格なParamsの選択とテスト
  2. フィルタリング条件を追加し,振動の整理を認識する.
  3. ストップダストストップを設定し,リスクをコントロールする.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 異なる周期パラメータの安定性をテストする.
  2. 判断力を高めるためのVOLUMEや波動度指数
  3. 波段,通路などで入場と退出を判断する.

要約する

この戦略は,ダイナミックチャネルと均線トレンド判断を統合した考えで,中短線捕捉トレンド方向においてよく機能している.しかし,また,一定の制限があり,より多くの市場状況に対応するためにさらなるテストと最適化が必要である.

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


//@version=2
strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//up =  and trend == 1 ? 1 : 0
//dn =  and trend == -1 ? 1 : 0 

up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0
dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)