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

3개의 연속적인 하향 촛불과 이중 이동 평균에 기초한 거래 전략

저자:차오장, 날짜: 2024-05-14 17:30:35
태그:SMASMA200

img

전반적인 설명

이 전략은 세 개의 연속적인 하향 촛불과 이중 이동 평균을 기반으로 한 거래 전략입니다. 전략의 주요 아이디어는 다음과 같습니다. 세 개의 연속적인 하향 촛불이 있고 현재 폐쇄 가격은 200 일 이동 평균보다 높을 때 긴 포지션을 열고; 10 일 이동 평균이 가격과 교차하거나 가격이 이익 취득 또는 손실 중지 수준에 도달하면 포지션을 닫습니다. 전략은 지정된 시간 범위 내에서만 실행됩니다.

전략 원칙

  1. 연속 하향 촛불의 수를 계산합니다. 닫기 가격이 감소하면 연속 하향 촛불의 수가 1로 증가합니다. 그렇지 않으면 0으로 재설정됩니다.
  2. 10일과 200일 이동평균을 계산합니다.
  3. 현재 종료 가격이 10일 이동 평균보다 높는지 결정합니다.
  4. 출입 조건이 충족되었는지 확인합니다. 세 개의 연속 하향 촛불, 현재 시간은 지정된 범위 내에 있으며 현재 폐쇄 가격은 200 일 이동 평균보다 높습니다.
  5. 출구 조건이 충족되었는지 확인합니다: 10일 이동 평균은 가격과 교차하거나 가격이 수익 또는 스톱 로스 수준에 도달합니다.
  6. 입상 조건이 충족되고 현재 지위가 없다면, 긴 지점을 개척합니다.
  7. 출구 조건이 충족되고 현재 포지션이 있다면 포지션을 닫습니다.

전략적 장점

  1. 가격 움직임과 이동 평균 요인을 고려하여 트렌딩과 오스실레이션 시장에서 기회를 포착 할 수 있습니다.
  2. 수익을 취하고 손실을 멈추는 수준을 설정하여 위험을 효과적으로 제어할 수 있습니다.
  3. 전략의 실행 기간을 제한하여 특정 기간 동안 과도한 위험을 피합니다.
  4. 코드 로직은 명확하고 읽기 쉬워서 이해하기 쉽고 최적화 가능합니다.

전략 위험

  1. 연속적인 하향 촛불을 판단하는 것은 너무 간단해서 잘못된 신호를 쉽게 유발할 수 있습니다.
  2. 이윤을 취하고 손실을 멈추는 레벨을 설정하는 것은 충분히 유연하지 않을 수 있습니다. 시장이 크게 변동할 때 빈번한 거래 또는 놓친 기회로 이어집니다.
  3. 예상치 못한 사건, 주요 뉴스, 그리고 다른 비정상적인 요인을 고려하지 않으며, 잠재적으로 추가 위험을 감수합니다.

전략 최적화 방향

  1. 더 강력한 신호 판단 논리를 구축하기 위해 RSI와 MACD와 같은 더 많은 기술 지표를 도입하는 것을 고려하십시오.
  2. ATR와 같은 변동성 지표에 기반한 동적 취득/정지 손실 또는 정지 손실을 도입하여 취득 및 중단 손실 수준을 최적화합니다.
  3. 전략에 대한 다른 매개 변수 설정의 영향을 연구하십시오. 예를 들어 연속 하향 촛불의 수, 이동 평균 기간 등, 최적의 매개 변수 조합을 찾기 위해.
  4. 포지션 관리를 통합하여 다른 시장 환경에 따라 포지션을 동적으로 조정하여 자본 활용 효율성을 향상시킵니다.

요약

이 전략은 연속 하락 촛불과 이중 이동 평균의 조합을 통해 간단하고 이해하기 쉬운 거래 모델을 구축합니다. 트렌드 기회를 포착하는 동안 전략은 또한 특정 리스크 제어 조치를 설정합니다. 그러나 신호 판단 및 리스크 제어에서 최적화 할 수있는 더 많은 공간이 있습니다. 더 많은 기술적 인 지표, 매개 변수 설정을 최적화하고 동적 인 수익 / 중지 손실 및 위치 관리를 구현함으로써 전략의 견고성과 수익성이 더욱 향상 될 수 있습니다.


/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)


관련

더 많은