トレンドフィルタリングと異常終了を伴う平滑移動平均ストップロスおよびテイクプロフィット戦略

SMA RSI TR MA TP SL
作成日: 2024-06-03 16:54:04 最終変更日: 2024-06-03 16:54:04
コピー: 7 クリック数: 616
1
フォロー
1617
フォロワー

トレンドフィルタリングと異常終了を伴う平滑移動平均ストップロスおよびテイクプロフィット戦略

概要

この戦略は,平らな移動平均 ((SMA),相対的に強い指数 ((RSI),実際の範囲 ((TR) と取引量の移動平均 ((Volume MA) のような指標を使用して,トレンドフィルター,取引量,および変動率の条件を組み合わせて,特定の条件を満たすときに取引します. この戦略の主要な考え方は,価格がSMA200より低く,下落傾向,低取引量,低変動率にある場合に購入し,止損と停止を設定します.

戦略原則

  1. SMA,RSI,取引量MA,TRMAなどの指標を計算する
  2. 市場が上昇するか下落するか判断する
  3. 現在の取引量と波動率が低いかどうかを判断する
  4. 価格がSMA200を下回り,低取引量と低波動性の条件を満たしているときに買い
  5. 購入価格の95%にストップを設定し,購入価格の150%にストップを設定します.
  6. RSIが70を超えたり,既定のストップ・ローズに達したときに,取引を終了します.
  7. トレンドが変化し,価格がSMAを突破すると,強制平仓

優位分析

  1. この戦略は,複数の技術指標を組み合わせて,市場状況をより全面的に分析します.
  2. トレンドフィルターと取引量,波動性条件により,不利な市場環境で取引を避ける
  3. 明確なストップ・ロスト・ポジションを設定して,リスクを効果的にコントロールできます.
  4. 非常退出メカニズムは,特定の状況において,さらなる損失を防ぐために,適時的にポジションをクリアすることができます.

リスク分析

  1. このポリシーは,複数のパラメータの設定に依存し,パラメータの選択は,ポリシーのパフォーマンスに影響を及ぼす可能性があります.
  2. 価格が急激に反転し,購入条件が引き出されると,損失を伴う場合もあります.
  3. この戦略は,重大事件の影響を受ける可能性のある基本的な要因を考慮していない.

最適化の方向

  1. MACD,ブリン帯などの技術指標を導入することで,入場と出場の精度を向上させることができます.
  2. モバイルストップまたはダイナミックストップを使用するなど,ストップストップの位置を最適化できる設定
  3. 戦略のパラメータは,異なる市場状況に応じて動的に調整できます.
  4. ポジション管理,資金管理などのリスク管理モジュールを追加できます.

要約する

この戦略は,複数の技術指標を総合的に使用し,トレンドフィルターと取引量,波動率条件を組み合わせて,特定の状況で取引します.同時に,明確な止損停止と異常退出機構を設定することで,リスクを効果的に制御できます.しかし,この戦略には,パラメータ選択,市場異常などの要因が戦略のパフォーマンスに影響を与える可能性があるため,一定の制限があります.将来,より多くの指標を導入し,パラメータ設定を最適化し,リスク管理などの方法を追加することで,この戦略をさらに改善することができます.

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

//@version=5
strategy("Strategia Stop Loss & Take Profit z Filtrem Trendu i Wyjątkiem", shorttitle="Smooth MA SL & TP with Exception", overlay=true)

// Parametry
tp_multiplier = input.float(1.5, title="Mnożnik Take Profit")
sl_percent = input.float(5, title="Procent Stop Loss")
wait_bars = input.int(3, title="Liczba Oczekiwanych Świec")
sma_period = input.int(200, title="Okres SMA")
rsi_period = input.int(14, title="Okres RSI")
vol_ma_period = input.int(20, title="Okres Średniej Wolumenu")
tr_ma_period = input.int(20, title="Okres Średniej Rzeczywistego Zakresu")

// Obliczenie Gładkiej Średniej Kroczącej
sma = ta.sma(close, sma_period)

// Obliczenie RSI
rsi = ta.rsi(close, rsi_period)

// Filtr Trendu
uptrend = close > sma
downtrend = close < sma

// Warunek konsolidacji: Niski wolumen i niska zmienność
niski_wolumen = volume < ta.sma(volume, vol_ma_period)
niska_zmienosc = ta.tr(true) < ta.sma(ta.tr(true), tr_ma_period)

// Warunek Wejścia (Long): Cena poniżej SMA 200 i filtr trendu w strefie czerwonej
warunek_wejscia = close < sma and niski_wolumen and niska_zmienosc and not uptrend

// Warunek Wyjścia ze strategii
warunek_wyjscia = downtrend and close > sma and ta.crossover(close, sma)

// Ustalanie Stop Loss i Take Profit
var float stop_loss = na
var float take_profit = na

var int indeks_wejscia = na

if (warunek_wejscia)
    stop_loss := close * (1 - sl_percent / 100)
    take_profit := close * (1 + tp_multiplier)
    indeks_wejscia := bar_index

// Handel
if (warunek_wejscia)
    strategy.entry("Long", strategy.long)

// Warunek Wyjścia: RSI w strefie wykupienia lub Stop Loss/Take Profit
if (strategy.opentrades != 0)
    if (rsi > 70)
        strategy.exit("Take Profit/Stop Loss", "Long", limit=take_profit)
    else if (bar_index - indeks_wejscia == wait_bars)
        strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss, limit=take_profit)

// Wyjątek: Warunek Wyjścia z Longów na podstawie zmiany trendu
if (warunek_wyjscia)
    strategy.close("Long")

// Rysowanie RSI
rsi_plot = plot(rsi, title="RSI", color=color.blue)

// Rysowanie Gładkiej Średniej Kroczącej
sma_plot = plot(sma, color=color.gray, title="Smooth MA", linewidth=2)

// Rysowanie Filtru Trendu
fill(sma_plot, rsi_plot, color=downtrend ? color.new(color.red, 90) : na)