Chiến lược giao dịch dải Bollinger của Wei


Ngày tạo: 2023-09-13 13:55:24 sửa đổi lần cuối: 2023-09-13 13:55:24
sao chép: 2 Số nhấp chuột: 942
1
tập trung vào
1617
Người theo dõi

Chiến lược này kết hợp các chỉ số sóng Weiss và các chỉ số Bollinger Bands để xác định xu hướng thị trường và thực hiện giao dịch phá vỡ tại các điểm hỗ trợ quan trọng. Đây là một chiến lược phá vỡ xu hướng điển hình.

Nguyên tắc chiến lược:

  1. Tính toán sóng Weiss để xác định xu hướng giá thông qua biểu đồ cột

  2. Tính toán Binance lên và xuống đường, và vào sân khi giá phá vỡ đường quỹ đạo.

  3. Khi sóng Weiss cho thấy xu hướng đa chiều, giá sẽ phá vỡ đường dẫn của Bollinger Bands.

  4. Khi sóng Weiss cho thấy một xu hướng không, giá sẽ phá vỡ đường mòn của Bollinger Bands.

  5. Cài đặt lệnh dừng dừng lỗ để thoát khỏi vị trí trong trường hợp có xu hướng đảo ngược.

Những lợi thế của chiến lược này:

  1. Chỉ số sóng Weiss có hiệu quả trong việc đánh giá xu hướng chính.

  2. Brin có thể tìm thấy các điểm kháng cự SUPPORT quan trọng.

  3. Sử dụng các chỉ số kết hợp có thể cải thiện tính chính xác của phán đoán.

Rủi ro của chiến lược này:

  1. Các trận đấu ở các vùng như Brin và Waves đều bị trì trệ và không có điểm thi đấu.

  2. Các giao dịch đột phá dễ bị mắc kẹt và cần được bảo vệ.

  3. Trong những trận động đất, rất khó để tìm ra một xu hướng bền vững và một điểm đột phá rõ ràng.

Tóm lại, chiến lược này kết hợp các sóng Weiss và Brin để đánh giá xu hướng, giao dịch đột phá ở các điểm quan trọng. Có thể cải thiện độ chính xác ở một mức độ nhất định, nhưng cần cảnh giác với các vấn đề về thị trường trì trệ và biến động.

Mã nguồn chiến lược
/*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)