SMA RSI ダブルフィルター 短期取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023年8月10日 12:14:36
タグ:

概要

この戦略は,Simple Moving Average (SMA) とRelative Strength Index (RSI) 指標に基づいています.RSIがエントリーレベルを超え,閉じる価格がSMAを下回るとショートになります.ストップ損失または収益シグナルが表示されるとポジションを閉じる.ダブルフィルターは非効率な取引を避けるのに役立ちます.

原則

戦略は主に2つの指標に基づいて市場を評価します.

  1. SMA:過去200日間の閉店価格の単純な移動平均値に基づいて計算され,中長期間の傾向を表します.

  2. RSI:過去14日間の閉店価格の相対的な強度に基づいて計算され,短期間の過買い/過売りレベルを表します.

RSIが51を超えてオーバー買いゾーンに突入し,SMA線を超えると,短期と中長期のトレンドが異なることを示し,ショートポジションを開く.

その後,ストップ・ロストとテイク・プロフィート・ラインが設定されます.RSIがテイク・プロフィートの32を下回り,またはRSIが54を超えたとき,またはストップ・ロストのストップ・ロストがヒットしたとき,ポジションは閉鎖されます.

優位性

  1. インディケーターのダブルフィルターはエントリーシグナルの精度を高めます.RSIは短期間の過買いレベルを決定し,SMAは中長期間の下落シグナルを決定します.両者を組み合わせることで,シグナルがより信頼性があります.

  2. 価格の動きに応じて利益を固定し 利益を返さないようにします

  3. 論理は単純で直線的で 分かりやすく 変更も容易です

リスク

  1. 取引量や変動などの要因は考慮されません.

  2. RSIのパラメータは固定されており,すべての製品やタイムフレームに適合しない可能性があります.

  3. 取引コストは,スリップや手数料などには含まれません.

  4. 戦略はとてもシンプルで 拡大する余地も限られています

改善 の 分野

  1. RSIとSMAのパラメータをテストして最適化して 最適な組み合わせを見つけます

  2. トレーリングストップや百分比ベースのストップなど

  3. トレンドに反する取引を避けるためにMACDのようなトレンドフィルター指標を追加します.

  4. 低音量で誤ったブレイクをフィルタリングするために 音量指標を考慮してください

概要

この戦略は明確な論理といくつかの実用的な価値を持っています. しかし,そのパラメータは固定され,市場の変化に適応しません. 改善できるいくつかの詳細もあります. 全体的に,それは初心者がダブルインジケーターフィルタリング戦略を学ぶための例として役立つことができますが,実際の取引のためにさらなるテストと強化が必要です.


/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 3h
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/
// © 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)




もっと