다중 지표 BTC 거래 전략

저자:차오장, 날짜: 2024-04-01 11:26:00
태그:

img

전반적인 설명

이 전략은 상대 강도 지수 (RSI), 이동 평균 컨버전스 디버전스 (MACD), 다양한 기간의 여러 간단한 이동 평균 (SMA) 등 여러 기술적 지표를 결합하여 비트코인 (BTC) 거래에 대한 포괄적 인 분석 도구를 제공하는 것을 목표로합니다. 전략의 주요 아이디어는 RSI가 특정 범위 내에있을 때 긴 포지션을 입력하는 것입니다. MACD는 상승 크로스오버를 나타내며 가격이 여러 SMA 이하이며, 정지 손실 및 수익을 취하는 수준을 설정하고 RSI가 50에 도달하면 정지 손실 포지션을 업데이트합니다.

전략 원칙

  1. 다른 기간의 RSI, MACD 및 SMA를 계산합니다.
  2. 이전 RSI 값이 하위 경계 이하 또는 상위 경계 이상인지, 현재 RSI 값이 하위 경계와 상위 경계 사이인지, MACD가 상승 크로스오버를 가지고 있는지, 그리고 폐쇄 가격이 모든 SMA보다 낮는지 확인하십시오.
  3. 위의 조건이 충족되고 현재 지위가 없다면 긴 지점을 입력합니다.
  4. 스톱 로스 및 이윤 취득 가격을 위험 비율에 따라 설정합니다.
  5. 긴 포지션이 유지되고 RSI가 50에 도달하면 가장 높은 가격으로 중지 손실 포지션을 업데이트합니다.
  6. MACD가 하향적인 크로스오버를 나타낸다면 포지션을 닫습니다.

전략적 장점

  1. 신호 신뢰성을 높이기 위해 여러 가지 기술 지표를 포함합니다.
  2. RSI가 특정 범위 안에 있을 때 포지션을 입력하고 극단적인 상황을 피합니다.
  3. 위험 조절을 위해 스톱 로스 및 토익 레벨을 설정합니다.
  4. 부분적인 수익을 확보하기 위해 동적으로 스톱 로스 포지션을 조정합니다.
  5. MACD 하향 크로스오버 신호를 기반으로 적시에 포지션을 폐쇄하여 잠재적 손실을 줄입니다.

전략 위험

  1. 불안정한 시장에서 빈번한 거래 신호는 과도한 거래 및 수수료 손실로 이어질 수 있습니다.
  2. 스톱 로즈와 테이크프로프트에 대한 고정된 리스크 비율은 다른 시장 환경에 적응하지 못할 수 있습니다.
  3. 근본적인 요소를 무시하면서 기술 지표에만 의존하는 것은 잘못된 거래 결정으로 이어질 수 있습니다.

전략 최적화 방향

  1. 더 많은 기술 지표 또는 시장 정서 지표를 도입하여 신호의 정확성을 향상시킵니다.
  2. 다른 시장 환경에 적응하기 위해 시장 변동성에 따라 스톱 로스 및 영업 취득 수준을 동적으로 조정합니다.
  3. 중요한 뉴스 사건이나 규제 정책 변화와 같은 근본 분석을 포함하여 거래 결정에 도움을 줍니다.
  4. 다양한 시간 프레임을 가진 지표를 고려하여 여러 시간 스케일에 거래 기회를 포착하십시오.

요약

이 전략은 RSI, MACD 및 SMA 기술 지표를 통합하여 비트코인 거래에 대한 포괄적인 분석 프레임워크를 제공합니다. 여러 지표의 확인을 사용하여 거래 신호를 생성하고 리스크 제어 조치를 통합합니다. 그러나 더 많은 지표를 도입하고 동적으로 매개 변수를 조정하고 근본 분석을 통합하는 것과 같은 최적화에 여전히 여지가 있습니다. 실제 응용에서는 거래자가 자신의 위험 선호도와 시장 조건에 따라 전략을 조정해야합니다.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Advanced Strategy", shorttitle="1M Advanced Strat", overlay=true)

// Input settings
rsiLength = input(14, title="RSI Length")
rsiLowerBound = input(20, title="RSI Lower Bound")
rsiUpperBound = input(30, title="RSI Upper Bound")

atrLength = input(14, title="ATR Length")

smaFastLength = input(20, title="SMA 20 Length")
smaMediumLength = input(50, title="SMA 50 Length")
smaSlowLength = input(200, title="SMA 200 Length")

riskPercent = input(0.005, title="Risk Percentage for SL and Target")

// Calculate indicators
rsiValue = rsi(close, rsiLength)
[macdLine, signalLine, _] = macd(close, 12, 26, 9)
smaFast = sma(close, smaFastLength)
smaMedium = sma(close, smaMediumLength)
smaSlow = sma(close, smaSlowLength)
atrValue = atr(atrLength)

// Checking previous RSI value
prevRsiValue = rsi(close[1], rsiLength)

// Conditions for Entry
longCondition = rsiValue > rsiLowerBound and rsiValue < rsiUpperBound and  prevRsiValue < rsiLowerBound or prevRsiValue > rsiUpperBound and crossover(macdLine, signalLine) and close < smaFast and close < smaMedium and close < smaSlow

// Strategy Entry
if (longCondition and not strategy.position_size)
    strategy.entry("Long", strategy.long)

    // Setting Stop Loss and Take Profit
    stopLoss = close - riskPercent * close
    takeProfit = close + atrValue
    strategy.exit("Exit Long", "Long", stop = stopLoss, limit = takeProfit)

//Update Stop Loss when RSI reaches 50
if (strategy.position_size > 0 and rsiValue >= 50)
    strategy.exit("Update SL", "Long", stop = high)

// Conditions for Exit
shortCondition = crossunder(macdLine, signalLine)

// Strategy Exit
if (shortCondition)
    strategy.close("Long")



더 많은