Chiến lược theo dõi dao động ngắn hạn

Tác giả:ChaoZhang, Ngày: 2024-01-18 16:29:34
Tags:

img

Tổng quan

Chiến lược này sử dụng các thay đổi trong giá cao nhất và thấp nhất của các đường K để đánh giá hướng và cường độ dao động của thị trường, và kết hợp trung bình động để đánh giá xu hướng tổng thể để thực hiện các hoạt động ngắn hạn.

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

Chiến lược này đầu tiên đánh giá sự thay đổi giá cao nhất và thấp nhất của các đường K so với đường K trước đó. Nếu giá cao nhất tăng, nó được ghi lại là 1. Nếu giá thấp nhất giảm, nó được ghi lại là -1, nếu không nó được ghi lại là 0. Sau đó tính giá trị trung bình của sự thay đổi giá cao nhất và thấp nhất trong một chu kỳ nhất định để đánh giá hướng và cường độ dao động của thị trường.

Đồng thời, chiến lược ghi lại giá cao nhất và thấp nhất trong chu kỳ gần đây nhất. Khi đường trung bình động xác định sự đảo ngược xu hướng, kết hợp với giá được ghi nhận để xác định mức giá chính để hình thành mức dừng lỗ và lấy lợi nhuận.

Hướng vào được xác định bởi đường trung bình động. Đi dài trên đường ray trên và đi ngắn dưới đường ray dưới. Mức dừng lỗ và lấy lợi nhuận được hình thành bằng cách đánh giá các mức giá chính.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là tận dụng đầy đủ các đặc điểm của biến động ngắn hạn để kiếm lợi nhuận. Bằng cách xác định mức dừng lỗ và lấy lợi nhuận dựa trên các mức giá chính, chiến lược chạy theo các quy tắc rõ ràng. Đồng thời, nó kết hợp phán đoán xu hướng để lọc các thị trường không thuận lợi và tránh thua lỗ không cần thiết.

Phân tích rủi ro

Những rủi ro chính đối với chiến lược này là:

  1. Không có lợi nhuận nếu thị trường không biến động.

  2. Các lỗ không cần thiết gây ra bởi giá vượt qua mức dừng lỗ.

  3. Phương pháp đánh giá sai về xu hướng có thể bỏ lỡ cơ hội hoặc thực hiện các hoạt động theo hướng ngược lại.

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

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Điều chỉnh chu kỳ trung bình động để thích nghi với các đặc điểm của các giống khác nhau.

  2. Tối ưu hóa phạm vi dừng lợi nhuận và dừng lỗ để cân bằng lợi nhuận và lỗ.

  3. Thêm các chỉ số khác để đánh giá để tránh các hoạt động sai.

  4. Thêm tự động dừng mất mát để kiểm soát mất mát tối đa.

Tóm lại

Nói chung, chiến lược này là một chiến lược tận dụng lợi thế của biến động ngắn hạn. Nó tận dụng đầy đủ các biến động giá nhỏ để kiếm lợi nhuận. Đồng thời, nó kiểm soát chặt chẽ rủi ro và cắt giảm lỗ kịp thời khi xu hướng không thuận lợi. Nó phù hợp với các nhà đầu tư theo đuổi lợi nhuận ổn định với thái độ tương đối thận trọng. Với các điều chỉnh tham số thích hợp, nó có thể đạt được kết quả tốt trong thị trường biến động.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-16 22:45:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's ZZ-3 Strategy", shorttitle = "ZZ-3 str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if uplevel > 0 and dnlevel > 0 and revers == true
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Thêm nữa