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