적응형 ATR 이동 평균 거래 전략

저자:차오장, 날짜: 2023-11-02 16:51:14
태그:

img

전반적인 설명

이 전략은 시장의 추세를 발견하고 추세를 따라 거래하기 위해 적응형 ATR 이동 평균 지표와 추세를 따르는 것을 결합합니다. 이 전략은 Hull 이동 평균을 사용하여 ATR를 매끄럽게하고 ATR 이동 평균을 매끄럽게 형성하고, 그 다음 ATR 이동 평균과의 가격 관계에 기반하여 거래 신호를 생성합니다. ATR 이동 평균은 시장 소음을 효과적으로 필터하고 중요한 추세를 식별 할 수 있습니다. 이 전략은 또한 거래 당 위험 / 보상 비율을 제어하기 위해 고정 스톱 로스를 설정하고 수익 포인트를 취합니다. 전반적으로이 전략은 적응형 ATR 이동 평균에 의해 확인 된 추세를 따라 엄격한 위험 관리를 통해 안정적인 수익 성장을 달성하는 것을 목표로합니다.

전략 논리

이 전략의 핵심 지표는 ATR 이동 평균이다. ATR은 시장 변동성과 가격 변동을 측정하는 중요한 변동성 측정 도구이다. ATR 이동 평균은 추세를 결정하기 위해 가격과 비교하기 위해 이동 평균 선으로 형성된 평탄한 ATR이다.

구체적으로, 전략은 먼저 True Range를 계산하고, 이는 하루의 높은 가격과 낮은 가격의 차이이며, 이전 클로즈와 현재 최고/최저 가격 사이의 최대 차이입니다. 그 다음 Hull 이동 평균 방법을 적용하여 TR를 매끄럽게하고 적응 가능한 ATR 이동 평균을 얻을 수 있습니다. ATR 이동 평균은 고주파 시장 소음을 필터링하고 중요한 가격 변동을 캡처 할 수 있습니다.

ATR 이동 평균을 계산한 후, 전략은 가격을 ATR 이동 평균과 비교합니다. 가격이 ATR 이동 평균을 넘으면 상승 추세를 신호하고 전략은 길어집니다. 가격이 ATR 이동 평균을 넘으면 하락 추세를 신호하고 전략은 짧습니다.

또한, 고정 스톱 로스 및 취익 범위는 각 거래 후에 설정됩니다. 가격이 스톱 로스 수준에 도달하면 거래는 중단됩니다. 가격이 취익 수준에 도달하면 이익이 취됩니다. 이것은 손실을 제한하고 각 거래의 이익을 잠금합니다.

요약하자면 이 전략은 적응성 있는 ATR 이동평균과 엄격한 위험관리를 결합하여 중요한 추세를 따라가고 거래당 손실을 통제하여 안정적인 수익 성장을 달성합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 적응 가능한 ATR 이동 평균을 사용하여 중요한 경향을 효과적으로 식별하고 시장 소음을 필터하여 함락되지 않도록합니다.

  2. 더 부드러운 ATR 이동 평균을 계산하기 위해 Hull 이동 평균 방법을 적용하여 높은 주파수 변동에 의해 오해를 피합니다.

  3. 일정한 스톱 로스 설정 및 수익을 취하여 거래당 손실을 제한하고 수익을 고정하여 위험/이익 비율을 보장합니다.

  4. 트렌드를 따라 거래 스타일은 트렌드를 계속 포착하고 수익 잠재력을 증가시킬 수 있습니다.

  5. 단순하고 명확한 논리, 이해하기 쉬운 유연한 매개 변수 설정은 다양한 제품과 시장에 적합합니다.

  6. 트렌드를 따라가기 위해 모든 제품에 적용할 수 있습니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. ATR 이동 평균에서 잘못된 신호가 발생할 가능성이 있습니다. 가격은 격렬하게 변동하여 ATR 이동 평균 신호에 오류를 일으킬 수 있습니다.

  2. 너무 긴 스톱 손실은 스톱 손실의 가능성을 증가시킵니다. 스톱 손실이 충분한 가격 움직임을 허용하는지 확인하십시오.

  3. 고정 취업이익은 너무 일찍 종료 될 수 있습니다. 전체 트렌드를 파악할 수 없습니다. ATR에 기반한 동적 취업이익을 고려하십시오.

  4. 갑작스러운 가격 상승이 스톱 로스를 달성합니다. 큰 손실을 방지하기 위해 그러한 이벤트 중에 거래를 중단해야합니다.

  5. 트렌드가 역전될 때 타이밍에 탈퇴하지 않으면 역전 트렌드로 인한 손실이 발생할 수 있습니다. 트렌드 역전 신호를 식별해야합니다.

  6. 매개 변수는 다른 제품과 시장에 최적화되어야합니다. 그렇지 않으면 전략 성과에 영향을 줄 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. ATR 이동평균에 영향을 미치는 ATR 기간과 평형화 매개 변수를 포함하여 ATR 이동평균의 매개 변수를 최적화합니다.

  2. 스톱 손실 및 수익 전략을 최적화하십시오. 고정 값 대신 ATR에 기반한 동적 스톱 및 타겟을 고려하십시오.

  3. 다른 지표를 결합하여 트렌드 반전을 결정하는 규칙을 추가하여 반전에 갇히지 않도록하십시오.

  4. 최적의 매개 변수를 찾기 위해 다양한 제품과 시장 환경에 대한 매개 변수를 테스트하고 최적화합니다.

  5. 극단적인 사건의 검출을 추가하고, 손실을 통제하기 위해 엄청난 가격 상승이 발생했을 때 거래를 중단합니다.

  6. 출입 시기를 최적화하고, 위험을 줄이기 위해 탈출을 대신 철회로 출입하는 것을 고려하십시오.

  7. 파라미터 조합 최적화, ATR 기간과 매끄러운 파라미터의 다양한 조합을 테스트하여 가장 적합한 것을 찾습니다.

결론

요약하자면,이 전략은 트렌드를 식별하기 위해 적응형 ATR 이동 평균을 사용하고 고정 스톱 로스로 트레이드하고 이익을 취합니다. ATR 이동 평균은 트렌드를 효과적으로 식별하고 고정 스톱 및 목표를 위험 / 보상을 제어합니다. 이점은 간단하고 명확한 논리, 이해하기 쉽고 매개 변수 조정을 통해 다른 제품에 적응 할 수 있습니다. 그러나 위험에는 잘못된 신호, 잘못된 스톱 손실 설정이 있습니다. 향후 개선은 ATR 이동 평균 매개 변수를 최적화하고, 스톱 로스로 / 수익을 취하는 전략, 트렌드 역전 탐지 등을 추가하여 전략 성능을 더욱 향상시킬 수 있습니다.


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

//@version=3
strategy("ATR(Hull)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0)
length = input(title="Length", defval=14, minval=1)
price = input(close)
SL = input(50, title="Stop loss")
TP = input(150, title="Take profit")
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) 
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) 
FromYear = input(defval = 2018, title = "From Year", minval = 2017) 
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) 
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) 
ToYear = input(defval = 9999, title = "To Year", minval = 2017) 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) 
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) 
window() => true
p=price[1]
func_hma(style, length)=>
    return = wma((2*wma(p,length/2))-wma(p,length),round(sqrt(length)))
ATR=func_hma(tr(true), length)    
plot(ATR[0], title="ATR1",color=green,transp=0)
plot(ATR[1], title="ATR2",color=red,transp=0)
if (ATR>ATR[1])
    strategy.entry("long",strategy.long,comment="Long",when=window())
if (ATR<ATR[1])
    strategy.entry("short",strategy.short,comment="Short",when=window())
//strategy.close_all(when=strategy.openprofit<-eqSL and window())
//strategy.close_all(when=strategy.openprofit>eqTP and window())
strategy.exit("exit", "long", profit = TP, loss = SL)
strategy.exit("exit", "short", profit = TP, loss = SL)

더 많은