3개의 연속된 음수선과 이동평균선을 기반으로 한 동적 손절매 및 손절매 거래 전략

SMA EMA
생성 날짜: 2024-05-09 16:42:35 마지막으로 수정됨: 2024-05-09 16:42:35
복사: 0 클릭수: 627
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

3개의 연속된 음수선과 이동평균선을 기반으로 한 동적 손절매 및 손절매 거래 전략

개요

이 거래 전략은 연속적인 3개의 음선 형태와 평행선 시스템을 기반으로 거래 신호를 판단한다. 가격이 200일 평균선 위에 있고, 연속적인 3개의 음선 형태가 나타나면, 다중 포지션을 한다. 전략은 동적인 스톱 및 스톱로스의 방식으로 거래 위험을 관리하고, 스톱 및 스톱로스 지점은 단기 평균선의 위치와 가격 변화의 비율에 따라 결정된다. 전략은 지정된 시간 범위에서만 거래한다.

전략 원칙

  1. 연속 음의 수를 계산한다. 지정된 수 (기본 3) 의 연속 음이 있을 때, 다중 신호로 간주한다.
  2. 두 개의 평행선을 사용하여 트렌드 및 거래 시간을 판단합니다. 기본으로 10 일평균 및 200 일평균을 사용합니다. 가격이 200 일평균선 위에있을 때만 더 많은 것을 고려하십시오.
  3. 동적 스톱 및 스톱 지점을 설정하십시오. 스톱 지점은 포지션 개시 가격 위에 특정 비율로 (설정 1.5%) 설정하고, 스톱 지점은 포지션 개시 가격 아래에 특정 비율로 (설정 1%) 설정합니다.
  4. 또 다른 평소 조건은 가격의 상대적인 10일 평균선의 위치가 변화하는 것이다. 만약 다자 포지션을 보유할 때 가격이 평균선 상단에서 아래로 돌아간다면 평소이다.
  5. 전략은 지정된 시간 범위 내에서만 실행되며, 시작 날짜와 종료 날짜에 따라 결정된다.

전략적 이점

  1. 가격 형태와 일률적인 시스템으로 결합하면 트렌딩 기회를 더 잘 잡을 수 있습니다.
  2. 동적 스톱과 스톱로스는 위험과 수익을 유연하게 제어할 수 있다. 스톱포스는 가격 상승에 따라 계속 상승하여 수익을 달리게 한다. 스톱로스는 최대 손실을 제한한다.
  3. 단기 평균선의 위치 변화를 평지 신호로 사용하여 가격의 급격한 반동에 신속하게 대응할 수 있다.
  4. 거래 시간 범위를 지정하여 시장 폐쇄 또는 휴일과 같은 특별한 기간 동안 거래하는 것을 피할 수 있습니다.

전략적 위험

  1. 연속적인 음선 형태는 트렌드 반전을 완전히 결정하지 못하며, 연속적인 음선 이후 가격이 계속 상승하는 상황이 발생할 수 있으며, 전략이 실패할 수 있다.
  2. 고정된 비율의 스톱 스톱 손실 지점은 시장의 급격한 변동에 대처할 수 없습니다. 트렌드가 강할 때, 스톱 스톱 지점은 너무 낮게 설정되어 조기 퇴출을 초래할 수 있습니다. 변동이 심할 때, 스톱 스톱 지점은 너무 가깝게 설정되어 빈번한 손실을 초래할 수 있습니다.
  3. 단기 평균선 위치에 대한 판단은 지연될 수 있으며, 특히 가격이 급격히 변할 때, 최적의 시점을 놓칠 수 있다.
  4. 전략은 위치 관리 및 위험 통제의 조치가 부족하며, 입시 지점과 위치 규모는 고정되어 있으며, 단일 거래의 위험이 너무 커질 수 있습니다.

전략 최적화 방향

  1. MACD, RSI 등과 같은 더 많은 기술적 지표를 도입하여 신호의 신뢰성을 높일 수 있습니다.
  2. 정지 및 정지 지점의 계산 방법을 최적화하여 ATR 또는 변동율을 사용하여 동적으로 조정하거나, 지원 저항 지점과 결합하여 설정한다.
  3. 평지 신호에 대해, 거래량 변화, 다수 공수 지점 비율 등과 같은 더 많은 확인 조건을 사용하는 것을 고려할 수 있습니다.
  4. 포지션 관리 및 위험 제어 조치를 도입합니다. 예를 들어, 계좌 잔액과 위험 수준에 따라 거래 당 포지션 크기를 조정하고, 전체 위험 제한을 설정합니다.
  5. 연속 선의 수, 평균 선주기 등과 같은 파라미터 설정에 대해 최적화 테스트를 수행하여 최적의 파라미터 조합을 찾을 수 있다.

요약하다

이 거래 전략은 연속적인 음선 형태와 평선 시스템을 통해 트렌드 트레이딩 기회를 판단하고, 동적인 스톱 스톱 손실과 단기 평균선 위치 변화를 활용하여 위험을 통제한다. 전략 아이디어는 명확하고, 중기 및 장기 동향을 파악하는 거래자에게 적합하다. 그러나 전략에는 신호 신뢰성, 스톱 스톱 손실 지점 설정, 포지션 관리 등과 같은 몇 가지 제한이 있습니다. 실제 응용에서는 시장 특성과 개인 위험 선호에 따라 전략에 적절한 조정이 및 개선이 필요하며, 위험을 엄격하게 제어한다.

전략 소스 코드
/*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)