Xu hướng Bolt Dazzling theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-02 17:30:09
Tags:

img

Tổng quan

Chiến lược này được gọi là Dazzling Bolts. Đây là một chiến lược theo xu hướng dựa trên ba đường trung bình động. Nó sử dụng các đường chéo của các đường nhanh, trung bình và chậm để xác định xu hướng giá và đặt mục tiêu và dừng dựa trên giá trị ATR.

Chiến lược logic

Chiến lược sử dụng ba đường trung bình động sau:

  1. Trung bình di chuyển cân nhắc 13 giai đoạn, để đánh giá xu hướng ngắn hạn
  2. Đường trung bình động theo cấp số nhân 55 giai đoạn, cho xu hướng trung hạn
  3. Trung bình di chuyển đơn giản 110 giai đoạn, cho xu hướng dài hạn

Khi đường nhanh vượt qua trên đường trung bình và đường trung bình vượt qua trên đường chậm, nó báo hiệu xu hướng tăng. Khi đường nhanh vượt qua dưới đường trung bình và đường trung bình vượt qua dưới đường chậm, nó báo hiệu xu hướng giảm.

Để lọc một số ngành công nghiệp tiếng ồn, một số điều kiện phụ được thiết lập:

  1. Giá thấp của 5 ngọn nến cuối cùng đều trên đường trung bình.
  2. Giá thấp của 2 cây nến cuối cùng giảm xuống dưới đường trung bình
  3. Giá đóng của nến cuối cùng là trên đường trung bình

Khi các tiêu chí này được đáp ứng, tín hiệu dài hoặc ngắn sẽ được kích hoạt. Nó chỉ giữ một vị trí mỗi lần và sẽ không đi vào một lần nữa cho đến khi vị trí hiện có được đóng hoặc dừng lại.

Mục tiêu và dừng được đặt dựa trên một số số lần của các giá trị ATR.

Phân tích lợi thế

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

  1. Sử dụng sự kết hợp của ba đường trung bình động tránh khả năng đánh giá sai từ một chỉ số duy nhất.
  2. Nhiều điều kiện phụ trợ giúp cải thiện chất lượng tín hiệu bằng cách lọc ra tiếng ồn.
  3. Động lực ATR dừng lỗ giúp kiểm soát lỗ giao dịch duy nhất.

Phân tích rủi ro

Các rủi ro của chiến lược này cũng bao gồm:

  1. Sự kết hợp trung bình động có thể đưa ra các tín hiệu sai, đòi hỏi các thử nghiệm ngược đủ.
  2. Các thiết lập nhân ATR không chính xác có thể dẫn đến việc dừng quá lỏng hoặc quá chặt.
  3. Không thể lọc hiệu quả biến động giá từ các sự kiện đột ngột.

Để giảm thiểu rủi ro, điều chỉnh đúng các thông số trung bình động, tối ưu hóa nhân ATR, thiết lập thời gian giữ tối đa để tránh thua lỗ giao dịch đơn quá mức.

Hướng dẫn tối ưu hóa

Các tối ưu hóa có thể cho chiến lược này:

  1. Kiểm tra các đường trung bình động có chiều dài hoặc loại khác nhau.
  2. Tối ưu hóa các thông số của điều kiện phụ trợ.
  3. Hãy thử các chỉ số khác để dự đoán xu hướng, ví dụ: MACD, DMI v.v.
  4. Kết hợp các chỉ số âm lượng để lọc tín hiệu.

Tóm lại

Chiến lược Dazzling Bolts nói chung là một hệ thống theo xu hướng ổn định. Nó chủ yếu sử dụng đường chéo trung bình động để xác định hướng xu hướng, với một số kết hợp chỉ số kỹ thuật như một phương tiện phụ để lọc một số tiếng ồn. Mặc dù có chỗ để tối ưu hóa hơn nữa, rủi ro tổng thể của nó được kiểm soát và nó phù hợp để đầu tư theo xu hướng trung hạn đến dài hạn.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
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/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)


Thêm nữa