리소스 로딩... 로딩...

스토카스틱 오시레이터 및 이동 평균 전략

저자:차오장, 날짜: 2024-04-30 16:45:30
태그:스톡MASL

img

전반적인 설명

이 전략은 스토카스틱 오시레이터와 이동 평균 (MA) 을 결합하여 과잉 구매 및 과잉 판매 시장 조건을 결정하고 거래 방향을 결정하기 위해 이동 평균의 트렌드 방향을 사용합니다. 스토카스틱 오시레이터가 과잉 판매 영역에서 상향으로 넘어가고 이동 평균이 상승 추세에있을 때 전략은 긴 포지션을 개척합니다. 스토카스틱 오시레이터가 과잉 구매 영역에서 하향으로 넘어가고 이동 평균이 하락 추세에있을 때 전략은 짧은 포지션을 개척합니다. 또한 전략은 위험을 제어하기 위해 스톱 로스를 설정합니다.

전략 원칙

  1. 스토카스틱 오시레이터의 K와 D값을 계산합니다. 여기서 K값은 가장 높고 가장 낮은 가격에 대한 가격 위치를 나타내고 D값은 K값의 이동 평균입니다.
  2. 지정된 기간 동안 이동 평균을 계산합니다.
  3. 진입 조건을 결정합니다. K 값이 아래에서 과반 판매 수준을 넘어서고 이동 평균이 상승 추세를 보이는 경우 긴 포지션을 열고 K 값이 위에서 과반 구매 수준을 넘어서고 이동 평균이 하향 추세를 보이는 경우 짧은 포지션을 열십시오.
  4. 출구 조건을 결정합니다. K 값이 이동 평균을 넘어서 이동 평균이 방향을 변경하면 위치를 닫습니다.
  5. 위험 조절을 위해 스톱 로스를 설정합니다.

이점 분석

  1. 스토카스틱 오시레이터와 이동평균을 결합함으로써 전략은 시장 추세와 과잉 구매/ 과잉 판매 상황을 효과적으로 파악할 수 있습니다.
  2. 이동 평균의 트렌드 방향을 사용하여 거래 신호를 필터링하면 거래의 품질이 향상됩니다.
  3. 스톱 로스를 설정하면 위험을 효과적으로 제어할 수 있습니다.
  4. 코드 구조는 명확하고 이해하기 쉽고 수정 할 수 있습니다.

위험 분석

  1. 스토카스틱 오시레이터와 이동 평균 모두 지연 지표로 신호가 지연될 수 있습니다.
  2. 불안정한 시장에서 전략은 높은 거래 비용을 초래하는 빈번한 거래를 유발할 수 있습니다.
  3. 고정된 스톱 로스 비율은 다른 시장 조건에 적응하지 못할 수 있으며 시장 변동성에 따라 조정해야 할 수도 있습니다.

최적화 방향

  1. 신호 신뢰성을 높이기 위해 MACD와 RSI와 같은 다른 기술 지표를 통합하는 것을 고려하십시오.
  2. 스톱 러스 (stop loss) 를 위해 동적 스톱 러스 방법이나 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")

관련

더 많은