EMA指標に基づく期間横断取引戦略


作成日: 2024-01-29 15:56:56 最終変更日: 2024-01-29 15:56:56
コピー: 0 クリック数: 608
1
フォロー
1617
フォロワー

EMA指標に基づく期間横断取引戦略

概要

この戦略は,EMA指数に基づくクロスサイクルの取引戦略である.この戦略は,2つの異なる周期のEMAを買入シグナルとして使用し,短周期EMAで長周期EMAを横切るときに多行し,短周期EMAの下で長周期EMAを横切るときに空行し,トレンドフォロー戦略に属している.この戦略は,リスクを管理するために,同時にもストップ・ロストとストップ・ポジションを設定している.

戦略原則

この戦略は,EMA指標の金叉死叉を取引信号として使用する.具体的には,短期EMAと長期EMAをそれぞれ計算し,短期EMAの上から長期EMAを突破すると買入信号が作られ,短期EMA下から長期EMAを突破すると売り信号が作られ,空売り信号が作られる.こうしてEMAの移動傾向によって買入方向が決定される.

ポジションに入ると,戦略は同時にストップ・ロスの値とストップ・ロスの値を設定する.ストップ・ロスは入場価格の一定パーセントをストップ・ラインとして,価格がストップ・ロスのラインに触れたら平仓ストップする.ストップ・ロスは入場価格の一定パーセントをストップ・ラインとして,価格がストップ・ラインに触れたら平仓ストップする.

この戦略はまた,多額または空白のみの選択,および日内取引または持仓取引の選択を可能にします. 日内取引については,米国株の終了前に平仓を強制します.

優位分析

この戦略の利点は以下の通りです.

  1. EMA指数を使用して曲線をフィルタリングし,高周波波動に誤導されないようにし,中長線トレンドを順番に捉えることができます.

  2. 短期EMAと長期EMAの交差を取引シグナルとして採用し,頻繁に取引を避ける.

  3. ストップ・ストップを設定して,各注文のリスク・リターン比率を制御し,資金管理に役立ちます.

  4. 複数のタイプのトレーダーに適した,多額の取引や空白の取引,日中取引,またはポジション取引の選択が可能です.

  5. 株式,外貨,デジタル通貨など,様々な取引形態に対応しています.

リスク分析

この戦略にはいくつかの潜在的リスクがあります.

  1. EMA指数は遅滞しており,短期トレンド転換点を逃している可能性がある.

  2. 長期・短期EMAの誤った選択は,取引シグナルを混乱させる可能性があります.

  3. 長期にわたる保有は,より大きな市場の揺れに耐えかねない.

  4. 機械的に止損を止めることは,早退や利益の減少につながる.

対応するリスク管理策は

  1. EMAパラメータを最適化して,最適な周期組み合わせを見つけます.

  2. 他の指標を追加して判断する.

  3. 動的に調整する止損停止位置.

  4. 人工干渉の異常な状況について

最適化の方向

この戦略は以下の方向から最適化できます.

  1. EMAパラメータを最適化して,異なる品種に適した長短周期の組み合わせを見つけます.

  2. MACD,KDなどの他の指標判断を追加し,多指標共鳴を実現する.

  3. 機械学習モデルのトレーニングを増加させ,動的停止ダメージを発生させる.

  4. より高度なRISK指標にアクセスして特性を設計する.

  5. 調整可能な取引要素を追加し,パラメータを自主的に最適化します.

要約する

この戦略は全体的に優れたトレンド追跡戦略のテンプレートであり,その核心的な優位性は,EMA指標のフィルターノイズを使用して安定した利益を達成し,完全なリスク/利益管理を備えていることです.この戦略は,継続的な最適化により,市場全体に共通する量化戦略になり,トレーダーが学び,実践する価値があります.

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

//@version=5
strategy("EMA Crossover Strategy by Vikrant Singh", overlay=true)


// Input for EMA Lengths
var bool runningPOS = false
var float stopLossLevel = na
var float targetLevel = na
shortLength = input(11, title="Short EMA Length")
longLength = input(21, title="Long EMA Length")

// Input for Stop-Loss and Target
stopLossPct = input(1, title="Stop-Loss (%)")
targetPct = input(3, title="Target (%)")
longOnly = input(true, title="Long Only")
intraDay = input(true, title="intraday?")


// Calculate EMAs
emaShort = ta.ema(close, shortLength)
emaLong = ta.ema(close, longLength)

// Calculate crossover conditions
crossoverCondition = ta.crossover(emaShort, emaLong)
crossunderCondition = ta.crossunder(emaShort, emaLong)

// Entry condition (long position just before crossover)
if crossoverCondition and not runningPOS and longOnly and (hour <= 15)
    strategy.entry("Long", strategy.long)
    runningPOS := true
    stopLossLevel := close * (1 - stopLossPct / 100)
    targetLevel := close * (1 + targetPct / 100)

//Entry condition (short position just before crossover)
if crossunderCondition and not runningPOS and not longOnly and (hour <= 15)
    strategy.entry("Short", strategy.short)
    runningPOS := true
    stopLossLevel := close * (1 + stopLossPct / 100)
    targetLevel := close * (1 - targetPct / 100)

// Exit conditions (square off on reverse crossover)
//Exit long
if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS
    strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel)
    runningPOS := false

//Exit short
if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS
    strategy.close("Short", comment = "Exit Short")
    runningPOS := false

if intraDay and runningPOS
    if (hour >= 15)
        strategy.close_all(comment = "Intraday square off")
        //strategy.close("Long",comment = "intraday square off")
        runningPOS := false


// Plot EMAs
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")