이 전략의 이름은
이 전략은 먼저 볼링거 밴드의 상부 및 하부 레일을 계산하고, 마지막 K 라인이 상부 또는 하부 레일을 뚫고 갈 것인지 판단합니다. 동시에, 마지막 K 라인의 엔티티가 이전 K 라인의 엔티티의 절반에 불과하는지 판단합니다. 두 조건이 충족되면 거래 신호가 발급됩니다.
구체적으로, 전략은 빨간 K-라인 엔티티가 작아지고, 하락 트렌드 동안 이전 K-라인 엔티티의 절반에 도달하는 상황을 이용하고, 마지막 K-라인
이 전략은 기술적 지표와 가격 행동 분석을 결합하여 잘못된 브레이크오프를 효과적으로 필터할 수 있습니다. 동시에 트렌드 중에 반복적인 거래를 피하여 인플렉션 포인트에서만 신호를 발산합니다. 또한 전략은 소규모 조정 후 인플렉션 포인트를 잠금하기 위해 K-라인 엔티티 수축의 특성을 활용합니다. 이러한 장점은 전략의 안정성과 수익성을 향상시킬 수 있습니다.
이 전략의 주요 위험은 볼링거 밴드의 부적절한 매개 변수 설정과 브레이크아웃 실패에 있다. 볼링거 밴드의 매개 변수가 너무 크거나 너무 작게 설정되면 잘못된 판단이 발생할 수 있다. 또한, 가격이 볼링거 밴드의 상부 또는 하부 레일을 통과하더라도 가짜 브레이크아웃이 될 수 있으며 실제 트렌드 역전을 형성하지 못한다. 이 모든 위험은 전략의 거래 손실로 이어질 수 있다. 이러한 위험을 줄이기 위해 볼링거 밴드의 매개 변수를 그에 따라 조정하거나 조합 검증을 위해 다른 지표를 추가할 수 있다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
경향과 변동을 더 효과적으로 포착하기 위해 볼링거 밴드 매개 변수를 최적화하십시오.
이윤을 확보하고 위험을 관리하기 위해 이동 스톱 손실을 추가합니다.
MACD, RSI와 같은 다른 지표를 포함하여 잘못된 신호를 필터링합니다.
머신러닝 알고리즘을 추가하고 빅데이터로 모델을 훈련시키고 전략 매개 변수와 지표 가중을 동적으로 최적화합니다.
이 전략은 가격 액션과 볼링거 밴드를 성공적으로 결합하여 낮은 위험과 비교적 높은 수익성을 얻을 수 있습니다. 소음의 간섭을 피하는 주요 지점에서만 신호를 발산합니다. 매개 변수 및 필터링 기준의 지속적인 최적화를 통해이 전략은 더 안정적인 알파를 얻을 것으로 예상됩니다. 양적 거래 관행에 신뢰할 수있는 템플릿을 제공합니다.
/*backtest start: 2022-12-13 00:00:00 end: 2023-12-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // main codebody taken from Trader Noro - Noro's Crypto Pattern for H1 // Intraday strategy- Exit at EOD at all cost strategy(title = "Price Action + Bollinger Strategy ",overlay=true) bar = close > open ? 1 : close < open ? -1 : 0 body = abs(close - open) avgbody = sma(body, 100) //calculate simple moving average bollinger bands b_sma = input(21,minval=1,title=" SMA candle") b_sma_no_of_deviations = 2.1 b_sma_signal = sma(close, b_sma) b_sma_deviation = b_sma_no_of_deviations * stdev(close, b_sma) b_sma_upper= b_sma_signal + b_sma_deviation b_sma_lower= b_sma_signal - b_sma_deviation up1 = body < body[1] / 2 and bar[1]==1 and bar == -1 and close[1] > b_sma_upper dn1 = body < body[1] / 2 and bar[1]==-1 and bar == 1 and close[1] < b_sma_lower up2 = false dn2 = false up2 := (up1[1] or up2[1]) and close < close[1] dn2 := (dn1[1] or dn2[1]) and close > close[1] plotarrow(up1 or up2 ? 1 : na, colorup = color.black, colordown = color.black, transp = 0) plotarrow(dn1 or dn2 ? -1 : na, colorup = color.black, colordown = color.black, transp = 0) strategy.entry("Buy", true, when = dn1) strategy.exit("exit", "Buy", profit = 3, loss = 1.5) strategy.entry("Short", false, when = up1) strategy.exit("exit", "Short", profit = 3, loss = 1.5)