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

적응형 가격 경신 이동 평균 거래 전략

저자:차오장, 날짜: 2024-09-26 16:12:36
태그:HMASLTP

img

전반적인 설명

어댑티브 프라이스 크로싱 이동 평균 트레이딩 전략 (Adaptive Price-Crossing Moving Average Trading Strategy) 은 헐 이동 평균 (Hull Moving Average, HMA) 을 기반으로 한 양적 거래 방법이다. 이 전략은 HMA와 가격 크로스오버를 사용하여 구매 및 판매 신호를 생성하며, 위험과 보상을 관리하기 위해 고정 스톱 로스 및 영업 수준을 구현한다. 전략은 거래를 유발하기 위해 가격 크로스오버와 결합하여 104 기간 HMA를 주요 지표로 사용합니다.

전략 원칙

이 전략의 핵심은 Hull Moving Average (HMA) 를 주요 지표로 사용하는 것입니다. HMA는 지연을 줄이는 동시에 가격 변화에 빠르게 반응하는 고급 이동 평균입니다. 전략 논리는 다음과 같습니다.

  1. 104기 HMA를 계산합니다.
  2. 가격이 HMA를 넘을 때 긴 포지션을 개척합니다.
  3. 가격이 HMA 아래로 넘어가면 짧은 포지션을 개척합니다.
  4. 고정 스톱 로스 ($1.25) 및 취리 ($37.5) 레벨을 각 거래에 설정합니다.
  5. 트레이드마다 2개의 계약을 사용하세요.

이 전략은 오픈 포지션을 추적하여 기존 포지션이 활성화되는 동안 새로운 포지션이 열리지 않도록합니다. 거래가 종료되면 시스템이 새로운 거래 신호가 효력을 발휘하도록 플래그를 재설정합니다.

전략적 장점

  1. 적응력: HMA는 시장 변화에 빠르게 적응하여 잘못된 신호를 줄입니다.
  2. 리스크 관리: 고정된 스톱 로스 및 리프트 테이크 레벨을 사용하여 각 거래에 대한 위험을 효과적으로 제어합니다.
  3. 단순함: 거래 규칙은 명확하고 이해하기 쉽고 실행하기 쉽습니다.
  4. 양방향 거래: 상승과 하락의 기회를 포착하여 수익 잠재력을 증가시킵니다.
  5. 자동화: 전략은 완전히 자동화 될 수 있으며 인간의 개입과 정서적 영향을 줄일 수 있습니다.

전략 위험

  1. 빈번한 거래: 불안정한 시장에서 과도한 거래 신호를 생성하여 거래 비용을 증가시킬 수 있습니다.
  2. 고정 스톱 로스/프로피트 취득: 모든 시장 조건에 적합하지 않을 수 있으며, 일부 경우 너무 일찍 종료하거나 큰 트렌드를 놓칠 수 있습니다.
  3. 단일 지표에 의존: HMA에만 의존하는 것은 특정 시장 환경에서 낮은 성과를 낼 수 있습니다.
  4. 지연: HMA가 지연을 줄이기는 하지만 급격한 전환점에 여전히 불충분하게 반응할 수 있습니다.
  5. 시장 환경 필터링 부족: 전체 시장 추세나 변동성을 고려하지 않으며, 잠재적으로 부적절한 시장 조건에서 거래됩니다.

전략 최적화 방향

  1. 추가 지표를 도입: 신호를 확인하고 정확도를 향상시키기 위해 다른 기술 지표 (RSI 또는 MACD와 같은) 와 결합하십시오.
  2. 동적 스톱-러스/트랙-프로프트: 다른 시장 환경에 적응하기 위해 시장 변동성에 따라 스톱-러스 및 트랙-프로프트 수준을 조정합니다.
  3. 시장 필터 추가: 불리한 시장 조건에서 거래를 피하기 위해 트렌드 강도 또는 변동성 필터를 포함합니다.
  4. HMA 매개 변수를 최적화: 특정 시장에 가장 적합한 매개 변수를 찾기 위해 다른 HMA 기간을 테스트하십시오.
  5. 포지션 관리 구현: 시장 위험 및 계정 크기에 따라 거래 크기를 동적으로 조정합니다.
  6. 시간 필터를 추가하십시오. 중요한 경제 데이터 발표와 같은 높은 시장 변동성 기간 동안 거래를 피하십시오.

요약

어댑티브 프라이스 크로싱 이동 평균 트레이딩 전략 (Adaptive Price-Crossing Moving Average Trading Strategy) 은 간단하면서도 효과적인 양적 거래 방법이다. 허스 이동 평균의 장점을 활용함으로써 이 전략은 고정된 위험 관리 조치를 통해 자본을 보호하면서 시장 트렌드를 파악할 수 있다. 전략에는 몇 가지 잠재적인 위험이 있지만, 지속적인 최적화를 통해 더 향상되고 적응될 수 있다. 자동화 거래 솔루션을 추구하는 트레이더들에게는, 이것은 고려할 가치가 있는 기본적인 전략 프레임워크이다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SHIESTD", overlay=true)

// Function to calculate Hull Moving Average (HMA)
hma(src, length) =>
    wma1 = ta.wma(src, length)
    wma2 = ta.wma(src, length / 2)
    hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length)))
    hma

// Parameters
hma_length = 104

// Calculate Hull Moving Average
hma_value = hma(close, hma_length)

// Plot HMA
plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2)

// Define SL and TP values in dollars
long_sl_amount = 1.25
long_tp_amount = 37.5
short_sl_amount = 1.25
short_tp_amount = 37.5

// Number of contracts
contracts = 2

// Function to calculate SL and TP prices based on entry price and dollar amounts
long_sl_price(entry_price) =>
    entry_price - long_sl_amount

long_tp_price(entry_price) =>
    entry_price + long_tp_amount

short_sl_price(entry_price) =>
    entry_price + short_sl_amount

short_tp_price(entry_price) =>
    entry_price - short_tp_amount

// Trading conditions
price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value)

// Long and Short Conditions based on price intersecting HMA
long_condition = ta.crossover(close, hma_value)
short_condition = ta.crossunder(close, hma_value)

// Track open positions
var bool long_open = false
var bool short_open = false

// Handle Long Positions
if (long_condition and not long_open)
    entry_price = close
    strategy.entry("Long", strategy.long, qty=contracts)
    strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price))
    long_open := true

// Handle Short Positions
if (short_condition and not short_open)
    entry_price = close
    strategy.entry("Short", strategy.short, qty=contracts)
    strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price))
    short_open := true

// Reset flags when the position is closed
if (strategy.opentrades == 0)
    long_open := false
    short_open := false


관련

더 많은