ケルトナーチャネルEMA ATR戦略

EMA ATR
作成日: 2024-06-03 10:39:20 最終変更日: 2024-06-03 10:39:20
コピー: 0 クリック数: 617
1
フォロー
1617
フォロワー

ケルトナーチャネルEMA ATR戦略

概要

この戦略は,ケルトナーチャネル指標に基づい,指数移動平均 ((EMA) と平均実際の波動幅 ((ATR) を使って上下チャネルを構築し,価格が下軌道に突破する時に多額のポジションを開き,価格が上軌道に突破する時に平仓を打つ.この戦略は,価格の波動区間を捕捉しようとし,価格が上方チャネルに突破する時に利益を得て終了した.

戦略原則

  1. 指定周期のEMAをケルトナー通路の軌道として計算する.
  2. 指定サイクルのATRを計算し,次に通路の上下軌道として倍数で掛けます.
  3. 閉盘価格が下落したときに,多額のポジションを開設し,開設価格を記録する.
  4. オープン価格が上線を突破すると平仓.
  5. オープン状態では,開設価格が上線値より高い場合は,多項を平成する.

戦略的優位性

  1. 価格の変動幅に自律的に適応できる. ケルトナーチャネルはATRを利用して上下を構成するので,ATRは価格の変動率を測定できる.したがって,変動率が大きい場合,チャネル幅は相応に増加し,頻繁に取引がもたらすコストを効果的に削減する.
  2. 論理的に明確で簡潔で,理解し,実行しやすいという特徴がある.この戦略が使用する指標は簡潔で,核心論理も把握しやすい.
  3. ある程度のトレンド追跡能力がある. 上昇傾向では,この戦略は,価格が上線突破するまで多頭ポジションを保持できる.

戦略リスク

  1. 明確なストップ・メカニズムの欠如.この戦略は,ポジション開設後にストップ・ロスを設定していないため,逆行状況で大きな引き下げを耐えることが可能である.
  2. ブレイクシグナルの定義は粗略である. 閉盘価格が下落し,開盘価格が上位を突破するだけで平仓シグナルとして使用すると,いくつかの誤判が生じ,損益取引が起こる可能性がある.
  3. 策略パラメータの選択は結果に大きな影響を与える.EMAとATRの周期選択とATR倍数の設定は,策略のパフォーマンスに影響を与えるが,策略は明確なパラメータ最適化方法を与えていない.

戦略最適化の方向性

  1. 明確なストップ・ロスのメカニズムを導入する. ポジション開設時に固定ポイントまたはパーセントのストップ・ロスを同時に設定することを検討し,単一取引の最大損失を制御する.
  2. 信号の最適化判断条件 ◎ 突破を確認するために,より多くの価格情報を使用することを考えることができます.例えば,閉店価格がK線を連続して数本下回線を下回るように要求して,下回線からポジションを開くようにし,単一根のK線の偽突破を避けることができます.
  3. 参数最適化を行う.遺伝的アルゴリズムなどの方法を使用して,EMA,ATRの周期およびATR倍数を最適化して,現在の市場に適した参数組み合わせを探することができる.
  4. フィルタリング条件を追加する.例えば,ADXが特定の値より高い場合にのみポジションを開くか,またはMAの多頭列をトレンドフィルタとして使用するなど,いくつかのフィルタリング信号を追加することを考慮することができます.

要約する

この戦略は,Keltnerチャネル指標に基づいて,価格の突破上下軌道の論理を利用して取引を行う.その優点は,論理がシンプルで明確で,適応性が強いことであり,欠点は,ストップと信号品質の欠乏である.将来,ストップを導入し,信号を最適化し,パラメータを最適化し,フィルタリング条件を増やすなど,戦略を完善することができる.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © satrusskumar

//@version=5

// Input parameters
length = input.int(21, title="EMA Length")
mult = input.float(2, title="ATR Multiplier")
atrLength = input.int(13, title="ATR Length")

// Calculate Keltner Channels
ema = ta.ema(close, length)
atr = ta.atr(atrLength)
upper_band = ema + mult * atr
lower_band = ema - mult * atr

// Plot Keltner Channels
plot(upper_band, color=color.red, title="Keltner Upper Band")
plot(ema, color=color.blue, title="Keltner EMA")
plot(lower_band, color=color.green, title="Keltner Lower Band")

// Strategy logic
var float entry_price = na
var bool in_trade = false

if (not in_trade and close < lower_band)
    strategy.entry("Long", strategy.long)
    entry_price := close
    in_trade := true

if (in_trade and open > upper_band)
    strategy.close("Long")
    in_trade := false
// Strategy settings
strategy("Keltner Channel Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)