Chiến lược đẩy lùi động lực

Tác giả:ChaoZhang, Ngày: 2024-01-23 15:23:14
Tags:

img

Tổng quan

Chiến lược này nhằm mục đích xác định các cơ hội rút lui tiềm năng trên thị trường. Nó sử dụng một hệ thống trung bình động kép với trung bình động dài hạn (MA1) và trung bình động ngắn hạn (MA2). Mục tiêu chính là mua dài khi giá đóng dưới MA1 nhưng trên MA2, báo hiệu một sự rút lui tiềm năng trong xu hướng tổng thể.

Chiến lược logic

Chiến lược này sử dụng hai đường trung bình động: MA1 (kỳ dài) và MA2 (kỳ ngắn). Lý thuyết là nếu giá rút ngắn để kiểm tra hỗ trợ xu hướng dài hạn, nó có thể tạo ra một cơ hội dài. Cụ thể, nếu giá đóng ở trên ngưỡng hỗ trợ dài hạn (MA1), xu hướng chính vẫn còn nguyên vẹn. Nhưng nếu giá đóng phá vỡ dưới mức MA ngắn hạn (MA2) nhưng vẫn giữ trên mức MA dài hạn (MA1), nó báo hiệu một thiết lập pullback sách giáo khoa. Người ta có thể đi dài với một lỗ dừng và nhắm mục tiêu cho giá quay trở lại trên mức MA ngắn.

Phân tích lợi thế

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

  1. Dễ dàng thực hiện và dễ hiểu với điều chỉnh tham số linh hoạt
  2. Đòn bẩy MAs kép để xác định xu hướng chính và tránh giao dịch ngược xu hướng
  3. Bộ lọc thời gian có thể tùy chỉnh để tránh chu kỳ bất thường
  4. Định kích thước vị trí điều chỉnh để phù hợp với các ưu tiên rủi ro khác nhau
  5. Cơ chế dừng lỗ để hạn chế rủi ro giảm

Phân tích rủi ro

Những rủi ro cần lưu ý:

  1. Việc rút lui không thành công nếu giá tiếp tục giảm và dừng lỗ được thực hiện
  2. Sự đảo ngược xu hướng lớn nếu khu vực hỗ trợ chính bị phá vỡ
  3. Whipsaws và sự khác biệt với hành động giá biến động
  4. Các giao dịch bị thiếu từ các bộ lọc thời gian dưới tối ưu

Một số cách để tối ưu hóa và giảm thiểu rủi ro:

  1. Tối ưu hóa các thông số MA để cải thiện chất lượng tín hiệu
  2. Điều chỉnh mức dừng lỗ để tối đa hóa lợi nhuận trong khi giảm thiểu rủi ro
  3. Điều chỉnh bộ lọc thời gian để tập trung vào các giai đoạn giao dịch tốt nhất
  4. Kiểm tra trên các công cụ và môi trường thị trường khác nhau

Cơ hội gia tăng

Một số cách để tăng cường chiến lược:

  1. Tối ưu hóa các tham số MA để tìm kết hợp tốt nhất
  2. Kiểm tra các cơ chế dừng lỗ khác nhau như dừng lại hoặc đèn chùm
  3. Thêm các bộ lọc bổ sung như khối lượng hoặc biến động
  4. Bao gồm các quy tắc kích thước vị trí như thêm trên thập giá vàng và giảm trên thập giá chết
  5. Xây dựng một cơ chế thu lợi nhuận tự động
  6. Backtest để phân tích các số liệu chính và hoàn tất các thông số

Kết luận

Tóm lại, đây là một chiến lược rút lui đảo ngược trung bình đơn giản. Nó xác định các thiết lập rút lui với cách tiếp cận MA kép và quản lý rủi ro bằng các điểm dừng thích nghi. Chiến lược dễ hiểu và thực hiện với điều chỉnh linh hoạt.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter =true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Thêm nữa