3つのEMAクロスオーバーとストキャスティクスRSI戦略


作成日: 2023-11-15 10:47:20 最終変更日: 2023-11-15 10:47:20
コピー: 0 クリック数: 954
1
フォロー
1617
フォロワー

3つのEMAクロスオーバーとストキャスティクスRSI戦略

概要

これは,複数の指標を組み合わせたトレンド追跡戦略である. それは,トレンドの方向性を識別し,ポジションを確立するために,同時に3つの異なる周期のEMA,ストキャスティックRSI,ATRを使用する. 短周期EMAで短周期EMAを通過するときに,ポジションを多く開く. ストップは,最近ATRの値の3倍下にあり,ストップは最近ATRの値の2倍である.

原則

この戦略は,3つのEMA平均線,それぞれ8周期,14周期,および50周期のEMAを使用する.それらはそれぞれ,異なる時間帯の価格トレンドを表している.8周期EMAで14周期EMA,14周期EMAで50周期EMAを横断するときは,現在トレンドの開始段階にあることを示す.複数のポジションを確立する選択ができる.

ストキャスティックRSI指標は,RSIとストキャスティック計算方法を組み合わせて,超買い超売り現象を検出できます.ストキャスティックRSIのK線がD線を下から穿越すると,市場は超売り状態から看板状態へ移行していることを示すので,選択することができます.

ATRは,最近の波動範囲を表します. 戦略は,利益をロックし,リスクを制御するために,ATRの3倍をストップ距離として,2倍をストップ距離として使用します.

利点

  • EMA平均線を使用すると,価格データ内の部分的なノイズをフィルムして,トレンドの方向を識別できます.
  • ストキャスティックRSIは逆転の機会を見出す
  • ATRダイナミック・トラッキング・ストップ・ストップは,市場の波動の幅に応じて合理的な稼ぎ損益距離を設定できます.

リスク

  • 複数の指標の組み合わせで誤信号が発生する可能性があります.
  • 固定ストップ・ストップ・マップの倍数は,市場の変化に適応できない
  • 短期間で逆転する傾向が強い

EMA周期パラメータを調整することで指標の感度を最適化することができる。またATRのストップ・ストップ倍数を調節し,市場状況に応じて適切なパラメータを設定することができる。さらに,他の指標の補助判断を加えるのを考慮して,誤信号を避けることができる。

最適化の方向

  • EMA周期パラメータを調整し,指標の感度を最適化する
  • ATRの止損止倍数を調整する
  • 誤った信号を避けるために,他の指標を追加します.

要約する

この戦略は,トレンドの方向,オーバーバイのオーバーセール現象と波動範囲を考慮して入場時刻を識別する.EMA平均線とストキャスティックRSI指標の組み合わせを使用すると,トレンドを効果的に識別することができ,ATRダイナミックトラッキングストップはリスク管理に役立ちます.パラメータを調整して最適化することで,この戦略は,信頼できるトレンドトラッキングシステムになることができます.しかし,指標の誤信号と固定ストップの悪影響を防ぐことに注意する必要があります.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)