パラボリック指標と移動平均に基づくロングとショートのトレンド判断戦略


作成日: 2024-03-27 17:59:11 最終変更日: 2024-03-27 17:59:11
コピー: 0 クリック数: 618
1
フォロー
1617
フォロワー

パラボリック指標と移動平均に基づくロングとショートのトレンド判断戦略

概要

EPTS戦略は,パラボリックSARと2つの異なる周期的な移動平均 (EMA) をベースにしたトレンド追跡戦略である.この戦略は,パラボリックSARを使用して,現在の市場のトレンドの方向を判断し,同時に,2つの移動平均の相対的な位置関係を組み合わせて,ポジションを開くシグナルを生成する.戦略の主な考えは”,トレンドフォロー”である.これは,上昇傾向で多めに,下降傾向で空いて,安定した収益を期待するものである.

戦略原則

  1. パラボリック SARは,現在の市場トレンドの方向を判断するために使用される.パラボリックラインがK線上にあるとき,市場は下落傾向にあり,パラボリックラインがK線下にあるとき,市場は上昇傾向にある.

  2. 2つの異なる周期の指数移動平均 ((EMA) は,トレンドを確認し,ポジション開設シグナルを生成するために使用される.この戦略は5日EMAと20日EMAを使用する. 5日EMAが20日EMA上にあるときは,市場が上昇傾向にあると考えられる.逆に,市場は下降傾向にあると考えられる.

  3. ポジション開設条件:パラボアとEMAが上昇傾向を示すとき,多値シグナルを生成する.パラボアとEMAが下降傾向を示すとき,空値シグナルを生成する.

  4. 平仓条件:パラパララインがK線を突破すると,現在のポジションを平らにして,次の開仓信号を待たせます.

  5. ストップ:ポジションを開くとき,ストップ価格を現在のパラパララインの位置に設定します.パラパララインの移動とともに,ストップの位置を動的に調整して,移動ストップを実現します.

パラレードライン指数とEMAの組み合わせを使用することにより,EPTS戦略は市場動向をより良く捉え,トレンドが逆転するときに適切なタイミングでポジションを平らげ,リスクをコントロールすることができます.同時に,ダイナミックストップの設定は,戦略の撤回リスクをさらに低減します.

優位分析

  1. トレンド追跡:EPTS戦略は,トレンドフォローの思想に基づいています.

  2. ダイナミックストップ:戦略は,パラパララインをダイナミックストップとして使用し,トレンドの発展に伴い,ストップの位置を常に調整し,リスクを効果的に制御する.

  3. 二重確認:パラパラ線とEMAの二重確認により,開庫信号の信頼性が向上し,偽信号が減少する.

  4. シンプルで使いやすい: 策略の論理が明確で,パラメータの設定がシンプルで,理解し易く実行できる.

リスク分析

  1. 振動市場:振動市場では,トレンドがはっきりしないため,偽のシグナルが多く発生し,取引が頻繁になり,大きな撤退が起こる可能性があります.

  2. トレンド反転:市場のトレンドが突然反転したとき,戦略は平仓を延期し,一定の損失を負う可能性があります.

  3. パラメータ設定: 策略のパフォーマンスはパラメータ設定によって影響され,異なるパラメータは異なる結果をもたらす可能性があります.

最適化の方向

  1. より多くの指標を導入:既存のパラボラ線とEMAに基づいて,MACD,ADXなどの他のトレンドクラスの指標を導入し,トレンド判断の正確性を向上させる.

  2. 入場条件の最適化:価格とEMAの距離,取引量などの要因を考慮してポジション開設条件の最適化,ポジション開設シグナルの質の向上.

  3. ダイナミックパラメータ最適化:市場の状況の変化に応じて,パラメータを動的に調整する.例えば,パラメータのステップ長さ,EMAの周期など,異なる市場環境に適応する.

  4. ポジション管理に加入:市場トレンドの強さと口座のリスクに応じてポジションサイズを動的に調整し,リスクをコントロールしながら収益を上げる.

要約する

EPTS戦略は,パラパラ線指標と移動平均に基づいてトレンド追跡戦略であり,市場の主要トレンドを捕捉し,リスクを制御するために適時平仓することで安定した利益を得ます. この戦略の論理は明確で,実行しやすい. 傾向が顕著な市場環境に適しています. しかし,不安定な市場では,戦略は,戦略の適応性と安定性を高めるために,他の指標と最適化方法と組み合わせることで,大きな撤退リスクに直面する可能性があります.

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

//@version=5
strategy("febin2024", overlay=true)

// Parabolic SAR Parameters
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)

// EMA Parameters
ema20_length = input(20, title="EMA 20 Length")
ema5_length = input(5, title="EMA 5 Length")

// Calculate EMAs
ema20 = ta.ema(close, ema20_length)
ema5 = ta.ema(close, ema5_length)

// Parabolic SAR Logic
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na

if bar_index > 0
    firstTrendBar = false
    SAR := nextBarSAR
    if bar_index == 1
        float prevSAR = na
        float prevEP = na
        lowPrev = low[1]
        highPrev = high[1]
        closeCur = close
        closePrev = close[1]
        if closeCur > closePrev
            uptrend := true
            EP := high
            prevSAR := lowPrev
            prevEP := high
        else
            uptrend := false
            EP := low
            prevSAR := highPrev
            prevEP := low
        firstTrendBar := true
        SAR := prevSAR + start * (prevEP - prevSAR)
    if uptrend
        if SAR > low
            firstTrendBar := true
            uptrend := false
            SAR := math.max(EP, high)
            EP := low
            AF := start
    else
        if SAR < high
            firstTrendBar := true
            uptrend := true
            SAR := math.min(EP, low)
            EP := high
            AF := start
    if not firstTrendBar
        if uptrend
            if high > EP
                EP := high
                AF := math.min(AF + increment, maximum)
        else
            if low < EP
                EP := low
                AF := math.min(AF + increment, maximum)
    if uptrend
        SAR := math.min(SAR, low[1])
        if bar_index > 1
            SAR := math.min(SAR, low[2])
    else
        SAR := math.max(SAR, high[1])
        if bar_index > 1
            SAR := math.max(SAR, high[2])
    nextBarSAR := SAR + AF * (EP - SAR)
    if barstate.isconfirmed
        if uptrend
            strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
            strategy.cancel("ParLE")
        else
            strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
            strategy.cancel("ParSE")

// Plot Parabolic SAR
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)

// Plot EMAs
plot(ema20, color=color.blue, linewidth=2, title="EMA 20")
plot(ema5, color=color.red, linewidth=2, title="EMA 5")

// Equity Plot
plot(strategy.equity, title="Equity", color=color.green, linewidth=2)