RSI と EMA ベース トレンド フォロー 戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-25 12:19:32
タグ:

img

概要

この戦略は,トレンドフォローに基づいた定量的な取引戦略を実施するために,相対強度指数 (RSI) と指数移動平均 (EMA) の技術指標を組み合わせます.これは主にトレンド市場に適しており,トレンドから利益を得るために価格逆転が特定されたときに参入します.

戦略の論理

指標の選択

  • EMAは,現在のトレンド方向を決定する.この戦略は,20日,50日,200日EMAを使用する.価格がこれらのEMAを超えると,上昇傾向が特定される.
  • RSI は,過買い/過売れレベルを特定する.標準的な14期間のRSIで,過買い値が70で,過売れ値が30です.

入国規則

ロングエントリー信号:

  • RSI は 30 値以下で,価格が反転する可能性のある過売り状態を示しています.
  • 20日,50日,または200日間の EMA を上回る価格で,上昇傾向の市場を示します.

この2つの条件が満たされた場合,ロングポジションが入力されます.

リスク管理

各取引の最大損失は,総口座価値の 3%に制限されています.ストップ損失の配置は,市場の特徴を考慮する必要があります.

ポジションのサイズ: 最大損失 / (エントリー価格 - ストップ損失価格) = ポジションサイズ

取引リスクを効果的に制御します

退去規則

主要な出口信号:

  • RSIは70値以上上昇し,価格は過買い状況により下がる可能性があります.
  • 価格が20日,50日,または200日間のEMAを下回り,トレンド逆転

両方の信号が表示されたら ポジションは終了します

利点分析

この戦略は,トレンドフォローと平均逆転の利点を組み合わせている.EMAは全体的なトレンドを決定し,その後,潜在的な逆転ゾーンでエントリー信号が発生し,安定性のためにトレンドと逆転の両方から利益を得ることができる.RSIパラメータは,異なる市場のために最適化され,戦略を堅牢にすることができる.

トレーディングリスクレベルを直接制御することで 取引毎の固定最大損失は資本を保護します

リスク分析

この戦略は,明らかなトレンド市場ではうまく機能する.複雑で不安定な環境では,トレンドのためにEMAを使用することは制限がある可能性があります.また,RSIには実際の価格アクションから確認を必要とするいくつかの遅延効果があります.

ストップ損失配置はPnLにとって極めて重要であり,異なる市場に対して慎重にテストする必要があります. 幅が大きすぎると,単一の損失が拡大し,幅が狭すぎると,ノイズは望ましくないストップを引き起こす可能性があります. 継続的な最適化のためにライブテストが必要です.

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

より多くの市場に対応するために異なるRSIパラメータをテストする.最適な取引サイズ比を見つける.より強力なエントリー/エグジットシステムを構築するために他の技術指標を追加する.これらはすべて探求に値するオプションです.

結論

この戦略は,トレンドフォローと平均逆転戦略の強みを統合している.より大きなトレンドを特定しながら,潜在的な逆転でエントリーが行われる.RSI最適化はより多くの市場体制に適応させる.固定取引リスクレベルは,中長期間にわたって運用を安定させる.さまざまな市場とスタイルを使用して調整と強度テストを通じてさらなる改善が可能である.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stratégie RSI et EMA avec Gestion du Risque", overlay=true)

// Paramètres de la stratégie
rsiLength = input(14, "Longueur du RSI")
rsiOverbought = input(70, "Niveau de Surachat RSI")
rsiOversold = input(30, "Niveau de Survente RSI")

// Calcul du RSI
rsiValue = rsi(close, rsiLength)

// Paramètres des EMA
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// Paramètre du risque par trade
riskPerTrade = input(0.03, "Risque par Trade (3%)")

// Distance du stop-loss en pips (à ajuster selon votre stratégie)
stopLossPips = input(1, "Distance du Stop-Loss en pips")

// Calcul de la taille de position et du stop-loss
calculatePositionSize(entryPrice, stopLossPips) =>
    stopLossPrice = entryPrice - stopLossPips * syminfo.mintick
    riskPerTradeValue = strategy.equity * riskPerTrade
    positionSize = riskPerTradeValue / (entryPrice - stopLossPrice)
    positionSize

// Conditions d'entrée
longCondition = (rsiValue < rsiOversold) and (close > ema20 or close > ema50 or close > ema200)
if longCondition
    strategy.entry("Long", strategy.long, qty=1)

// Conditions de sortie
exitCondition = (rsiValue > rsiOverbought) or (close < ema20 or close < ema50 or close < ema200)
if exitCondition
    strategy.close("Long")

// Affichage des EMA et RSI sur le graphique
plot(ema20, color=color.red)
plot(ema50, color=color.green)
plot(ema200, color=color.blue)
hline(rsiOverbought, "Niveau de Surachat RSI", color=color.red)
hline(rsiOversold, "Niveau de Survente RSI", color=color.blue)
plot(rsiValue, "RSI", color=color.purple)

もっと