
이 전략은 최근 일정 주기 동안의 거래량의 최고값과 최저값을 계산함으로써, 적응된 변동 범위를 형성하고, 현재 주기에서의 거래량이 이 범위를 돌파할 때 거래 신호를 발생시킨다. 신호 방향은 음의 결정에 따라, 간단하고 효과적인 추적 시장의 갑작스러운 대의 전략에 속한다.
핵심 논리는 최근 N 주기 동안의 양과 음의 거래량의 최대 최소 값을 계산하여 자기 적응 변동 범위를 형성한다. 이 범위를 기반으로 그 시기에 돌파구가 발생했는지 판단한다. 동시에 신양선 신호를 통합하여 판단을 완료한다.
계산 과정은 다음과 같습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
다른 지표 필터링과 함께 매개 변수 주기 조정으로 최적화 할 수 있습니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
이 전략은 전반적으로 간단하고 실용적이며, 자기 적응 범위와 수량 가치 합성 판단을 통해 급격한 일방적인 상황을 효과적으로 포착할 수 있다. 그러나 또한 약간의 잘못된 정보의 위험이 있으며, 적절한 매개 변수를 조정하고 다른 도구의 사용과 함께 사용해야, 최대한의 효과를 낼 수 있다.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © EvoCrypto
//@version=4
strategy("Ranged Volume Strategy - evo", shorttitle="Ranged Volume", format=format.volume)
// INPUTS {
Range_Length = input(5, title="Range Length", minval=1)
Heikin_Ashi = input(true, title="Heikin Ashi Colors")
Display_Bars = input(true, title="Show Bar Colors")
Display_Break = input(true, title="Show Break-Out")
Display_Range = input(true, title="Show Range")
// }
// SETTINGS {
Close = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
Open = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
Positive = volume
Negative = -volume
Highest = highest(volume, Range_Length)
Lowest = lowest(-volume, Range_Length)
Up = Highest > Highest[1] and Close > Open
Dn = Highest > Highest[1] and Close < Open
Volume_Color =
Display_Break and Up ? color.new(#ffeb3b, 0) :
Display_Break and Dn ? color.new(#f44336, 0) :
Close > Open ? color.new(#00c0ff, 60) :
Close < Open ? color.new(#000000, 60) : na
// }
//PLOTS {
plot(Positive, title="Positive Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4)
plot(Negative, title="Negative Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4)
plot(Display_Range ? Highest : na, title="Highest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2)
plot(Display_Range ? Lowest : na, title="Lowest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2)
barcolor(Display_Bars ? Volume_Color : na)
// }
if (Up)
strategy.entry("Long Entry", strategy.long)
if (Dn)
strategy.entry("Short Entry", strategy.short)