이 전략은 웨이스터 파동 지표와 브린 밴드 지표를 결합하여 시장의 추세 방향을 판단하고 중요한 SUPPORT 지점에서 브레이크 거래를 한다. 전형적인 추세 돌파 전략이다.
전략적 원칙:
웨이스터 파동을 계산하여 기둥 도표의 움직임을 통해 가격 동향을 판단한다.
부린을 계산하여 궤도를 내려가게 하고, 가격이 궤도를 돌파할 때 안으로 들어가게 한다.
웨이스 파동이 다방면으로 움직일 때, 가격이 브린을 뚫고 궤도에 올랐을 때 더 많이 한다.
웨이스 파동이 상향 추세를 나타낼 때, 가격이 부린을 넘어선 후 하락하는 동안 공백을 낸다.
역전향이 발생했을 때 정지/피해/탈출 내 포지션을 설정한다.
이 전략의 장점:
웨이스터 파동 지표는 주요 트렌드 방향을 효과적으로 판단할 수 있다.
브린은 중요한 SUPPORT 저항 지점을 발견할 수 있다.
콤비네이션을 이용하면 판단의 정확도를 높일 수 있다.
이 전략의 위험은:
웨이스 웨이브와 브린 베인드에는 지연 문제가 있으며, 입장이 좋지 않습니다.
은 거래는 쉽게 함부로 잡힐 수 있고, 막상 손실 보호가 필요합니다.
이 사건은 계속되는 추세와 명확한 돌파구를 찾아보기 힘들었습니다.
요약하자면, 이 전략은 웨이스터 파동과 브린띠를 결합하여 트렌드 방향을 판단하고, 중요한 지점에서 브레이크 트레이드를 수행한다. 정확도를 어느 정도 향상시킬 수 있지만, 마진과 흔들리는 시장의 문제를 경계해야 한다.
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
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/
// © sharatgbhat
//@version=4
// strategy("Weis BB Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 10,max_lines_count = 500, max_labels_count = 500)
maxIdLossPcnt = input(1, "Max Intraday Loss(%)", type=input.float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)
method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=input.float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating = input(defval=false, type=input.bool, title="Oscillating")
normalize = input(defval=false, type=input.bool, title="Normalize")
vol = useTrueRange == "Always" or useTrueRange == "Auto" and na(volume) ? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low
if method == "ATR"
methodvalue := atr(round(methodvalue))
if method == "Part of Price"
methodvalue := close / methodvalue
currclose = float(na)
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose
direction = int(na)
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0
barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol / barcount : vol
plot(isOscillating and directionIsDown ? -res : res, style=plot.style_columns, color=directionIsUp ? color.green : color.red, transp=75, linewidth=3, title="Wave Volume")
length = input(14, minval=1)
src = input(close, title="Source")
mult = input(2, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
MomentumBull = close>upper
MomentumBear = close<lower
if (MomentumBull and directionIsUp)
strategy.entry("Buy", strategy.long)
if (MomentumBear and directionIsDown)
strategy.entry("Sell", strategy.short)
strategy.exit("exit","Buy",when=directionIsDown,qty_percent=100,profit=20,loss=10)
strategy.exit("exit","Sell",when=directionIsUp,qty_percent=100,profit=20,loss=10)