역전 전략에 따른 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 디프 (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



더 많은