SMAとRSIを組み合わせた取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023年10月8日 11:40:49
タグ:

概要

この戦略は,単純な移動平均値 (SMA) と相対強度指数 (RSI) の指標に基づいています.RSIが定義されたエントリーレベルを超え,閉値がSMAを下回ると短くなります.トレンドフォローと過買い/過売り指標を組み合わせ,中期的な時間枠で逆転の機会を把握することを目的としています.

戦略の論理

  1. SMA (200期) を用いて,全体的なトレンド方向を決定する.価格がSMAを下回るときにショートカットする機会を探します.

  2. RSI (14期) を用いて過買い/過売状態を特定する.RSIが51点を超えると,売り動力が増加し,ショートに入場できる.

  3. ショートポジションを開いた後, 最低の閉店価格でストップロスを設定します. RSI が 54 以上または 32 以下を横断した場合, 閉店します.

  4. ストップ・ロスは3種類あります 価格ストップ,RSIストップ,利益ストップ

優位性

  1. トレンドフォローと過剰購入/過剰販売の指標を組み合わせることで,エントリのタイミングの正確性が向上します.

  2. トレイリングストップロスは,リアルタイム価格変動に応じて利益を保護し,固いストップロスを回避します.

  3. RSIの双方向トリガーは 利益を固定し 過剰な引き戻し損失を防ぐのに役立ちます

  4. 固定パラメータの簡単な指標を使うことで 中期取引に簡単に実装できます

リスク

  1. SMAとRSIのパラメータはすべての製品やタイムフレームに適合しない可能性があり,最適化が必要である.

  2. スリップや手数料などの取引コストは無視され 実際のPnLに影響を与えます

  3. 市場規模や市場構造などの他の要因は考慮されていないため,信頼性の低い信号が生じる.

  4. 指標に過度に頼り 価格の動きを無視すると 逆転のタイミングが失われます

  5. ストップ・ロスは比較的頑丈で 市場の大きな変化に適応できない

改善

  1. 最適な組み合わせを見つけるため,SMA期間とRSIパラメータをテストし最適化します.

  2. 低音量で誤ったブレイクを避けるために 音量指標を追加することを検討します

  3. MACD,ボリンジャー帯など他の指標とのテスト組み合わせ

  4. 機械学習アルゴリズムを追加して 信号の精度を向上させ 歴史的なデータで訓練します

  5. ストップロスを最適化して 柔軟性を高め 市場の変化に適応する

  6. 単一の取引損失額を制御するためにリスク管理を追加します.

結論

この戦略は,SMAとRSI指標の強みを統合し,いくつかの騒々しい取引機会をフィルタリングする.そのシンプルな論理は実行が簡単ですが,長期的に安定して動作するために,パラメータとルール最適化,適切なリスク管理が必要です.他の指標またはアルゴリズムと組み合わせることで,強度をさらに高めるために探求する価値もあります.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
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/
// © abdllhatn

//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)

// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")

// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)

var float trailingStop = na
var float lastLow = na

// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    trailingStop := na
    lastLow := na

if (strategy.position_size < 0)
    if (na(lastLow) or close < lastLow)
        lastLow := close
        trailingStop := close

if not na(trailingStop) and close > trailingStop
    strategy.close("Sell")

if (rsi_value >= rsi_stop)
    strategy.close("Sell")

if (rsi_value <= rsi_take_profit)
    strategy.close("Sell")

// Plot
plot(sma_value, color=color.red, linewidth=2)




もっと