퀀트 비트코인 거래 전략 MACD, RSI 및 FIB를 결합

저자:차오장, 날짜: 2023-12-26 17:08:03
태그:

img

전반적인 설명

이 전략은 기술 지표 MACD, 상대 강도 지표 RSI 및 골든 비율에 기반한 피보나치 리트레이싱 / 확장 이론을 결합하여 비트코인과 다른 암호화폐에 대한 양적 거래를 실현합니다.

전략 원칙

  1. 거래 신호에 대한 MACD 지표
  • MACD 빠른 라인과 느린 라인의 EMA 기간을 15 및 30로 설정합니다.
  • 상향을 가로질러 구매 신호와 아래를 가로질러 판매 신호
  1. 거짓 신호 를 필터링 하는 RSI
  • RSI 매개 변수를 50 시기로 설정합니다.
  • RSI는 MACD가 주는 일부 잘못된 신호를 필터링하는 데 도움이 됩니다.
  1. 피보나치 이론의 지원/저항
  • 38개의 촛불에서 최근 최고/최저 가격을 조합합니다.
  • 0.5 피보나키 리트레이스/확장 수준을 계산합니다.
  • 지원 및 저항으로 사용할 수 있습니다.
  1. MA 및 RSI 판단 과잉 판매/대량 구매
  • 50주기 MA 판사 과반 판매/ 과반 구매 상태
  • RSI는 또한 판단에 도움이 됩니다.
  1. 역 개방 메커니즘
  • 사용자들의 리버스 오더를 열 수 있는 옵션을 제공
  • 사용자 선택에 따라 긴 / 짧은 논리를 유연하게 조정

이점 분석

가장 큰 장점은 수동 개입 없이 24시간 7시간 운영이 가능하다는 것입니다. 또한 여러 지표의 조합은 특히 황소 시장에서 탁월한 성과로 승률을 높여줍니다. 주요 장점은 다음과 같습니다.

  1. 수동 개입 없이 완전 자동화 된 24×7 양 거래
  2. MACD의 정확한 거래 신호
  3. RSI는 일부 잘못된 신호를 필터링합니다.
  4. 피보나치 이론은 더 많은 참조를 추가합니다
  5. 과반 판매/대량 구매 상태 판단
  6. 리버스 오픈을 통해 전략을 유연하게 조정합니다.

위험 분석

또한 가격의 큰 역전으로 인해 스톱 손실이 발생하기 어렵다는 몇 가지 위험이 있습니다. 또한 장기 보유 기간이 위험을 유발합니다. 주요 위험은 다음과 같습니다.

  1. 큰 역전으로부터 보호하기 위해 너무 단단한 손실을 중지
  2. 장기 보유 기간의 체계적 위험

이에 대한 해결책은 다음과 같습니다.

  1. 느슨한 중지 손실 거리를 설정
  2. 너무 긴 위험에 대비하여 보유 기간을 최적화

최적화 방향

최적화의 주요 측면:

  1. 더 높은 정확성을 위해 MACD 매개 변수를 최적화
  2. 더 나은 유용성을 위해 RSI 매개 변수를 최적화
  3. 피보나치 이론의 더 많은 기간을 테스트하십시오.
  4. 더 많은 필터 표시기를 추가하여 잘못된 신호를 추가로 줄이십시오.
  5. 시장 동향에 대한 더 큰 기간의 지표를 결합하십시오.

요약

이 전략은 무역 신호를 위한 여러 양자 지표를 결합하고 완전한 자동 암호화 거래를 실현한다. 매개 변수를 최적화하고 더 많은 보조 지표를 추가함으로써 수익을 더욱 향상시킨다. 이는 사용자에게 수동 운영 비용을 크게 감소시킨다. 양자 거래자에게 심층적인 연구와 응용을 가치가 있다.


/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
basePeriod: 1m
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/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)




더 많은