Chiến lược chỉ báo Super Trend Moving Average BOLL


Ngày tạo: 2023-12-01 16:29:56 sửa đổi lần cuối: 2023-12-01 16:30:43
sao chép: 0 Số nhấp chuột: 954
1
tập trung vào
1619
Người theo dõi

Chiến lược chỉ báo Super Trend Moving Average BOLL

Tổng quan

Chiến lược BOLL siêu xu hướng là một chiến lược chỉ số dừng lỗ phổ biến dựa trên mức biến động thực tế trung bình của ATR. Chiến lược này sử dụng chỉ số đường trung bình siêu xu hướng để vẽ các kênh xu hướng đa không gian trên biểu đồ và kết hợp với chỉ số Bollin để phát tín hiệu mua và bán.

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

Chiến lược này sử dụng hai tham số chính là chu kỳ và nhân, 10 và 3, để tính toán đường trung bình siêu xu hướng. Công thức tính toán cụ thể như sau:

Đường đường lên: giá đóng cửa - (nâng x ATR trung bình biến động thực tế) Dòng đường xuống: giá đóng cửa + (nội số × ATR trung bình biến động thực tế)

Khi giá đóng cửa cao hơn đường ray lên của chu kỳ trước, nó được coi là tín hiệu đa đầu; khi giá đóng cửa rơi xuống đường ray xuống của chu kỳ trước, nó được coi là tín hiệu đầu trống.

Chiến lược này cũng kết hợp với chỉ số Bollinger Bands, sử dụng đường trung tâm làm đường chuẩn, phân biệt đường trên và đường dưới với hai đường phân cách tiêu chuẩn giữa đường trung tâm. Một tín hiệu mua được tạo ra khi giá từ dưới lên phá vỡ đường trung tâm; một tín hiệu bán được tạo ra khi giá từ trên xuống phá vỡ đường trung tâm.

Lợi thế chiến lược

  1. Sử dụng ATA động để tính toán độ dao động, có thể nhanh chóng nắm bắt xu hướng thay đổi của thị trường
  2. Kết hợp với chỉ số BRI, tín hiệu giao dịch đáng tin cậy hơn
  3. Các tham số có thể tùy chỉnh để thích ứng với các môi trường thị trường khác nhau

Rủi ro chiến lược

  1. Có thể tạo ra tín hiệu sai trong cơn động đất
  2. Thiết lập tham số không đúng có thể dẫn đến giao dịch thường xuyên
  3. Không thể xác định được điểm thay đổi, có một số điểm chậm trễ

Hướng tối ưu hóa

  1. Tối ưu hóa tham số chu kỳ ATR để giảm giao dịch tiếng ồn
  2. Kết hợp các chỉ số khác để đánh giá mức kháng cự hỗ trợ, giảm khả năng quay trở lại lợi nhuận
  3. Thêm mô-đun quản lý tiền để kiểm soát tổn thất đơn lẻ

Tóm tắt

Chiến lược chỉ số BOLL siêu xu hướng trung bình tích hợp các ưu điểm của nhiều chỉ số kỹ thuật, sử dụng cơ chế dừng theo dõi động, có thể theo dõi xu hướng thị trường một cách hiệu quả. Các tham số của chiến lược có thể tùy chỉnh, có khả năng thích ứng, là một chiến lược theo dõi đột phá đáng được đề xuất. Tuy nhiên, cũng cần lưu ý để phòng ngừa nguy cơ bị dừng lỗ và giao dịch thường xuyên, cần được tối ưu hóa hơn để thích ứng với môi trường thị trường phức tạp hơn.

Mã nguồn chiến lược
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 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/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short)
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)