확률적 오실레이터와 이동 평균 전략

STOCH MA SL
생성 날짜: 2024-04-30 16:45:30 마지막으로 수정됨: 2024-04-30 16:45:30
복사: 1 클릭수: 642
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

확률적 오실레이터와 이동 평균 전략

개요

이 전략은 무작위 진동 지표 (Stochastic Oscillator) 와 이동 평균 (Moving Average) 을 결합하여 시장의 과매매 및 과매매 상태를 판단하고 이동 평균의 추세 방향에 따라 거래 방향을 결정한다. 무작위 진동 지표가 과매 영역을 가로질러 올라가는 경우, 이동 평균이 상승 추세에있을 때, 전략은 다수 포지션을 열고; 무작위 진동 지표가 과매 영역을 가로질러 내려가는 경우, 이동 평균이 하향 추세에있을 때, 전략은 공백 포지션을 열고. 동시에, 전략은 손실을 통제하기 위해 스톱을 설정한다.

전략 원칙

  1. K값과 D값을 계산하여, K값은 가격의 최상위와 최하위 위치, D값은 K값의 이동 평균이다.
  2. 지정된 주기 이동 평균을 계산한다.
  3. 진입 조건을 판단하기: K 값이 아래에서 위쪽으로 과매치 수준을 통과하고 이동 평균이 위쪽으로 이동하면 다단위 포지션을 열고; K 값이 위에서 아래로 과매치 수준을 통과하고 이동 평균이 아래로 이동하면 공백 상위 포지션을 열다.
  4. 출전 조건을 판단: K 값이 이동 평균과 교차하고 이동 평균이 방향을 변경할 때, 평점.
  5. 스톱 손실을 설정하고 위험을 통제하십시오.

우위 분석

  1. 무작위 변동 지표와 이동 평균을 결합하면 시장의 추세와 과매매 현상을 더 잘 포착할 수 있다.
  2. 이동 평균을 사용하여 트렌드 방향을 사용하여 거래 신호를 필터링하여 거래 품질을 향상시킵니다.
  3. 스톱 손실을 설정하고, 위험을 효과적으로 제어한다.
  4. 코드 구조는 명확하고 이해하기 쉽고 수정하기 쉽습니다.

위험 분석

  1. 무작위 진동 지표와 이동 평균은 지연 지표이며, 신호 지연이 발생할 수 있다.
  2. 이 전략은 불안정한 시장에서 높은 거래 비용을 초래할 수 있는 빈번한 거래로 이어질 수 있습니다.
  3. 고정된 스톱 손실 비율은 다른 시장 환경에 적합하지 않을 수 있으며 시장의 변동성에 따라 조정해야합니다.

최적화 방향

  1. 신호의 신뢰성을 높이기 위해 MACD, RSI 등과 같은 다른 기술 지표를 도입하는 것을 고려할 수 있습니다.
  2. 손실을 막기 위해, 동적 손실을 사용하거나 ATR (Average True Range) 기반의 손실 방법을 적용하여 시장 변화에 더 잘 적응 할 수 있습니다.
  3. 시장의 추세와 변동성에 따라 동적으로 조정할 수 있으며, 전략의 성능을 최적화하기 위해 무작위 변동 지표와 이동 평균의 매개 변수를 조정할 수 있습니다.
  4. 포지션 관리를 도입하여 시장 상황과 계정 위험에 따라 포지션 크기를 동적으로 조정합니다.

요약하다

이 전략은 무작위적인 흔들림 지표와 이동 평균을 결합하여 시장의 과매매 과매매 상태를 포착하는 동시에 이동 평균의 추세 방향을 사용하여 거래 신호를 필터링하고 위험을 제어하기 위해 스톱을 설정합니다. 전략의 아이디어는 명확하고 이해하기 쉽고 구현됩니다. 그러나, 전략에는 지표 지연, 빈번한 거래와 같은 몇 가지 제한 사항이 있습니다.

전략 소스 코드
/*backtest
start: 2024-04-22 00:00:00
end: 2024-04-29 00:00:00
period: 1m
basePeriod: 1m
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/
// © Pablo_2uc

//@version=5
strategy("Estrategia Stoch + MA c/ SL", overlay=true)

// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")

// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")

// Capital inicial
capital = 500

// Tamaño de posición (10% del capital)
positionSize = 1

// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100

// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)

// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)

// Condiciones de entrada en largo y corto
longCondition = ta.crossunder(k, oversold) and ma > ma[1]
shortCondition = ta.crossover(k, overbought) and ma < ma[1]

// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]

// Estrategia
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))

// Cierre de posiciones
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")