
이 전략은 가격의 최저 지점을 추적하여, 가격이 하락하면 즉시 더 많은 것을 하고, 동적으로 스톱 및 스톱 손실 지점을 추적하여 수익을 고정하고 위험을 제어한다.
이 전략의 핵심 논리는 ATR 지표를 사용하여 동적 스톱 및 스톱 손실 위치를 계산하는 것입니다. 구체적으로, 종결 가격이 지난 n 일간의 최저 가격보다 낮을 때 (코드에서 7 일으로 설정) 다중 신호를 유발합니다. 다중 상위 포지션을 보유하는 동안, ATR 지표를 기반으로 동적 스톱 및 스톱 손실 가격을 계산합니다 (ATR 곱하기 파라미터를 통해 설정) 그리고 차트에 실시간으로 표시됩니다.
이 전략은 가장 간단한 저흡입 다중 전략과 동적 중지 손해 중지의 아이디어를 적용하여 기회를 잡는 동시에 위험을 통제합니다.
이 전략의 주요 장점은 다음과 같습니다.
동적 ATR 지표를 사용하여 스톱로스를 설정하면 시장의 변동 정도에 따라 손실 위치를 조정할 수 있으며, 스톱로스가 고정되어 불필요한 손실을 초래하거나 더 많은 수익을 얻을 수있는 기회를 잃지 않도록 할 수 있습니다. 이것은 이 전략의 가장 큰 장점입니다.
낮은 흡수 다중 전략은 시장의 충격적 조정 시 높은 승률을 보이며, 근본적으로 좋은 주식은 단기 이상적으로 지지점 아래로 떨어질 때 반발 및 수정이 있을 가능성이 높습니다.
ATR 값으로 스톱 스톱 손실 비율을 추정하는 것이 적합하며, 시장 환경과 개인의 위험 감수성에 따라 유연하게 설정할 수 있다.
코드 논리는 간단하고 명확하며 이해하기 쉽으며, 파라미터 설정도 비교적 직관적입니다. 전략 학습의 예시로 적합하다.
이 전략의 주요 위험은 다음과 같습니다.
저흡입 반발의 규모와 강도를 판단할 수 없으므로, 일정 수익 틈이 존재할 위험이 있다. ATR 지표 파라미터를 조정하여 다른 중지 팽창을 설정할 수 있다.
수축된 위험이 있다. 가격이 지지율을 넘어선 후 계속 하락하면 큰 손실 위험에 직면할 것이다. 단일 손실을 줄이기 위해 포지션 규모를 적절히 축소하고 ATR 상쇄 배수를 줄일 수 있다.
정지 지점 너무 가까이 있으면 이 밖으로 날 수도 있다. 불필요한 정지를 막기 위해 ATR 배수를 적절히 풀어주어야 한다.
데이터 적합성을 재검토한다. 다양한 시장 환경에서의 데이터를 테스트하고 충격 비용 설정을 해야 한다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
지원비트 및 반발신호 판단을 최적화한다. KDJ 지표 또는 부린띠 통로 등과 같이 반발신호 판단을 위해 보다 세밀하고 신뢰할 수 있는 지표를 사용할 수 있다.
포지션 관리 전략을 최적화한다. 개선된 포지션 관리 모듈을 통해 시장 변동률 등에 따라 포지션을 동적으로 조정할 수 있다.
트래킹 스톱로스 모듈을 설정할 수 있다. 가격운행이 일정 정도가 되면 스톱로스 거리를 강화하기 시작하고, 수익의 일부를 잠금한다.
동방향 검증 모듈을 추가한다. 주식을 구매하려는 지점이나 대시장도 동시적으로 지지 지점으로 내려갈 때 구매 신호의 신뢰성을 추가한다.
이 전략은 낮은 흡입과 다중 사고를 채택하고, ATR 동적 추적과 결합한 스톱 스로드 메커니즘을 사용하여 시장을 역회복하는 기회를 효과적으로 잡을 수 있으며, 또한 스톱 스로드를 사용하여 거래 위험을 관리 할 수 있습니다. 최적화 공간이 넓지만, 전략 학습 입문 스타일은 간단하고 이해하기 쉽습니다.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © racer8
//@version=4
strategy("Buy-The-Dip", overlay=true)
atn = input(15, "ATR Period")
atr = sma(tr,atn)[1]
bought = strategy.position_size[0] > strategy.position_size[1]
slm = input(2.0,"ATR SL Multiple",minval=0)
StopPrice = strategy.position_avg_price - slm*atr // determines stop loss's price
FixedStopPrice = valuewhen(bought,StopPrice,0) // stores original StopPrice
plot(FixedStopPrice,"Stop Loss",color=color.red,linewidth=2,style=plot.style_cross)
tpm = input(1.0,"ATR TP Multiple",minval=0)
TakePrice = strategy.position_avg_price + tpm*atr // determines Take Profit's price
FixedTakePrice = valuewhen(bought,TakePrice,0) // stores original TakePrice
plot(FixedTakePrice,"Take Profit",color=color.green,linewidth=2,style=plot.style_cross)
nn = input(7,"Channel Length")
ll = lowest(low,nn)
if close<ll[1]
strategy.entry("Buy",strategy.long)
if strategy.position_size > 0
strategy.exit(id="XL SL", stop=FixedStopPrice, limit=FixedTakePrice) // commands stop loss order to exit!
plot(ll,color=color.orange)