Chiến lược giao dịch qua thời gian lệnh giới hạn

Tác giả:ChaoZhang, Ngày: 2023-11-03 17:11:34
Tags:

img

Tóm lại

Chiến lược này là một chiến lược giao dịch theo xu hướng sử dụng trung bình di chuyển đơn giản để xác định hướng xu hướng thị trường và đặt lệnh giới hạn dọc theo đường trung bình di chuyển để theo xu hướng.

Chiến lược logic

  1. Tính toán đường trung bình di chuyển đơn giản (SMA) và xu hướng xu hướng.

  2. Nếu bộ lọc Anti-Saw được bật, xu hướng tăng được xác định khi mức thấp trên SMA, xu hướng giảm được xác định khi mức cao dưới SMA. Nếu bộ lọc Anti-Saw bị vô hiệu hóa, xu hướng tăng được xác định khi đóng trên SMA, xu hướng giảm được xác định khi đóng dưới SMA.

  3. Đặt lệnh giới hạn ở giá SMA theo xu hướng xu hướng xu hướng và các hướng giao dịch được kích hoạt cần dài và cần ngắn:

    • Nếu cần giao dịch dài (needlong là đúng) và trong xu hướng tăng, đặt lệnh giới hạn dài ở giá SMA

    • Nếu cần giao dịch ngắn (needshort là đúng) và trong xu hướng giảm, đặt lệnh giới hạn ngắn ở giá SMA

  4. Thiết lập logic dừng lỗ để thoát khỏi các vị trí nếu hướng vị trí không phù hợp với hướng xu hướng.

  5. Chỉ giao dịch trong phạm vi ngày xác định dựa trên các thông số phạm vi ngày.

Phân tích lợi thế

  1. Sử dụng SMA để xác định xu hướng có thể lọc hiệu quả tiếng ồn thị trường và khóa xu hướng dài hạn.

  2. Đặt lệnh giới hạn ở mức giá SMA có thể có được các điểm vào tốt khi xu hướng bắt đầu.

  3. Tính linh hoạt để chỉ đi dài hoặc ngắn theo phong cách giao dịch cá nhân.

  4. Dừng lỗ tại chỗ để tránh gia tăng tổn thất.

  5. Giao dịch thời gian phạm vi thiết lập để tránh biến động xung quanh các sự kiện lớn.

Phân tích rủi ro

  1. SMA là chỉ số xu hướng có hiệu ứng chậm, có thể bỏ lỡ các điểm chuyển hướng xu hướng và gây ra tổn thất.

  2. Lệnh giới hạn thiếu tính linh hoạt, có thể không vào vị trí do điều chỉnh xu hướng ngắn hạn.

  3. Các thông số thời gian SMA cần cấu hình chính xác, cài đặt không chính xác dẫn đến xác định xu hướng sai.

  4. Các thông số phiên giao dịch cần phải hợp lý để tránh bỏ lỡ cơ hội hoặc giao dịch trong các giai đoạn rủi ro.

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

  1. Xem xét thêm các chỉ số khác để xác nhận nhiều chỉ số, tránh các vấn đề chậm SMA.

  2. Chuyển sang theo dõi lệnh thị trường khi giá vượt qua SMA, cải thiện tính linh hoạt theo dõi.

  3. Tối ưu hóa động thời gian SMA để thích nghi với các chu kỳ thị trường khác nhau.

  4. Thiết lập stop loss để dao động thấp/cao thay vì chỉ ở mức giá SMA để có các stop linh hoạt hơn.

  5. Tăng các yếu tố thuật toán cho các phiên giao dịch năng động thông minh hơn tránh các sự kiện rủi ro lớn.

Tóm lại

Nhìn chung, đây là một chiến lược theo xu hướng tương đối đơn giản, với ý tưởng cốt lõi là xác định hướng xu hướng với SMA và đặt lệnh giới hạn ở giá SMA để theo xu hướng. Với một số tối ưu hóa nhất định, nó có thể cải thiện tính linh hoạt, khả năng thích nghi và trí thông minh. Chiến lược dễ hiểu và thực hiện, phù hợp với người mới bắt đầu giao dịch thuật toán, nhưng đòi hỏi nhận thức rủi ro, đánh giá backtest cẩn thận, giám sát nghiêm ngặt và tối ưu hóa cho giao dịch trực tiếp.


/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
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")

//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
    strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
    strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
    strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
    strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Thêm nữa