SMAとRSIに基づく短期デュアルフィルタリング戦略


作成日: 2023-10-08 12:14:36 最終変更日: 2023-10-08 12:14:36
コピー: 0 クリック数: 659
1
フォロー
1617
フォロワー

概要

この戦略は,シンプル移動平均 ((SMA) と相対的に強い指数 ((RSI) の2つの指標に基づいて設計されています. それは,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. 取引量指標を導入し,偽の破綻を低額でフィルターする.

要約する

この戦略の全体的な考え方は明確で,ある程度の実用的な価値があります。しかし,そのパラメータは,市場の変化を考慮せずに,より固定的に設定されています。さらに,最適化できるいくつかの詳細もあります。総合的に言えば,この戦略は,初心者理解の二重指標フィルタリング戦略の1つの例として使用できます.しかし,実体ではさらにテストし,改良する必要があります。

ストラテジーソースコード
/*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)