Chiến lược theo dõi xu hướng tối đa hóa lợi nhuận

Tác giả:ChaoZhang, Ngày: 2023-10-11 14:38:40
Tags:

Tổng quan

Chiến lược này tính toán trung bình động và lệch chuẩn CHANNEL của giá để hình thành đường ray trên và dưới năng động, và kết hợp giá trị trung bình của giá cao nhất và thấp nhất để hình thành đường ray giữa, để đánh giá hướng xu hướng hiện tại. Khi giá vượt qua đường ray trên, nó có nghĩa là dài. Khi giá vượt qua đường ray dưới, nó có nghĩa là ngắn. Điều này thực hiện một chiến lược giao dịch dựa trên những thay đổi xu hướng.

Chiến lược logic

  1. Tính toán trung bình di chuyển đơn giản 20 ngày của đóng như là cơ sở cho đường tham chiếu giữa
  2. Tính toán độ lệch chuẩn 20 ngày của gần như là cơ sở cho khoảng cách giữa đường ray trên và dưới và đường ray giữa
  3. Cơ sở đường ray giữa ± 2*dev xác định đường ray trên và đường ray dưới
  4. Tính toán giá trị trung bình của giá cao nhất trên và thấp nhất dưới trong 20 ngày gần đây nhất như cơ sở cho đường ray giữa thứ hai
  5. Lấy giá trị trung bình MB của hai đường ray giữa trên là đường ray giữa cuối cùng
  6. Khi gần lớn hơn đường ray giữa MB, nó là một tín hiệu dài.
  7. Xác định hướng dài và ngắn theo tín hiệu để theo dõi xu hướng và lợi nhuận

Phân tích lợi thế

  1. Sử dụng kênh lệch chuẩn năng động có thể nhanh chóng nắm bắt sự thay đổi xu hướng giá
  2. Kết hợp thông tin về giá cao nhất và thấp nhất, đường ray giữa có ý nghĩa hơn
  3. Thiết kế đường ray giữa kép làm cho tín hiệu chính xác và đáng tin cậy hơn
  4. Ý tưởng chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện
  5. Có một số tham số có thể cấu hình, phù hợp với các môi trường thị trường khác nhau

Phân tích rủi ro

  1. Khi giao dịch ở mức đột phá của đường ray trên hoặc dưới, các chiến lược dừng lỗ cần phải được xem xét để kiểm soát lỗ đơn
  2. Tần suất giao dịch có thể cao, và tác động của hoa hồng cần phải được xem xét
  3. Các thông số như các thông số thời gian cần được tối ưu hóa cẩn thận để tránh quá phù hợp
  4. Khi xu hướng thay đổi, có khả năng các tín hiệu giao dịch sai
  5. Cần quản lý vốn đúng cách, không nên sử dụng đòn bẩy quá mức

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

  1. Xem xét thêm bộ lọc khi phá vỡ qua các đường ray trên và dưới để tránh breakouts giả
  2. Thiết lập các lối ra động dựa trên ATR và các chỉ số khác
  3. Bao gồm thông tin về khối lượng giao dịch để xác minh độ tin cậy của tín hiệu đột phá
  4. Tối ưu hóa các thông số như chu kỳ tính toán để thích nghi với nhiều môi trường thị trường hơn
  5. Xem xét việc thiết lập kích thước vị trí để kiểm soát rủi ro mất một lần

Tóm lại

Ý tưởng tổng thể của chiến lược này là rõ ràng và dễ hiểu. Bằng cách nắm bắt xu hướng một cách năng động thông qua kênh và tạo ra các tín hiệu giao dịch với nhiều thiết kế đường ray giữa, nó có thể theo dõi hiệu quả các hướng xu hướng để giao dịch và có được lợi nhuận tốt. Trong ứng dụng thực tế, nên chú ý đến các chiến lược dừng lỗ, quản lý vốn, tối ưu hóa tham số, v.v., để có được lợi nhuận ổn định trong dài hạn.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ErdemDemir

//@version=4
strategy("Lawyers Trend Pro Strategy", shorttitle="Lawyers Trend Pro Strategy", overlay=true)

src = close
mult = 2.0
basis = sma(src, 20)
dev = mult * stdev(src, 20)
upper = basis + dev
lower = basis - dev
offset = 0


lower2 = lowest(20)
upper2 = highest(20)
basis2 = avg(upper2, lower2)


MB= (basis+basis2)/2





col1=close>MB
col3=MB>close
colorE = col1 ? color.blue : col3 ? color.red : color.yellow
p3=plot(MB, color=colorE, linewidth=3)

// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)

// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)

// Buy only if the buy signal is triggered and we are not already long
buySignal = not isLong and crossover(close,MB)

// Sell only if the sell signal is triggered and we are not already short
sellSignal= not isShort and crossover(MB,close)
if (buySignal)
    isLong := true
    isShort := false

if (sellSignal)
    isLong := false
    isShort := true







/// LONG
strategy.entry("long", true , when = buySignal, comment="Open Long")

strategy.close("long", when=sellSignal, comment = "Close Long")

/// SHORT
strategy.entry("short", false,  when = sellSignal, comment="Open Short")

strategy.close("short", when=buySignal, comment = "Close Short")



Thêm nữa