Chiến lược theo xu hướng ban đầu dựa trên đường trung bình động


Ngày tạo: 2023-11-23 15:54:37 sửa đổi lần cuối: 2023-11-23 15:54:37
sao chép: 0 Số nhấp chuột: 581
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng ban đầu dựa trên đường trung bình động

Tổng quan

Chiến lược này dựa trên phần thực tế của candle, kết hợp với chỉ số EMA để xác định xu hướng thị trường, để thực hiện hiệu quả của ORIGINAL PRIMITIVE TREND TRACKING. Khi có mặt trời lớn, hãy làm nhiều hơn và khi có bóng tối lớn, hãy làm trống, để theo dõi xu hướng thị trường.

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

  1. Tính trung bình chiều dài của vật thể candle trong 30 dòng K cuối cùng
  2. Làm thêm khi dòng K mới nhất là dòng dương và chiều dài thực thể lớn hơn sbody / 2
  3. Khi giao dịch được thực hiện, giao dịch được giao nếu K mới nhất là âm, chiều dài thực thể lớn hơn sbody/2 và vị trí hiện tại là lợi nhuận
  4. Khi dòng K mới nhất là âm và chiều dài thực thể lớn hơn sbody / 2, làm trống
  5. Khi đã làm trống, nếu K mới nhất là đường dương, chiều dài thực thể lớn hơn sbody / 2, và vị trí hiện tại là lợi nhuận, vị trí trống là

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Khá đơn giản, dễ hiểu và dễ thực hiện
  2. Dựa trên cấu trúc candle, có một số hiệu quả đối với đột phá của Trading Breakouts
  3. Theo dõi xu hướng, nắm bắt những điều lớn hơn
  4. Hậu quả của việc dừng lỗ nhanh chóng sau vị trí lợi nhuận là lợi nhuận khóa

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 đột phá giả, có thể dẫn đến tổn thất không cần thiết
  2. Chỉ dựa trên candle để đánh giá khả năng bị ảnh hưởng bởi điểm trượt và bay qua đêm
  3. Không tính đến tần suất giao dịch quá cao

Bạn có thể làm giảm nguy cơ bằng cách:

  1. Kết hợp các chỉ số khác để lọc tín hiệu
  2. Thiết lập chiến lược dừng lỗ
  3. Các tham số tối ưu hóa, kiểm soát tần suất giao dịch

Hướng tối ưu hóa

Chính sách này có thể được tối ưu hóa bằng cách:

  1. Tăng các chỉ số đột phá, lọc các đột phá giả
  2. Tăng chiến lược dừng lỗ, giảm tổn thất đơn
  3. Kết hợp với các chỉ số xu hướng, kiểm tra xu hướng
  4. Tối ưu hóa tham số, tìm kiếm sự kết hợp tham số tốt nhất

Tóm tắt

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

Mã nguồn chiến lược
/*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()