SMA와 RSI 조합 거래 전략

저자:차오장, 날짜: 2023-10-08 11:40:49
태그:

전반적인 설명

이 전략은 간단한 이동 평균 (SMA) 및 상대적 강도 지수 (RSI) 인디케이터에 기반합니다. RSI가 정의된 엔트리 레벨을 넘어서고 종료 가격이 SMA 이하로 되면 짧은 순서로 이동합니다. 트렌드 다음 및 과잉 구매 / 과잉 판매 인디케이터를 결합하여 중장기 시간 내에 반전 기회를 포착하는 것을 목표로합니다.

전략 논리

  1. 전체 트렌드 방향을 결정하기 위해 SMA (200 기간) 를 사용하십시오. 가격이 SMA 이하일 때 단축 기회를 찾으십시오.

  2. RSI (14 기간) 를 사용하여 과잉 구매/ 과잉 판매 조건을 식별합니다. RSI가 51 이상의 신호를 통과하면 판매 동력을 증가시키고, 단위로 진입 할 수 있습니다.

  3. 쇼트 포지션을 열면 최저 폐쇄 가격에 마감 손실을 설정합니다. RSI가 54 이상 또는 32 이하로 넘으면 포지션을 닫습니다.

  4. 스톱 손실은 세 가지 종류가 있습니다. 가격 스톱, RSI 스톱, 수익 스톱.

강점

  1. 트렌드를 따르는 지표와 과잉 매수/ 과잉 판매 지표를 결합하면 엔트리의 타이밍 정확도가 향상됩니다.

  2. 후속 스톱 손실은 실시간 가격 변화에 따라 수익을 보호 할 수 있으며 딱딱한 스톱 손실을 피할 수 있습니다.

  3. RSI의 양방향 트리거는 이윤을 확보하고 과도한 회수 손실을 방지하는 데 도움이 됩니다.

  4. 고정된 매개 변수를 가진 간단한 지표를 사용하면 중장기 거래에 쉽게 구현됩니다.

위험성

  1. SMA와 RSI 매개 변수는 모든 제품과 시간 프레임에 적합하지 않을 수 있으므로 최적화가 필요합니다.

  2. 미끄러짐과 수수료와 같은 거래 비용은 무시되며 실제 PnL에 영향을 미칩니다.

  3. 부피와 시장 구조와 같은 다른 요소는 고려되지 않아 신뢰할 수 없는 신호가 발생합니다.

  4. 너무 많은 지표에 의존하고 가격 동작 자체를 무시하면 역전 시기를 놓칠 수 있습니다.

  5. 스톱 로즈 방법은 상대적으로 딱딱하고, 시장의 큰 변화에 적응할 수 없습니다.

개선

  1. 가장 좋은 조합을 찾기 위해 SMA 기간과 RSI 매개 변수를 테스트하고 최적화합니다.

  2. 부피 지표가 추가되면 부피가 낮을 때 잘못된 파장을 방지할 수 있습니다.

  3. MACD, 볼링거 밴드 등과 같은 다른 지표와 테스트 조합

  4. 기계 학습 알고리즘을 추가하여 역사적인 데이터로 훈련함으로써 신호의 정확성을 향상시킵니다.

  5. 스톱 로스를 최적화하여 보다 유연하게 시장 변화에 적응할 수 있습니다.

  6. 단일 거래 손실 금액을 제어하기 위해 위험 관리를 추가합니다.

결론

이 전략은 SMA와 RSI 지표의 강점을 통합하여 소란스러운 거래 기회를 필터링합니다. 간단한 논리는 구현하기 쉽지만 여전히 파라미터 및 규칙 최적화와 함께 장기적으로 안정적으로 작동하기 위해 적절한 위험 통제가 필요합니다. 다른 지표 또는 알고리즘과 결합하여 더욱 견고함을 높이기 위해 탐구 할 가치가 있습니다.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
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/
// © abdllhatn

//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)

// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")

// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)

var float trailingStop = na
var float lastLow = na

// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    trailingStop := na
    lastLow := na

if (strategy.position_size < 0)
    if (na(lastLow) or close < lastLow)
        lastLow := close
        trailingStop := close

if not na(trailingStop) and close > trailingStop
    strategy.close("Sell")

if (rsi_value >= rsi_stop)
    strategy.close("Sell")

if (rsi_value <= rsi_take_profit)
    strategy.close("Sell")

// Plot
plot(sma_value, color=color.red, linewidth=2)




더 많은