短期移動平均が中期および長期移動平均を横切るときのブレイクアウト取引戦略


作成日: 2023-11-24 13:33:21 最終変更日: 2023-11-24 13:33:21
コピー: 0 クリック数: 853
1
フォロー
1617
フォロワー

短期移動平均が中期および長期移動平均を横切るときのブレイクアウト取引戦略

この戦略は,短期,中期,長期の3つの異なる周期の指標移動平均 ((EMA) をベースに取引信号を生成する. その中,短期EMA周期は5日,中期EMA周期は8日,長期EMA周期は13日である. 短期EMAが中期EMAと長期EMAを突破するとき,多めに行い,短期EMAが中期EMAと長期EMAを突破するとき,空いて行きます.

戦略原則

この戦略は,異なる周期のEMAを計算して市場動向を判断する.短期EMAは,最近の数日の平均価格を反映し,中期EMAは,より長い時間の平均価格を反映する.短期EMA上の中期EMAは,価格が向上して突破し始め,それゆえ多めにする.短期EMAの下の中期EMAは,価格が下に向かって突破し始め,それゆえ空っぽにする.

具体的には,この戦略は同時に5日,8日および13日の3つのEMAを計算する. 5日EMA上では8日および13日EMAを履いたときに多做信号が生成され, 5日EMA下では8日および13日EMAを履いたときに空き信号が生成される. 余った後に,5日EMAが再び13日EMAを履いた場合,平仓する.空き後に,5日EMAが再び13日EMAを履いた場合,平仓する.

戦略的優位性

  1. 多周期EMAでトレンドを判断し,単一のEMA周期が短すぎるとか長すぎると,重要なトレンド転換点を逃さないようにする.
  2. 中・短・長3周期EMAと組み合わせると,取引シグナルがより信頼性が高く正確になる.
  3. EMAによって価格を平坦化することで,市場騒音の一部をフィルタリングし,無駄なポジション開設を防ぐことができます.

戦略リスク

  1. 3つのEMAは,遅れたトレンド指標であり,実際の価格突破の前に時間差が一定であり,取引信号の遅延を引き起こす可能性があります.
  2. EMAは真のトレンドと短期的な調整を区別できず,誤ったシグナルを生む可能性があります.
  3. 固定のEMA周期は,異なる周期下における市場の変化特性に適応できない

画像を編集する方法は以下の通りです

  1. MACDなどの他の指標と組み合わせて,真のトレンドを判断し,誤った信号を避ける
  2. EMA周期のパラメータは,品種や市場状況に応じて柔軟に調整できます.
  3. 利潤を固定し,リスクを制御するために移動停止を追加します.

要約する

この戦略は,短中長3周期EMAを計算してその交差状況を比較して市場トレンドの転換を判断する.これは典型的な突破システムである.その優点は,取引信号が単純で明確で操作が容易である.その欠点は,EMA指標自体が遅滞しており,真のトレンドと短期間の調整を区別することができないことである.将来的には,他の技術指標による補助的な判断を考慮することができるか,または自適性パラメータ調整と組み合わせてこの戦略を最適化することができる.

ストラテジーソースコード
/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())