이 거래 전략은 3개의 연속적인 하향 촛불 패턴과 이동 평균 시스템을 기반으로 거래 신호를 결정합니다. 가격이 200일 이동 평균보다 높고 3개의 연속적인 하향 촛불이 있을 때, 그것은 긴 포지션을 개척합니다. 이 전략은 단기 이동 평균의 위치와 가격의 비율 변화로 결정되는 동적 인 수익 및 스톱 손실 수준을 통해 거래 위험을 관리합니다. 이 전략은 지정된 시간 범위 내에서만 거래합니다.
이 거래 전략은 연속적인 하락 촛불과 이동 평균 시스템으로 트렌딩 거래 기회를 결정하며, 동적 인 이익 취득 및 손실 중지 수준 및 단기 이동 평균의 위치 변화 등을 통해 위험을 제어합니다. 전략은 명확한 논리를 가지고 있으며 중장기 트렌드를 파악하는 것을 목표로하는 거래자에게 적합합니다. 그러나 전략에는 신호의 신뢰성, 이익 취득 및 손실 중지 레벨의 설정 및 위치 관리와 같은 일부 제한이 있습니다. 여전히 최적화 할 여지가 있습니다. 실제 응용에서는 시장 특성과 개인 위험 선호도에 따라 전략에 적절한 조정 및 개선을 수행하고 위험을 엄격히 제어해야합니다.
/*backtest start: 2023-05-09 00:00:00 end: 2024-05-08 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)