MACD, RSI, FIB를 결합한 양적 비트코인 ​​거래 전략


생성 날짜: 2023-12-26 17:08:03 마지막으로 수정됨: 2023-12-26 17:08:03
복사: 0 클릭수: 932
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

MACD, RSI, FIB를 결합한 양적 비트코인 ​​거래 전략

개요

이 전략은 ‘ 금 크로스 핑치 전략‘으로 불리며, 이동 평균 기술 지표 MACD, 상대적으로 강한 지표 RSI와 금분사선 원리의 피보나치 회수/확장 이론을 결합하여, 비트코인과 같은 암호화폐에 대한 정량 거래를 구현한다.

전략 원칙

  1. MACD 지표는 매출과 매출을 결정합니다.
  • MACD 패스트 라인과 패스트 라인을 설정하는 EMA 주기는 15과 30
  • 이 경우, ‘Fast Line’는 ‘Slow Line’를 ‘Buy’라고 하고, ‘Downline’는 ‘Sell’라고 합니다.
  1. RSI 지표 필터링 가짜 신호
  • RSI를 50주기로 설정합니다.
  • RSI 지표는 MACD의 일부 가짜 신호를 필터링하는 데 도움이 될 수 있습니다.
  1. 피보나치 이론은 SUPPORT/RESISTANCE를 정의합니다.
  • 최근 최고 가격과 최저 가격 (예: 38 K 라인) 을 결합하여
  • 금분선의 0.5 피보나치 회수와 확장을 계산함
  • 지원 위치 및 저항 위치 판단에 사용할 수 있습니다.
  1. 평균선과 RSI 판단 과매매 과매매
  • 50 회기 평균은 현재 과매매 상태인지 여부를 판단할 수 있습니다.
  • RSI도 과매매를 판단합니다.
  1. 반수지개제도
  • 사용자들에게 반박을 할 수 있는 선택권을 제공함
  • 사용자 선택에 따라 유연하게 조정할 수 있는 멀티 공백 논리

우위 분석

이 전략의 가장 큰 장점은 온천 운영이 가능하여 인적 운영 비용을 크게 줄일 수 있다는 것입니다. 또한, 여러 지표의 조합으로 승률을 높일 수 있으며, 특히 황소 시장에서 효과가 뚜렷합니다. 구체적인 장점은 다음과 같습니다:

  1. 7*24시간 자동화, 인적 개입 없이 거래
  2. MACD 지표는 매매 시점을 정확하게 판단합니다.
  3. RSI 지표는 일부 가짜 신호를 필터링 할 수 있습니다.
  4. 피보나치 이론은 거래 결정에 대한 근거를 증가시킵니다.
  5. 50의 평균선과 RSI가 과매매를 판단합니다.
  6. 시장의 변화에 대응하기 위한 역동적 조정

위험 분석

이 전략에는 몇 가지 위험도 존재합니다. 주로 큰 시장의 반전으로 인해, 이 때 중지 손실이 작용하기 어려울 수 있습니다. 또한, 지분 기간이 너무 길어질 때에도 위험이 있습니다. 주요 위험점은 다음과 같습니다:

  1. 이 사건은 제주도에서 발생한 것으로 알려졌다.
  2. 장기 보유에 따른 시스템적 위험

대응방법은 다음과 같습니다.

  1. 제약이 제대로 작동하도록 제약 거리를 적절히 느려지게 합니다.
  2. 포지션 주기를 최적화하고, 포지션 기간이 너무 길어지는 위험을 줄이십시오.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. MACD 지표의 매개 변수를 최적화하여 구매/판매 신호의 정확도를 향상시킵니다.
  2. RSI 지표의 매개 변수를 최적화하여 지표의 실용성을 향상시킵니다.
  3. 피보나치 이론을 더 많은 주기로 시험해 보는 것
  4. 가짜 신호의 가능성을 더욱 낮추기 위해 더 많은 필러 파동 지표를 추가합니다.
  5. 더 많은 대주기 지표와 함께 시장 추세를 판단하는 방법

요약하다

이 전략은 여러 가지 수량 지표를 통합하여 매매 시기를 판단하여 암호화폐 시장을 24시간 자동화 할 수 있습니다. 각 지표의 매개 변수를 최적화하고 더 많은 보조 지표를 추가함으로써 전략의 수익률 수준을 더욱 향상시킬 수 있습니다. 이 전략은 사용자에게 많은 인적 운영 시간 비용을 절감 할 수 있으며, 수량 거래자가 심도 있는 연구와 응용에 가치가 있습니다.

전략 소스 코드
/*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)