Chiến lược đẩy kép dựa trên thân cây nến

Tác giả:ChaoZhang, Ngày: 2023-11-16 17:14:48
Tags:

img

Tổng quan

Chiến lược này sử dụng chiều dài của thân nến để xác định hướng dài và ngắn. Nó tính toán chiều dài thân trung bình của 30 nến gần đây. Khi chiều dài thân nến tăng lớn hơn trung bình, nó sẽ dài. Khi chiều dài thân nến giảm lớn hơn trung bình, nó sẽ ngắn.

Chiến lược logic

Chiến lược này đầu tiên tính toán chiều dài cơ thể của cây nến và chiều dài cơ thể trung bình của 30 cây nến gần đây.

Khi ngọn nến ngày hôm nay giảm (bar==-1) và chiều dài cơ thể lớn hơn chiều dài cơ thể trung bình, nó mở vị trí dài (lên 1).

Khi nến ngày hôm nay tăng (bar==1) và chiều dài cơ thể lớn hơn chiều dài cơ thể trung bình, nó mở vị trí ngắn (dn1).

Sau khi mở dài, nếu ngọn nến ngày hôm nay tăng (bar==1) và vị trí hiện tại có lợi nhuận, nó đóng vị trí dài.

Sau khi mở mua, nếu nến ngày hôm nay giảm (bar==-1) và vị trí hiện tại có lợi nhuận, nó đóng vị trí mua.

Chiến lược đơn giản và hiệu quả sử dụng chiều dài thân cây nến để xác định xu hướng thị trường. càng dài thân, xu hướng càng mạnh. vì vậy nó sử dụng chiều dài thân như tiêu chí cho dài và ngắn.

Phân tích lợi thế

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

  1. Lý thuyết đơn giản và rõ ràng, dễ hiểu và thực hiện.

  2. Sử dụng chiều dài cơ thể nến để xác định xu hướng, tránh nhiễu nhiễu.

  3. Sử dụng tính toán trung bình động, có thể thích nghi với những thay đổi của thị trường.

  4. Thiết lập điều kiện thoát lợi nhuận để cải thiện lợi nhuận.

  5. Các tham số có thể cấu hình, thích nghi với các môi trường thị trường khác nhau.

Phân tích rủi ro

Những rủi ro của chiến lược này:

  1. Cơ thể dài không nhất thiết phải là xu hướng mạnh, có thể là biến động bình thường.

  2. Cửa sổ thời gian chiều dài cơ thể trung bình không đúng có thể bỏ lỡ cơ hội giao dịch.

  3. Các sự kiện thiên nga đen có thể gây ra thiệt hại.

  4. Giữ các vị trí quá lâu có thể làm tăng tổn thất.

Giải pháp:

  1. Kết hợp với các chỉ số khác để xác định xu hướng, tránh giao dịch sai.

  2. Kiểm tra các giá trị tham số khác nhau, tối ưu hóa tính toán chiều dài cơ thể trung bình.

  3. Thiết lập stop loss để kiểm soát single loss.

  4. Tối ưu hóa logic vào và ra để tránh giữ quá lâu.

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

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

  1. Kết hợp MACD, RSI để xác định xu hướng, tránh các tín hiệu sai từ biến động bình thường.

  2. Kiểm tra các thông số cửa sổ thời gian chiều dài cơ thể trung bình khác nhau để tìm ra các thông số tối ưu.

  3. Thêm vị trí kích thước logic điều khiển, giảm dần kích thước vị trí khi gây ra tổn thất.

  4. Đặt mục tiêu dừng lỗ hoặc lợi nhuận để kiểm soát tỷ lệ thua lỗ đơn.

  5. Tối ưu hóa điều kiện nhập và xuất để tránh giao dịch không hiệu quả. Ví dụ, chờ 3 ngọn nến dài liên tiếp trước khi nhập.

  6. Tránh giao dịch trong các khoảng thời gian nhất định hoặc xung quanh việc phát hành dữ liệu quan trọng để kiểm soát tổn thất do biến động.

Kết luận

Chiến lược có logic rõ ràng và dễ hiểu để so sánh thân nến với chiều dài trung bình của nó để thời gian nhập cảnh. Khoảng cách lớn để tối ưu hóa từ nhiều chiều để phù hợp hơn với môi trường thị trường khác nhau. Nhìn chung là một chiến lược giao dịch lượng giới thiệu đơn giản và đáng tin cậy phù hợp cho các nhà giao dịch mới bắt đầu sử dụng và học. Tiếp tục kết hợp nhiều chỉ số hơn và tối ưu hóa để cải thiện lợi nhuận và độ bền.


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

//Noro
//2018

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

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

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

up1 = bar == -1 and (body > sbody or usebody == false)
dn1 = bar == 1 and (body > sbody or usebody == false)

plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0)
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus

if up1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()

Thêm nữa