Chiến lược giao dịch dài / ngắn tự động dựa trên các điểm quay hàng ngày

Tác giả:ChaoZhang, Ngày: 2024-01-23 14:24:22
Tags:

img

Tổng quan

Chiến lược này vẽ hai đường dựa trên giá cao nhất và thấp nhất của các ngọn nến hàng ngày để đánh giá xu hướng dài / ngắn. Nó đi dài khi giá vượt qua đường giá cao nhất và đi ngắn khi giá vượt qua đường giá thấp nhất. Nó có thể tự động chuyển đổi giữa các vị trí dài và ngắn.

Chiến lược logic

Chiến lược này chủ yếu sử dụng các điểm trục của các ngọn nến hàng ngày để xác định xu hướng dài / ngắn. Những điểm gọi là pivot đề cập đến giá cao nhất và thấp nhất hôm qua. Hai đường này tạo thành một phạm vi giao dịch. Nếu giá ngày hôm nay phá vỡ một trong hai, nó cho thấy sự đảo ngược xu hướng.

Cụ thể, logic chính là như sau:

  1. Đường giá cao nhất: Biểu đồ mức giá cao nhất hôm qua.
  2. Đường giá thấp nhất: Biểu đồ mức giá thấp nhất hôm qua.
  3. Tham gia dài: Mở vị trí dài khi giá đóng phá vỡ đường giá cao nhất.
  4. Mở vị trí ngắn khi giá đóng phá vỡ đường giá thấp nhất.
  5. Stop loss: Stop loss dài gần đường giá thấp nhất, stop loss ngắn gần đường giá cao nhất.

Bằng cách nắm bắt xu hướng thông qua sự đột phá của giá cao nhất / thấp nhất, nó nhận ra chuyển đổi tự động giữa dài và ngắn.

Phân tích lợi thế

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

  1. Logic đơn giản, dễ hiểu và thực hiện
  2. Dựa trên các thanh hàng ngày, chu kỳ dài, ít nhạy cảm với tiếng ồn ngắn hạn
  3. Chuyển tự động giữa dài và ngắn, tránh thị trường không xu hướng
  4. Stop loss rõ ràng, có lợi cho kiểm soát rủi ro

Phân tích rủi ro

Một số rủi ro:

  1. Các thanh hàng ngày có tần suất thấp hơn, không thể dừng mất mát kịp thời
  2. Những bước đột phá giả mạo có thể gây ra tổn thất không cần thiết
  3. Việc nắm giữ lâu có thể dẫn đến tổn thất mở rộng

Cải tiến:

  1. Thêm các chỉ số tần số cao hơn khác để xác nhận
  2. Tối ưu hóa các tham số để lọc các đột phá giả
  3. Sử dụng các phương pháp dừng lỗ tiến bộ để dừng lỗ kịp thời

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

Một số hướng dẫn:

  1. Kiểm tra ngược nhiều hơn trên các sản phẩm khác nhau và các bộ dữ liệu dài hơn để kiểm tra tính ổn định
  2. Khám phá các chỉ số đột phá khác như kênh, Bollinger Bands vv.
  3. Bao gồm khối lượng giao dịch để tránh phá vỡ sai mà không có khối lượng
  4. Thêm thêm bộ lọc để giảm vỡ sai

Tóm lại

Tóm lại, chiến lược đơn giản này thực hiện tự động dài / ngắn dựa trên các pivot hàng ngày. Logic rõ ràng và dễ hiểu. Tăng cường thêm có thể cải thiện sự ổn định. Nhà đầu tư có thể áp dụng nó để giao dịch trực tiếp dựa trên sở thích rủi ro cá nhân.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's DEX Strategy", shorttitle = "DEX 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(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
showlines = input(true, title = "Show lines")
showbg = input(false, title = "Show background")
showday = input(false, title = "Show new day")
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")

//New day trand
bar = close > open ? 1 : close < open ? -1 : 0
newday = request.security(syminfo.tickerid, 'D', time)

//Lines
uplevel = request.security(syminfo.tickerid, 'D', high)
dnlevel = request.security(syminfo.tickerid, 'D', low)
upcolor = uplevel == uplevel[1] and showlines ? lime : na
dncolor = dnlevel == dnlevel[1] and showlines? red : na
plot(uplevel, offset = 1, linewidth = 2, color = upcolor)
plot(dnlevel, offset = 1, linewidth = 2, color = dncolor)

//Background
size = strategy.position_size
col = time == newday + 86400000 and showday ? blue : showbg and size > 0 ? lime : showbg and size < 0 ? red : na
bgcolor(col)

//Orders
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong ? lot : 0, stop = uplevel, when = truetime)
    strategy.entry("Close", strategy.short, needshort ? lot : 0, stop = dnlevel, when = truetime)

Thêm nữa