이 전략은 다이프와 피크를 식별하기 위해 볼링거 밴드를 계산하고 전반적인 트렌드 방향을 결정하기 위해 장기 및 단기 이동 평균을 사용하여 거래를 따르는 자동 트렌드를 구현합니다. 핵심 아이디어는 지배적인 트렌드에 따라 다이프를 구매하고 피크를 판매하는 것입니다.
전략의 주요 구성 요소는 다음과 같습니다.
마감 가격과 표준편차를 기준으로 상단 및 하단 띠를 가진 볼링거 밴드를 계산합니다.
300주기 및 20주기 SMA를 사용하여 장기 및 단기 트렌드를 결정합니다.
긴 SMA가 상위이고 짧은 SMA가 올라갈 때 닫는 것이 하위 밴드 아래에서 깨지면 구매 신호를 생성합니다.
긴 SMA가 밑에 있고 짧은 SMA가 아래로 돌아가는 동안 상단 범위를 넘어서 닫을 때 판매 신호를 생성합니다.
OCO 명령어를 사용하여 손해를 멈추고 이익을 취합니다.
이 디자인을 통해 전략은 주요 트렌드 방향을 따라 자동으로
이 전략의 장점은 다음과 같습니다.
수동 판단 없이 자동 트렌드 검출
매입 기회를 위해 체계적으로 하락을 포착합니다.
수익을 창출하기 위한 최고 판매 기회를 체계적으로 파악합니다.
스톱 로스를 이용해서 효율적인 리스크 제어
승률을 높이기 위해 유효하지 않은 신호를 필터링합니다.
위치 조정에 따른 유연한 경향.
명확한 논리와 이해하기 쉽고 최적화하기 쉽습니다.
고려해야 할 주요 위험은:
부적절한 보안 선택은 트렌드 추적에 실패할 수 있습니다.
부적절한 매개 변수 조정으로 인해 오버 트레이딩 또는 놓친 트레이드가 발생할 수 있습니다.
갑작스러운 사건으로 인한 트렌드 반전은 더 큰 손실로 이어질 수 있습니다.
너무 단단한 스톱 손실은 과도한 스톱을 일으킬 수 있습니다.
유동성 부족으로 인해 완전한 실행이 불가능할 수 있습니다.
적당한 백테스팅 기간이 없는 과잉 조정
해결책은 다음과 같습니다. 명확한 트렌드를 가진 유동 주식을 선택하십시오. 매개 변수를 최적화하십시오. 뉴스를 조심하십시오.
전략을 최적화하는 몇 가지 방법:
볼링거 기간, 표준편차 곱셈자, 이동 평균 기간과 같은 매개 변수를 최적화합니다.
트레일링 스톱이나 이동 평균 스톱과 같은 스톱 손실 방법을 추가하여 위험을 더 잘 제어합니다.
자본 활용 효율성을 높이기 위해 핵심 수준에 기반한 포지션 크기를 포함합니다.
부피 필터를 추가하여 부피가 낮으면 유효하지 않은 브레이크를 피합니다.
상대적 강도 지표를 추가하여 구매/판매 편향을 결정합니다.
자동 매개 변수 조정 및 전략 평가에 대한 기계 학습을 도입합니다.
다른 전략과 결합하여 더 큰 안정성을 위해 다중 전략 포트폴리오를 만듭니다.
이러한 최적화는 전략의 성과와 안정성을 더욱 향상시킬 수 있습니다.
이 전략은 트렌드를 따라 체계적으로 하락을 구매하고 피크를 판매하는 명확하고 이해하기 쉬운 접근 방식을 제공합니다. 적절한 위험 통제와 함께 좋은 수익 잠재력을 가지고 있습니다. 매개 변수 조정, 스톱 로스 수정, 포지션 사이징 등을 통해 추가 개선이 가능합니다. 이 전략은 트렌드를 따르는 자동화 트렌드에 대한 견고한 기초로 작용합니다.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Buy Dip Sell Rip Strategy", overlay=true) source = close length = input(15, minval=1) mult = input(1.25, minval=0.001, maxval=50) longMAPeriod = input(300, minval=5) shortMAPeriod = input(20, minval=5) basis = sma(source, length) longMA = sma(source, longMAPeriod) prevLongMA = sma(close[1],longMAPeriod) shortMA = sma(source, shortMAPeriod) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (source > lower and source[1] < lower) if (longMA < source and shortMA>source) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.close("BBandSE") else strategy.cancel(id="BBandLE") if (source > upper and source[1] < upper) if (longMA > source and shortMA < source) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.close("BBandLE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)