モメンタム指標支援移動平均反転取引戦略


作成日: 2024-01-22 17:34:05 最終変更日: 2024-01-22 17:34:05
コピー: 0 クリック数: 689
1
フォロー
1617
フォロワー

モメンタム指標支援移動平均反転取引戦略

概要

この戦略は,動態指標と均線の組み合わせを使用し,市場トレンドと逆転点を識別し,トレンドが転じるときに取引を行う.これはトレンド追跡と逆転取引戦略に属します. 主に供給需要区,EMA均線,各種のHH,LL,LH,HL多空領域標識,ATR止損などのモジュールで構成されています.

戦略原則

1. 需要と供給の領域を特定する

K線の高低点範囲による需要関係区分,赤色は供給過剰の供給領域,緑色は供給以上の需要領域である.

2. EMAのトレンド判断

200の長さのEMA平均線を計算し,価格とEMAの大きさの関係によって多空トレンドを判断し,EMAより高い価格は上昇トレンドとみなされ,EMAより低い価格は下降トレンドとみなされる.

3. 多空領域のマーク

K線上の2つの最近の高低点から判断すると,回転地域は以下の通りです.

  • HH区 (Higher High区) 連続2つのK線高点イノベーション高
  • LL区 ((Lower Low区) 連続2つのK線低点 イノベーション低
  • LH区 ((Lower High区) 最近1根K線高点創新高,次根K線高点反転,属落下高点
  • HL領域 ((Higher Low領域) 最近の1根K線低点創新低,次根K線低点反転,属回復低点

4. ATR ストップダメージ追跡

14サイクルATRの値を計算し,係数2をこの戦略のストップ・ローズとする.

5. 入場と止損退場

価格を監視する前日のKlineの高低点との関係.価格が前日の高点より高いときは,多頭シグナルを生成する.価格が前日の低点より低いときは,空頭シグナルを生成する.入場シグナルが3根K線まで遅延し,衝撃波動による誤信号を回避する.ATRのストップトラッキング方式を採用し,価格がストップラインを超えた場合,アクティブストップは現在のシグナルを退出する.

優位分析

  1. 多様な指標を用いて,トレンドと重要な逆転地域を特定し,利益の確率を高めます.
  2. ATRの止損方法は,単一の損失のリスクを効果的に制御します.
  3. 遅延入場は有効な信号を決定し,誤った取引の確率を減らす.

リスク分析

  1. 基本的な情報と組み合わせた技術的な指標にのみ依存し,重要な情報を逃すことで取引が失敗する可能性があります.
  2. ATRのストップダメージは,大規模な状況で突破され,損失を招く可能性があります.
  3. EMAの逆転は,変動傾向の中で頻繁に発生し,過剰取引を引き起こす可能性があります.

リスク対策:

  1. 重要な経済データと政策判断を組み合わせて 行動する.
  2. ATRの止損係数を適切に拡張して,十分なスペースを確保します.
  3. ATRの止損の周期パラメータを調整し,振動時に過度に敏感にならないようにする.

最適化の方向

  1. MACD,RSIなどの他の技術指標と組み合わせて入場時間を判断します.
  2. 異なる周期パラメータと係数パラメータの組み合わせをテストし,最適なパラメータを探します.
  3. 信号が遮断されないように,再突破フィルターを追加することも考えられます.
  4. 機械学習などの方法を用いた動的最適化パラメータ.

要約する

この戦略は,需要と供給の分析,トレンドの判断,逆転の認識と損失管理のモジュールを統合して,市場が重要な領域で転向する機会を効果的に識別することができる.これは,効果的なトレンド追跡と逆転の取引戦略の1つである.同時に,長期にわたる安定した利益を得るために,人工経験の判断を伴う継続的なテストと最適化も必要である.

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

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)