이 전략의 주요 아이디어는 가중화 이동 평균 주위의 중요한 지원 / 저항 수준을 테스트하는 반전을 통해 포지션을 취하는 것입니다. 가격이 상승 / 하락하고 이동 평균을 테스트하기 위해 인기를 끌면 지원 / 저항 수준을 형성하고 반전 기회를 창출 할 가능성이 있습니다.
이 전략은 가중화 이동 평균 지표에 기반합니다. 우선 특정 길이의 WMA를 계산하고, 그 다음 가격이 WMA에서 어떤 범위에서 벗어날 수 있는지 모니터링합니다. 브레이크 아웃 거리가 임계치에 도달하면 화살표를 그리고 포지션을 열습니다. 장기간 이동하려면 가격이 먼저 어떤 범위에서 무너져야합니다. 짧게 이동하려면 가격이 먼저 어떤 범위에서 깨져야합니다. 브레이크를 통해 반전 신호를 형성하고 WMA
이 전략은 트레일 매개 변수를 통해 트레일 스톱 로스 및 고정 스톱 로스 사이의 옵션을 제공하므로 스톱 로스 범위를 조정하여 위험을 제어 할 수 있습니다. 또한 제한 주문으로 부분 수익을 잠금합니다. 또한 시간 필터는 포지션을 개척하기위한 특정 기간을 제한 할 수 있습니다.
가장 큰 장점은 개설 포지션을위한 주요 시장 전환점을 포착하기 위해 역전 설정과 이동 평균을 결합하는 데 있습니다. 역전 전략은 종종 좋은 승률과 위험 보상 비율을 가지고 있으며 위험을 제어하기가 쉽습니다. 이 전략은 또한 포괄적인 스톱 로스 메커니즘과 부분 수익 취득 방법을 갖추고 있으며 이는 위험을 줄이고 안정성을 향상시키는 데 더 도움이됩니다.
이동 평균에 기반을 두고 있기 때문에, WMA 길이, 브레이크아웃 범위 등과 같은 값을 조정하여 다양한 시장에서 적응력을 테스트하여 매개 변수를 최적화 할 수있는 충분한 공간이 있습니다.
가장 큰 위험은 실패한 반전입니다. 가격이 반전 신호를 형성 한 후 스톱 로스를 유발하거나 이익을 취하지 못하면 원래 방향으로 계속 실행되면 상당한 부동 손실이 발생할 수 있습니다.
또한 매개 변수 최적화에 크게 의존합니다. 부적절한 매개 변수 설정은 가격 반전 시기를 쉽게 놓칠 수 있거나 잘못된 신호를 생성 할 수 있습니다. 충분한 백테스트를 통해 시장 행동의 올바른 이해와 매개 변수 선택의 신중한 평가가 필요합니다.
신호 품질과 정확성을 향상시키기 위해 더 많은 지표가 도입될 수 있다. 예를 들어, 가격 반전 전에, 특정 최근 기간의 인크리멘트 값, 특히 단기 인크리멘트 데이터는 가격 변동 패턴을 특징짓기 위해 검사될 수 있다. 또는 일부 양적 요인을 추가하여 다중 요인 모델링을 위해 가격 동력, 변동성 등을 감지할 수 있다.
기계 학습 방법은 또한 역사적인 거래 신호와 가격 데이터를 기반으로 단기 가격 움직임을 예측하는 데 테스트 할 수 있습니다. 이는 잘못된 신호를 필터링하고 신호 품질을 향상시키는 데 도움이됩니다.
또한 일부 적응 최적화 메커니즘을 구현 할 수 있습니다. 실제 거래 결과에 따라 매개 변수 또는 규칙 무게는 전략의 자기 최적화 및 ENO를 실현하기 위해 동적으로 조정 될 수 있습니다.
이 전략의 전반적인 운영은 안정적입니다. 합리적인 매개 변수 공간과 시장 환경에서 상당한 수익을 얻을 수 있습니다. 가장 큰 장점은 제어 가능한 위험과 최적화 잠재력입니다. 다음 단계의 노력은 신호 품질을 향상시키고 적응성 최적화 기능을 통합하는 데 초점을 맞출 것입니다. 지속적인 개선으로이 전략은 투자 포트폴리오에서 매력적인 선택이 될 수 있다고 믿어집니다.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-22 08:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="WMA Breakout",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02) len = input(20, minval=1, title="Length") src = input(close, title="Source") out = wma(src, len) price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001) price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001) trail = input(true, "Trailing Stop(checked), Market stop(unchecked)") stop = input(10, "Stop (in ticks)", step=1) limit = input(5, "Limit Out", step=1) //size = input(1, "Limit Position Size (pyramiding)", minval=1) timec = input(true, "Limit Time of Day (Buying Side)") //Time Session sess = input("1600-0500", "Start/Stop trades (Est time)") t = time(timeframe.period, sess) //plots plot(wma(src,len)) z = if low+price_drop<out (out-low) plotarrow(z, colorup=red) a = if high-price_climb>out (high-out) plotarrow(a, colorup=lime) av=wma(src,len) //Orders if(timec) strategy.entry("Enterlong", long=true, when=z and t>1) else strategy.entry("Enterlong", long=true, when=z) if(trail) strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Enterlong", profit=limit, loss = stop ) if(timec) strategy.entry("Entershort", long=false, when=a and t>1) else strategy.entry("Entershort", long=false, when=a) if(trail) strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Entershort", profit=limit, loss = stop )