トリプル EMA トレンド フォロー 戦略

作者: リン・ハーンチャオチャン開催日:2023年12月20日15時44分
タグ:

img

概要

トリプル EMA トレンドフォロー戦略は,市場のトレンドをフォローするのに非常に適した戦略です.それは十分なトレンド確認があるときに,ロングまたはショートポジションを確立するために,異なる期間の3つのEMAを取引シグナルとして使用します.

この戦略の利点は,誤った信号を軽減し,ポジションに入る前に十分なトレンド強さを確保できる.同時に,市場の変動に基づいてストップを遅らせることができる適応性のあるストップ・ロースシステムがあり,よりよいリスク管理を達成する.

戦略の論理

エントリー論理

この戦略では,7~14~21期間の EMAがエントリーシグナル指標として使用されます. 具体的な論理は,価格が3つのEMAを同時に越えるときは,ロング,価格が3つのEMAを同時に越えるときはショートです.

このデザインは,誤った信号を減らすことができ,トレンドが入る前に十分に明確であることを保証します.また,市場トレンドをタイムリーに把握するために,EMAの3つの期間は適切に設定されています.

ストップ・ロスの方法

この戦略は,ATRと最大引き下げに基づいた適応型ストップ損失システムを使用する.これはリアルタイムで価格変動を計算し,それに応じてストップ損失ラインを設定する.特に,ストップ損失バッファゾーンとしてATRの一定倍数を計算する.

上昇傾向の間,ストップ・ロスは新しい高値で上昇し,良い追いかける効果があります.価格がバッファゾーンの低点に戻ると,ストップ・ロスはポジションを閉じるように誘発されます.これは市場の状況に応じてストップ・ロスのリスクを制御することができます.

利益を得る方法

この戦略は固定パーセントの取利益方法を使用する.ポジションを開いた後,取利益ラインはエントリー価格よりも一定の割合で設定されます.価格が取利益ラインに上昇すると,ポジションは取利益のために閉鎖されます.

この固定収益率の利点は,達成された時点で退出を満足させる目標利益水準を事前に設定することを可能にする.また,価格が再び下がるリスクも回避する.収益率は必要に応じて調整することができます.

利点分析

  • 誤った信号を軽減し,ポジションを開いた後に比較的強い価格傾向を確保することができます.
  • 市場動向を迅速に把握するために EMA 期間を重ねる
  • 適応型ストップ・ロース・システムにより 変動に基づいてリスクを制御できます
  • 決まった利得率で 利益目標を満たす
  • ATRと最大引き上げに基づいたストップ損失方法は,市場の条件に基づいて最適化することができます.
  • パラメータを変更することによって戦略スタイルを調整する簡単

リスク分析

  • EMA は 市場 の 範囲 を 変化 さ せる 市場 で 頻繁に 交差 を 引き起こす こと が あり,容易 に 罠 に 陥る こと が でき ます.
  • 固定得益は,市場状況に基づいて調整できないし,より大きな利益を逃したり,損失を増やす可能性があります.
  • ストップ・トラッキング・ストップ・ロスの後,再び新高を追跡できず,価格の下落により損失が増加する可能性があります
  • 一方向的な爆発的な傾向では,固定取利益率はあまりにも保守的で,十分な利益を得ることができない可能性があります.

トレンド判断指標と組み合わせることで不安定な市場で盲目的にポジションを開くのを避けることができる.また,収益を取ることまたは利益比率の移動方法を使用して利益を取ることをより柔軟にする.一般的に,戦略の適用と協力するために手動的な判断はまだ必要です.

オプティマイゼーションの方向性

戦略は,次の側面でも最適化できます.

  1. MACD,KDなどなどのインテリタイミングを決定するためにより多くのインジケーターを使用し,不安定な市場に囚われないようにします.

  2. 利潤を取ることにより柔軟性があります. 利潤を取ることにより,

  3. ストップ・ロスのメソッドにダウン・トレイル・メカニズムを追加し,価格が再び下落すると再び低値点を追跡し,リスクを制御することができます.

  4. 異なる製品の特徴に基づいて EMA 期間パラメータを調整し,トレンド判断を最適化します.

  5. ポジションサイジングモジュールを追加し,資金の利用比に基づいて取引サイズごとに調整できます.

結論

トリプルEMAトレンドフォロー戦略は,非常に実践的なトレンドフォロー戦略です. 強いトレンド判断能力を持ち,自動的にオーダーを管理できる適応性のある取利益とストップ損失メカニズムも備えています. 最適化観点から,取利益とストップ損失システムは,リアルタイム市場状況に基づいて調整するためにさらに改善することができます. しかし,全体として,この戦略は実行しやすく制御可能なリスク選択です.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)


//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))

Take_profit= ((input (4))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)

go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)



closeLong = close > longTakeProfit or crossunder(close, vStop)



//Entry 
strategy.entry(id="long", long = true, when = go_long and window())



//Exit
strategy.close("long", when = closeLong and window())

plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)



もっと