Larry Williams 3주기 동적 이동 평균 거래 전략

EMA
생성 날짜: 2024-05-11 17:35:22 마지막으로 수정됨: 2024-05-11 17:35:22
복사: 6 클릭수: 1109
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Larry Williams 3주기 동적 이동 평균 거래 전략

개요

이 글은 래리 윌리엄스 3주기 동적 평균을 기반으로 한 거래 전략에 대해 소개한다. 이 전략은 두 개의 지수 이동 평균 ((EMA) 를 사용하여 가격 추세를 포착하고, 3개의 연속적인 K선 종결 가격이 EMA를 돌파할 때 거래 신호를 발생시킨다. 전략의 매개 변수는 조정 가능하며, 다른 시장과 주기에는 적용된다.

전략 원칙

  1. 두 개의 EMA를 계산한다: 종전 가격의 높은 가격의 EMA와 낮은 가격의 EMA, 주기가 조정된다.
  2. 현재 시간이 설정된 거래 영역 안에 있는지 판단하기.
  3. 최근 3개의 K선들이 연속적으로 EMA 위 (상향) 또는 아래 (하향) 에 수렴되었는지 판단한다.
  4. 만약 3이 설립되고 포지션이 0이면, 더 많은 포지션을 열고, 만약 3의 반대 상황이 설립되고 더 많은 포지션을 보유하고 있다면, 평점 포지션이다.
  5. 매일매일 거래가 종료될 때 지분을 보유한 사람은 평점이다.

전략적 이점

  1. 매개 변수 유연성: EMA 주기, 거래 시간 간격 등 매개 변수들은 다른 시장에 적응할 수 있다.
  2. 트렌드 추적: EMA와 연속 K 선의 방향을 사용하여 트렌드를 판단하여 트렌드 상황을 파악하는 데 도움이됩니다.
  3. 적당한 시간 내에 중지: 역동성이 EMA를 뚫을 때 즉시 평지, 제어 후퇴.
  4. 하루 중 평점: 평점 때 평점, 하룻밤의 위험을 피한다.

전략적 위험

  1. 시장의 위기 위험: 트렌드가 불투명할 때 자주 거래하면 손실이 발생할 수 있다.
  2. 매개 변수 위험: 매개 변수가 시장에 따라 큰 차이를 보이고, 타겟팅 최적화가 필요합니다.
  3. 폭포의 위험: 폭포는 전략적 폭포가격으로 이어질 수 있으며, 위험은 증가한다.

전략 최적화 방향

  1. 트렌드 필터: ATR, RSI 등의 지표가 트렌드 강도를 판단하는데 도움을 주며, 흔들리는 시장을 피한다.
  2. 동적 변수 최적화: 최근 시장 특성에 따라 동적으로 변수를 조정하여 적응력을 높인다.
  3. 포지션 관리: 동향 강점과 자금 상황에 따라 포지션을 조정하고 위험을 통제한다.
  4. 스톱로스 을 추가: 합리적인 스톱로스 레벨과 스톱로스 목표를 설정하여 단일 거래의 위험을 낮추십시오.

요약하다

래리 윌리엄스 3주기 동적 평행선 거래 전략은 쌍 EMA와 연속 K선 방향에 기반한 트렌드 추적 전략으로, 변수 최적화를 통해 다양한 시장에 적응할 수 있다. 그러나 전략 자체는 비교적 간단하며, 불안정한 시장에서 좋지 않은 성능을 보이고, 풍력 조절 조치가 부족하며, 추가적인 최적화와 개선이 필요하다. 전략의 장단점을 종합적으로 고려하면, 이 전략은 트렌드가 뚜렷한 시장에서 사용하기에 더 적합하며, 포지션 관리 및 위험 제어 조치가 조화를 이루며, 전반적인 성능과 안정성을 향상시킨다.

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