동적 이동 평균의 돌파구 진입에 기초한 양적 거래 전략

저자:차오장, 날짜: 2024-02-18 09:53:48
태그:

img

전반적인 설명

이 전략의 이름은 동적 이동 평균 돌파구 진입 및 고정 수익 취득/손실 중지 출구에 기반한 양적 거래 전략이다. 이 전략의 주요 아이디어는 매 월요일 115 기간의 허스 동적 이동 평균 이하의 폐쇄 가격으로 긴 포지션을 열고, 그 후 매주 수요일에 무조건적으로 포지션을 닫는 것입니다. 수익 목표 및 중지 손실의 고정 비율이 동시에 설정됩니다.

원칙

이 전략은 주로 Hull Moving Average의 지표 신호와 주기적인 거래 규칙에 기초하여 설계되었습니다.

첫째, 매 월요일 거래 세션 동안, 닫기 가격이 115 기간 헐 이동 평균 이하인 경우 긴 포지션이 열릴 것입니다. 일반적인 이동 평균에 비해, 헐 이동 평균은 가격 변화에 더 빠르게 반응하고 추세를 더 민감하게 식별합니다. 따라서, 지표 신호는 시장 진입의 정확성을 향상시킬 수 있습니다.

두 번째, 포지션은 매주 수요일 거래 세션 동안 무조건적으로 닫을 것입니다. 이 주기적인 운영 접근 방식은 재래시적인 사건의 영향을 받지 않도록 할 수 있으며 인출의 확률을 줄일 수 있습니다. 한편, 모든 거래의 위험과 보상을 제어하기 위해 고정된 스톱 로스 비율과 수익 목표가 설정됩니다.

마지막으로, 각 거래 보유 기간은 상대적으로 짧고 거래 빈도가 높기 때문에 어느 정도 포지션을 조정하고 단일 거래 위험을 줄일 수 있습니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. Hull Moving Average를 입시 신호 지표로 사용하는 것은 시장 진입 시기의 정확성을 향상시키고 트렌드 기회를 포착합니다.

  2. 주기적인 출구 방법은 비합리적인 행동으로 인한 위험을 피하고 마감 가능성을 줄일 수 있습니다.

  3. 고정된 이익 목표 및 스톱-러스 포인트는 각 거래의 위험-이익 비율을 효과적으로 제어 할 수 있습니다.

  4. 높은 거래 빈도는 포지션을 조정하고 단일 거래 위험을 감소시키는 데 유용합니다.

  5. 거래 규칙은 간단하고 이해하기 쉽고 구현하기 쉽기 때문에 알고리즘적 양적 거래에 적합합니다.

위험 분석

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 시장에서의 장기적인 통합은 진입 후 포착 될 확률이 높아질 수 있습니다.

  2. 고정된 수익 목표 및 스톱 로스 포인트는 유연성이 부족하고 너무 일찍 또는 너무 늦게 지점을 종료 할 수 있습니다.

  3. 주기적인 출입은 우연한 사건이 발생하면 엄청난 손실을 초래할 수 있습니다.

  4. 빈번한 거래는 비용과 미끄러진 영향을 증가시킵니다.

  5. 부적절한 매개 변수 설정 (정기 번호와 같이) 은 전략 성과에 영향을 줄 수 있습니다.

위의 위험을 줄이기 위해 몇 가지 최적화 조치가 고려 될 수 있습니다.

  1. 시장 진입 전에 시장 상황을 판단하여 통합 단계에 진입하지 않도록하십시오.

  2. 이윤 취득 및 스톱 로스 (stop loss) 에 대한 동적 또는 여러 고정 비율을 설정합니다.

  3. 극심한 변동성을 피하기 위해 중요한 사건에 대해 거래를 중단하십시오.

  4. 비용과 미끄러짐을 줄이기 위해 적절한 거래 빈도를 낮추십시오.

  5. 매개 변수 설정을 최적화하고 안정성 테스트를 수행하여 전략을 더 안정적으로 만듭니다.

최적화 방향

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

  1. 기계 학습 모델을 사용하여 더 정확한 신호를 위해 이동 평균의 매개 변수를 동적으로 최적화합니다.

  2. 더 복잡한 입출입 규칙을 설계하기 위해 여러 지표를 조합해보세요.

  3. 다른 기간과 시장 환경에 따라 적응성 있는 수익 및 스톱-러스 메커니즘을 설계합니다.

  4. 더 나은 자본 관리를 위해 위험 관리 모델을 통합합니다.

  5. 주식 분할과 같은 이벤트를 원활하게 처리할 수 있는 디자인 권한 조정 모듈

  6. 실제 거래 확인 모듈을 추가하여 실시간 시장에서 전략의 성능을 테스트합니다.

이 전략은 기계 학습, 지표 포트폴리오, 적응성 이익 취득/손실 중지, 위험 관리 및 기타 방법을 유기적으로 결합함으로써 더 강력한 안정성과 수익성을 달성 할 수 있습니다. 한편, 실제 거래 검증 메커니즘을 추가하는 것도 전략을 더욱 완성하는 데 중요합니다. 이것들은이 전략의 주요 최적화 방향입니다.

결론

이 전략은 헐 동적 이동 평균 지표 신호 입력 및 일정한 주기 출구의 아이디어를 기반으로 설계되었습니다. 단 하나의 거래의 수익 취지와 스톱 손실을 제어하는 동안 정확한 신호 및 낮은 인출 확률과 같은 장점이 있습니다. 그러나 함락 및 부적절한 수익 취출 / 스톱 손실 설정과 같은 문제도 있습니다. 미래 최적화 방향은 입력을위한 기계 학습 및 더 복잡한 멀티 지표 조합을 도입하고, 적응적 인 수익 취출 / 스톱 손실 메커니즘을 설계하고, 권리 조정 및 실제 거래 확인 모듈을 추가하여 이러한 조치를 포괄적으로 채택함으로써이 전략의 안정성과 수익성이 향상 될 것입니다.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gnatskiller

//@version=5
strategy("Strategia HMA + LUN/MER", overlay=true)

// Inputs: stoploss %, takeProfit %
stopLossPercentage = input.float(defval=0.8, title='StopLoss %', minval=0.1, step=0.2) / 100
takeProfit = input.float(defval=1.5, title='Take Profit %', minval=0.3, step=0.2) / 100

// Calculate HMA 115
hma115 = ta.hma(close, 115)

// Exit and Entry Conditions - Check current day, session time, and price below HMA 115
isLong = dayofweek == dayofweek.monday  and not na(time(timeframe.period, "1000-1101")) and close < hma115
isExit = dayofweek == dayofweek.wednesday and not na(time(timeframe.period, "1000-1101"))

// Calculate Stoploss and Take Profit values
SL = strategy.position_avg_price * (1 - stopLossPercentage)
TP = strategy.position_avg_price * (1 + takeProfit)

// Strategy Enter, and exit when conditions are met
if isLong
    strategy.entry("Enter Long", strategy.long)
if strategy.position_size > 0 
    if isExit
        strategy.close("Enter Long", comment="Exit")
        strategy.exit("Exit", "Exit", stop=SL, limit=TP)

// Plot Stoploss and TakeProfit lines
plot(strategy.position_size > 0 ? SL : na, style=plot.style_linebr, color=color.red, linewidth=2, title="StopLoss")
plot(strategy.position_size > 0 ? TP : na, style=plot.style_linebr, color=color.green, linewidth=2, title="TakeProfit")

// Plot HMA 115
plot(hma115, color=color.blue, title="HMA 115")


더 많은