Chiến lược theo dõi xu hướng nguyên thủy dựa trên đường trung bình động

Tác giả:ChaoZhang, Ngày: 2023-11-23 15:54:37
Tags:

img

Tổng quan

Chiến lược này dựa trên thân của nến, kết hợp với chỉ số EMA để đánh giá hướng xu hướng thị trường, để đạt được hiệu ứng theo dõi xu hướng nguyên thủy. Đi dài khi có một đường yang lớn, đi ngắn khi có một đường yin lớn, để theo dõi xu hướng thị trường.

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

  1. Tính toán chiều dài cơ thể trung bình sbody của cuối cùng 30 nến đường K
  2. Khi K-đường mới nhất là một đường yang và chiều dài cơ thể lớn hơn sbody/2, đi dài
  3. Khi đã dài, nếu K-đường cuối cùng là một đường yin, chiều dài cơ thể lớn hơn sbody/2, và vị trí hiện tại là có lợi nhuận, sau đó đóng các vị trí dài
  4. Khi K-đường mới nhất là một đường yin và chiều dài cơ thể lớn hơn sbody/2, đi ngắn
  5. Khi đã ngắn, nếu K-đường cuối cùng là một đường yang, chiều dài cơ thể lớn hơn sbody/2, và vị trí hiện tại là có lợi nhuận, sau đó đóng các vị trí ngắn

Phân tích lợi thế

Chiến lược này có những lợi thế sau:

  1. Nguyên bản và đơn giản, dễ hiểu và thực hiện
  2. Dựa trên phán đoán cấu trúc nến, có một số ảnh hưởng đến việc bắt breakouts
  3. Theo dõi xu hướng, có thể nắm bắt các động thái lớn hơn
  4. Dừng lỗ nhanh khi có lợi nhuận, giúp khóa lợi nhuận

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Không có khả năng lọc hiệu quả các vụ đột phá giả, có thể gây ra tổn thất không cần thiết
  2. Phán xét chỉ bằng nến là dễ bị trượt và ảnh hưởng khoảng cách
  3. Không xem xét vấn đề về tần suất giao dịch quá mức

Các rủi ro có thể được giảm bằng cách:

  1. Kết hợp với các chỉ số khác để lọc tín hiệu
  2. Đặt chiến lược dừng lỗ
  3. Tối ưu hóa các thông số để kiểm soát tần suất giao dịch

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. Thêm các chỉ số đột phá để lọc các đột phá sai
  2. Thêm chiến lược dừng lỗ để giảm lỗ đơn
  3. Bao gồm các chỉ số xu hướng để xác minh hướng xu hướng
  4. Tối ưu hóa tham số để tìm kết hợp tham số tốt nhất

Tóm lại

Chiến lược này thuộc về chiến lược theo dõi xu hướng đơn giản ban đầu. Bằng cách đánh giá cấu trúc nến, nó có thể theo dõi hiệu quả các hướng xu hướng. Đồng thời, thiết lập một cơ chế dừng lỗ nhanh có thể khóa lợi nhuận. Chiến lược này có thể bổ sung vào danh mục đầu tư theo dõi xu hướng, nhưng vẫn cần được tối ưu hóa để giảm rủi ro. Nó đáng để nghiên cứu thêm về tác dụng của việc kết hợp với các chỉ số khác trong tương lai.


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
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(01, defval = 01, 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")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

Thêm nữa