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

래리 윌리엄스의 3기 동적 이동 평균 거래 전략

저자:차오장, 날짜: 2024-05-11 17:35:22
태그:EMA

img

전반적인 설명

이 문서에서는 래리 윌리엄스 3주기 동적 이동 평균에 기반한 거래 전략을 소개합니다. 이 전략은 두 개의 기하급수적인 이동 평균 (EMA) 을 사용하여 가격 추세를 파악하고 3개의 연속 촛불의 종료 가격이 EMA를 통과 할 때 거래 신호를 생성합니다. 전략 매개 변수는 조정 가능하며 다른 시장과 시간 프레임에 적합합니다.

전략 원칙

  1. 두 개의 EMA를 계산합니다: 조정 가능한 기간과 함께 높은 가격 EMA와 낮은 가격 EMA.
  2. 현재 시간이 설정된 거래 간격 내에 있는지 확인합니다.
  3. 마지막 세 개의 촛불이 EMA 위에 (승향) 또는 아래에 (하락) 연속적으로 닫혔는지 결정합니다.
  4. 조건 3가 충족되고 위치가 0이면 긴 포지션을 열고 조건 3의 반대가 충족되고 긴 포지션을 유지하면 포지션을 닫습니다.
  5. 포지션을 보유한 경우 각 거래일의 끝에서 포지션을 닫습니다.

전략적 장점

  1. 유연한 매개 변수: EMA 기간, 거래 시간 간격 및 다른 매개 변수는 다른 시장에 적응하도록 조정할 수 있습니다.
  2. 트렌드 추적: 트렌드를 식별하기 위해 EMA와 연속 촛불의 방향을 활용하여 트렌드 시장을 파악하는 데 도움이됩니다.
  3. 적시 스톱 로스: 가격이 트렌드에 반대되는 EMA를 통과하면 즉시 포지션을 닫습니다. 드라우다운을 제어합니다.
  4. 내일 포지션 폐쇄: 매일 거래의 끝에서 포지션을 폐쇄하여 오버나이트 리스크를 피합니다.

전략 위험

  1. 시장을 흔들리는 위험: 추세 없는 시장에서 자주 거래하면 손실이 발생할 수 있습니다.
  2. 매개 변수 위험: 성능은 다른 시장에서 다른 매개 변수에 따라 크게 달라지며, 표적 최적화가 필요합니다.
  3. 격차 위험: 격차를 열면 전략의 입시 가격의 미끄러짐을 유발하여 위험을 증가시킬 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터: 트렌드 강도를 평가하고 불안한 시장을 피하기 위해 ATR 및 RSI와 같은 지표를 포함합니다.
  2. 동적 매개 변수 최적화: 적응력을 향상시키기 위해 최근 시장 특성에 따라 매개 변수를 동적으로 조정합니다.
  3. 포지션 관리: 트렌드 강도와 자본에 따라 포지션을 조정하고 위험을 제어합니다.
  4. 스톱 로스 및 이윤 취득을 포함합니다. 단일 거래 위험을 줄이기 위해 합리적인 스톱 로스 수준과 이윤 목표를 설정하십시오.

요약

래리 윌리엄스 (Larry Williams) 3기 동적 이동 평균 거래 전략은 이중 EMA와 연속 촛불의 방향을 기반으로하는 트렌드 추종 전략이다. 매개 변수 최적화로 다른 시장에 적응할 수 있다. 그러나 전략 자체는 비교적 간단하며, 불안정한 시장에서 성능이 좋지 않으며, 위험 통제 조치가 부족하여 추가 최적화와 개선이 필요하다. 전략의 장단점을 고려할 때, 명확한 트렌드가 있는 시장에서 사용하기 위해 더 적합하며, 전반적인 성과와 안정성을 향상시키기 위해 위치 관리 및 위험 통제 조치와 결합되어야 한다.


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

//@version=5
strategy("Larry Williams 3 Periodos Editável de MarcosJr", overlay=true, process_orders_on_close=true)

// Parametrização do período do EMA
emaPeriodHighs = input.int(title="Highs Period", defval=3, minval=1, maxval=9999)
emaPeriodLows = input.int(title="Lows Period", defval=3, minval=1, maxval=9999)

// Parametrização da data de início e fim do período a ser coletado
startYear = input.int(title="Start Year", defval=2020)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startDay = input.int(title="Start Day", defval=1, minval=1, maxval=31)

endYear = input.int(title="End Year", defval=2020)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endDay = input.int(title="End Day", defval=31, minval=1, maxval=31)

// Convertendo data de início e fim para timestamp
startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// EMA
emaH = ta.ema(high, emaPeriodHighs)
emaL = ta.ema(low, emaPeriodLows)

// PLOT:
// Desenha as linhas EMA no gráfico
plot(emaH, color=color.green, linewidth=2)
plot(emaL, color=color.red, linewidth=2)

// Condições
inDateRange = true

// Verifica se houve mais de três candles consecutivos do mesmo sentido
checkThreeConsecutiveCandles = (close[0] > close[1] and close[1] > close[2] and close[2] > close[3]) or (close[0] < close[1] and close[1] < close[2] and close[2] < close[3])

if(close < emaL and inDateRange and checkThreeConsecutiveCandles and barstate.isconfirmed)
    strategy.entry("Long", strategy.long, comment="Long", when=strategy.position_size == 0)
if(close > emaH and inDateRange and checkThreeConsecutiveCandles and barstate.isconfirmed)
    strategy.close("Long", comment="Close Long")

// Fechar a operação no fechamento do pregão
if(strategy.position_size > 0 and na(time_close[0]))
    strategy.close("Long", comment="Close Long")


관련

더 많은