자동 구매 스칼퍼 전략과 함께 스토카스틱 RSI

저자:차오장, 날짜: 2023-10-31 11:34:47
태그:

img

전반적인 설명

이 전략은 스토카스틱 RSI 및 EMA 기술 지표에 기반한 자동 바이인 및 홀드 코인 스칼퍼 거래 전략을 구현하는 것을 목표로합니다. BTC에 최적화된 5 분 촛불을 위해 설계되었습니다. 목표는 옆 또는 중요하지 않은 하락 추세 동안 가능한 한 많은 동전을 보유하는 것입니다.

전략 논리

이 전략은 RSI 지표를 사용하여 과잉 구매 및 과잉 판매 수준을 결정하고, 스토카스틱 RSI의 K 및 D 값 사이의 관계를 결합하여 구매 및 판매 신호를 생성합니다.

스토카스틱 RSI K 라인이 20보다 낮을 때 구매 신호를 발사하고, oversold으로 간주되고, K가 D보다 높을 때 세 가지 조건에 따라 판매 여부를 결정합니다. 1) 가격이 1% 이상 상승하고 EMA 반전이 뒤따릅니다. 2) 스토카스틱 RSI K 라인이 D보다 낮습니다. 3) 스톱 로스 가격이 입시 가격의 98.5%에 도달합니다.

또한, 상승 추세에 따른 단기 EMA의 하향 전환도 판매 신호로 간주됩니다.

장점

  • 입시 시기를 위해 스토카스틱 RSI를 사용하는 것이 더 신뢰할 수 있으며 가짜 브레이크오웃을 효과적으로 필터링합니다.
  • EMA를 포함하면 트렌드 변화 시기를 더 잘 감지할 수 있습니다.
  • 스톱 로스를 적용하면 손실을 효과적으로 제어할 수 있습니다.
  • 동전을 가능한 한 많이 보유하면 거래 빈도와 수수료를 줄일 수 있습니다.

위험성

  • RSI 지표의 잠재적 인 잘못된 신호. 미세한 조정 RSI 매개 변수는 최적화 할 수 있습니다.
  • 너무 긴 스톱 손실 설정은 손실을 확장시킬 수 있습니다. 적절하게 스톱 손실 비율을 조정합니다.
  • 잘못된 EMA 매개 변수 설정은 트렌드 변화 시기를 놓칠 수 있습니다. 다른 EMA 기간을 테스트합니다.

최적화 방향

  • 최적의 설정을 위해 RSI와 스토카스틱 RSI 매개 변수의 다른 조합을 테스트합니다.
  • 다른 스톱 로스 비율을 사용해 손실 예방과 인출을 균형 잡습니다.
  • 트렌드 변화를 파악하는 최적의 매개 변수를 결정하기 위해 긴 EMA와 짧은 EMA 조합을 테스트합니다.
  • 출입 및 출입 시기의 정확성을 향상시키기 위해 다른 지표를 추가하는 것을 고려하십시오.

요약

이 전략은 입출시기를 결정하기 위해 비교적 견고한 방법을 사용하여 스토카스틱 RSI, EMA 및 기타 지표의 강점을 통합합니다. 매개 변수 최적화 및 위험 관리로 수익성과 안정성에 대한 추가 개선이 가능합니다. 전반적으로 전략 논리는 건전하며 실시간 거래에서 확인하고 최적화 할 가치가 있습니다.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Stochastic RSI W Auto Buy Scalper Scirpt III ", shorttitle="Stoch RSI_III", format=format.price, precision=2)
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
plot(k, "K", color=#2962FF)
plot(d, "D", color=#FF6D00)
h0 = hline(80, "Upper Band", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
h1 = hline(20, "Lower Band", color=#787B86)

longStopLoss  = strategy.opentrades.entry_price(0)* (.985)

stochDropping = ta.falling(k,2)
shortSma = ta.sma(hlc3,12)
shorterSma = ta.sma(hlc3,3)
plot(shortSma[3])

shortSmaFlip = (ta.change(shortSma,3)>0) and ta.falling(hlc3,1)
shorterSmaFlip = (ta.change(shorterSma,2)>0) and ta.falling(hlc3,1)
messageSellText ='"type": "sell", "symbol": "BTCUSD", "marketPosition": "{{strategy.market_position}}"'

messageBuyText ='"type": "buy", "symbol": "BTCUSD", "marketPosition": {{strategy.market_position}}"'

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

strategy.entry("Tech", strategy.long, when=(strategy.position_size <= 0 and k<17 and k>d),alert_message=messageBuyText)
//original: strategy.close("TL", when=(strategy.position_size >= 0 and (k>90 and k<d)))

takeProfit = hlc3 > strategy.opentrades.entry_price(0)*1.01
//longStopLoss  = strategy.opentrades.entry_price(0)* (.995)

strategy.close("Tech", when=(strategy.position_size >= 0 and (k>90 and k<d and stochDropping)) or close<longStopLoss, comment="rsi or Stop sell",alert_message=messageSellText)
//strategy.close("Tech", when=(strategy.position_size >= 0 and close<longStopLoss), comment="stopLoss sell",alert_message=messageSellText)

strategy.close("Tech", when=(shortSmaFlip and k>20 and takeProfit),comment="Sma after profit",alert_message=messageSellText)



더 많은