逆転戦略をフォローするMACDとRSIベースのトレンド

作者: リン・ハーンチャオチャン, 日付: 2023-12-18 17:53:38
タグ:

img

概要

この戦略は,MACD,EMAおよびRSIインジケーターを組み合わせ,トレンドフォローおよびリバース取引を実装する.MACDがシグナルラインを通って上昇し,閉じる価格がEMAを超えると購入信号を生成し,MACDがシグナルラインを下回り,閉じる価格がEMAを下回ると販売信号を生成し,トレンドを把握する.一方,RSIが過剰購入または過剰販売レベルに達すると逆転取引を行う.

戦略の論理

  1. MACD差とEMAを計算する.

    fastMA = ema(close, fast)
    slowMA = ema(close, slow) 
    macd = fastMA - slowMA
    signal = sma(macd, 9)
    ema = ema(close, input(200))
    
  2. MACD diff (macd - シグナル) は0を超え,閉じる価格はEMAを超えています.

    delta = macd - signal
    buy_entry= close>ema and delta > 0 
    
  3. 売り信号を生成します. MACDディフは0を下回り,閉じる価格はEMAを下回ります.

    sell_entry = close<ema and delta<0
    
  4. RSIが過剰購入または過剰販売レベルに達したときの取引逆転.

    if (rsi > 70 or rsi < 30)
        reversal := true
    

利点分析

  1. トレンドフォローと逆転トレードを組み合わせて,トレンドと逆転の両方から利益を得ます.
  2. MACD を使ってトレンド方向を判断し,誤ったブレイクを避ける.
  3. EMAで騒音をフィルターする
  4. 逆転取引のRSIで収益性を向上させる

リスク分析

  1. 逆転取引は,強いトレンド市場では損失を伴う可能性があります.
  2. パラメータの調節が不適切であれば,取引頻度とスライプコストが増加する可能性があります.
  3. 逆転シグナルが遅れて 最良のエントリー価格が欠けている可能性があります

解決策:

  1. パラメータを最適化して 最高の組み合わせを見つけます
  2. 逆転RSIの値を正しく調整する
  3. ストップ損失をコントロール損失に追加することを検討します

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

  1. EMAの長さをテストする
  2. MACD パラメータを最適化
  3. 異なるRSI逆転値をテストする.
  4. 他の指標と組み合わせることを検討してください

概要

この戦略は,MACD,EMAおよびRSIを組み合わせて,トレンドフォローと逆転取引を有機的に実施する.MACDはトレンド方向を判断し,EMAはノイズをフィルターし,RSIは逆転点を捕捉する.このようなマルチインジケーターの組み合わせは,市場の動きをより良く決定し,誤った信号を削減しながら収益性を向上させることができます.パラメータ最適化とストップ損失管理は,不必要な損失を減らすためにさらに改善することができます.全体的に,これは安定した利益の可能性のある堅牢な戦略フレームワークです.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
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/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false



もっと