이중 이동 평균 확률적 추세 추종 거래 전략

EMA SMA RSK
생성 날짜: 2024-12-13 10:48:46 마지막으로 수정됨: 2024-12-13 10:48:46
복사: 0 클릭수: 372
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균 확률적 추세 추종 거래 전략

개요

이 전략은 쌍평선과 무작위 지표 (Stochastic) 를 기반으로 한 트렌드 추적 거래 시스템이다. 이 전략은 평선 시스템을 결합하여 시장의 흐름을 판단하며, 무작위 지표를 사용하여 과매도 영역의 교차 신호를 포착하고, 위험을 제어하기 위해 동적 인 스톱 스탠드 수준을 설정한다. 이 방법은 거래 신호의 신뢰성을 보장하고, 각 거래의 위험-이익 비율을 효과적으로 관리한다.

전략 원칙

이 전략은 다음과 같은 핵심 요소에 의존합니다.

  1. 50과 150기 지수 이동 평균 ((EMA) 을 사용하여 시장 추세 방향을 판단
  2. 무작위 지표 ((14,3,3) 를 사용하여 과매도 지역을 식별합니다.
  3. 트렌드 방향에서 임의의 지표를 찾는 교차 신호
  4. 최근 가격 변동에 따라 설정된 다이내믹 스톱 로즈
  5. 1: 2의 리스크/수익률을 사용하여

구매 조건은 동시에 충족되어야 합니다:

  • 50일 평균선과 150일 평균선보다 높은 종점 가격
  • 50일 평균선은 150일 평균선 위에 있습니다.
  • 무작위 지표 K 값이 30보다 낮고 K 선이 D 선을 상향으로 가로지르는 경우

“이런 일이 벌어질 수 있다.

  • 50일 평균선과 150일 평균선 아래로 종결
  • 50일 평균선은 150일 평균선 아래에 있습니다.
  • 무작위 지표 K 값이 70보다 높고 K 선이 D 선을 아래로 가로지르는 경우

전략적 이점

  1. 다중 인증 메커니즘의 신뢰성 향상
  • 평균선 시스템으로 큰 추세를 확인
  • 무작위 지표를 사용하여 가짜 신호를 필터링
  • 신호가 터지기 위해서는 여러 가지 조건이 필요합니다.
  1. 좋은 위험 관리 시스템
  • 역동적인 정지 손실은 최근 지지 저항에 기반합니다.
  • 고정 위험 수익보다 최적화된 기대 수익
  • 가짜 침입 위험 감소 추세 확정
  1. 매우 적응력이 좋다
  • 여러 시간 사이클에 적용할 수 있습니다.
  • 매개 변수는 시장 특성에 따라 조정할 수 있습니다.
  • 변동성이 높은 시장에 적합합니다.

전략적 위험

  1. 시장의 부진
  • 빈번한 평균선 돌파로 인해 잘못된 신호가 발생
  • 트렌드가 뚜렷할 때 사용하는 것이 좋습니다.
  • 트렌드 필터 개선
  1. 스톱 로드 설정 위험
  • 너무 긴축하면 빈번한 손실이 발생할 수 있습니다.
  • 산은 더 큰 손실을 입을 수 있다.
  • 시장의 변동에 따라 조정해야 합니다.
  1. 지연 위험
  • 평선 시스템은 뒤떨어져 있습니다.
  • 트렌드의 시작점을 놓쳤을 수도 있습니다.
  • 입학시간에 주의해야 합니다.

전략 최적화 방향

  1. 트렌드 강도 필터링
  • 트렌드 강도를 측정하는 ADX 지표를 추가합니다.
  • 최소 트렌드 강도 임계값을 설정합니다.
  • 약한 추세에서 거래하는 것을 피하십시오.
  1. 임의 지표 변수를 최적화
  • 시장 특성에 따라 변수를 조정
  • 적응 변수를 고려하십시오.
  • 다른 기술 지표 확인을 추가
  1. 손해 방지 장치의 개선
  • 트래킹을 고려하십시오.
  • 변동율에 따라 동적으로 조정
  • 최적화된 리스크/이익 비율 설정

요약하다

이것은 트렌드 추적과 동적 거래를 결합한 완전한 전략 시스템이다. 일률적 시스템과 무작위 지표의 조합 사용으로 거래 방향이 주 트렌드에 부합하는지 확인하고 적절한 가격 영역에서 거래 할 수 있습니다. 또한, 전략은 완벽한 위험 관리 메커니즘을 포함하고 있으며, 동적 중지 손실과 고정 위험 이익 비율을 사용하여 위험을 제어합니다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © quadawosanya

//@version=5
//indicator("My script")
//@version=5
strategy("EMA-Stochastic Strategy", overlay=true)

// EMA settings
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)

// Stochastic settings
kLength = 14
dLength = 3
smoothK = 3
stochK = ta.sma(ta.stoch(close, high, low, kLength), smoothK)
stochD = ta.sma(stochK, dLength)

// Parameters for Stop Loss and Take Profit
var float stopLossLevel = na
var float takeProfitLevel = na

// Buy condition
buySignal = (close > ema50 and close > ema150) and (ema50 > ema150) and (stochK < 30 and ta.crossover(stochK, stochD))

// Sell condition
sellSignal = (close < ema50 and close < ema150) and (ema50 < ema150) and (stochK > 70 and ta.crossunder(stochK, stochD))

// Previous low for Stop Loss for Buy
lowBeforeBuy = ta.lowest(low, 5)

// Previous high for Stop Loss for Sell
highBeforeSell = ta.highest(high, 5)

// Entry and exit logic
if (buySignal)
    stopLossLevel := lowBeforeBuy
    risk = close - stopLossLevel
    takeProfitLevel := close + 2 * risk
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel, limit=takeProfitLevel)

if (sellSignal)
    stopLossLevel := highBeforeSell
    risk = stopLossLevel - close
    takeProfitLevel := close - 2 * risk
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel, limit=takeProfitLevel)

// Plotting EMAs
plot(ema50, color=color.blue, title="50 EMA")
plot(ema150, color=color.red, title="150 EMA")

// Visualize Buy and Sell signals
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Visualize Stop Loss and Take Profit levels
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit")


plot(close)