Động thái lấy lợi nhuận theo chiến lược xu hướng

Tác giả:ChaoZhang, Ngày: 2023-12-29 16:06:54
Tags:

img

Tổng quan

Chiến lược Dynamic Take Profit Following Trend phát hiện ra xu hướng dài hạn và rút ngắn hạn để đạt được mức mua thấp và bán cao, với mục tiêu theo đuổi xu hướng tăng. Chiến lược cũng sử dụng các đơn vị biến động để phát hiện kích thước thắng thua để có thể áp dụng cho tất cả các đồng tiền mà không phải lo lắng về sự thay đổi tỷ lệ phần trăm.

Chiến lược logic

Lý thuyết mua của chiến lược này là: khi xu hướng tăng dài hạn xuất hiện (EMA 200 ngày tăng, RSI 200 ngày lớn hơn 51) và giảm ngắn hạn xảy ra (hai ngọn nến cuối cùng cho thấy giá đóng giảm), các vị trí dài được mở.

Lý thuyết bán hàng là: lấy lợi nhuận khi giá tăng hơn 1 đơn vị biến động; dừng lỗ khi giá giảm hơn 2 đơn vị biến động.

Đơn vị biến động được tính bằng: 2 lần độ lệch chuẩn của giá đóng trong 50 ngày qua. Điều này có thể phát hiện các điều kiện biến động của các đồng tiền khác nhau tự động mà không cần cài đặt tỷ lệ phần trăm thủ công.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là nó có thể phát hiện động kích thước biến động của các đồng tiền khác nhau và đặt mức dừng lỗ / lấy lợi nhuận phù hợp. Điều này tránh được vấn đề cài đặt tỷ lệ phần trăm cố định và có thể tự động thích nghi với nhiều đồng tiền hơn.

Một lợi thế khác là kết hợp các phán đoán dài hạn và ngắn hạn có thể lọc ra hiệu quả các sự đột phá sai. Sử dụng xu hướng dài hạn để đánh giá các đồng tiền có tiềm năng tăng và kết hợp nó với các tín hiệu pullback ngắn hạn có thể tránh các tín hiệu sai như Bollinger squeezes.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là cài đặt đơn vị dừng lỗ / lấy lợi nhuận. Nếu biến động quá cao, khoảng cách lấy lợi nhuận có thể quá gần để tiếp tục theo đuổi xu hướng tăng; nếu biến động quá thấp, dừng lỗ có thể được kích hoạt quá nhanh. Điều này cần EMA dài hơn để giúp tránh sai lầm trong phán đoán đơn vị biến động.

Một rủi ro khác là sự phụ thuộc của chiến lược vào xu hướng ngắn hạn. Nếu có xu hướng tăng dài hạn mà không có sự rút lui ngắn hạn, thời gian vào sẽ bị bỏ lỡ. Điều này có thể cần các chỉ số hỗ trợ bổ sung.

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

Chiến lược có thể được tối ưu hóa theo các hướng sau:

  1. Thêm các đánh giá EMA dài hạn hơn để tránh lỗi đơn vị biến động

  2. Thêm các chỉ số như khối lượng giao dịch để đánh giá xu hướng, giảm sự phụ thuộc vào các ngọn nến ngắn hạn

  3. Tối ưu hóa điều kiện nhập cảnh và xuất cảnh, thiết lập các quy tắc nhập cảnh nghiêm ngặt hơn

  4. Kết hợp các thuật toán học máy để xác định hướng xu hướng, đạt được tỷ lệ thắng cao hơn

Kết luận

Chiến lược Dynamic Take Profit Following Trend có logic rõ ràng ở cốt lõi của nócập động thiết lập stop loss/take profit units. Chiến lược này có thể tự động điều chỉnh cài đặt trên các đồng tiền mà không cần đầu vào tỷ lệ phần trăm thủ công. Trong khi đó, kết hợp hai xác nhận về xu hướng dài hạn và ngắn hạn có thể lọc hiệu quả các tín hiệu sai. Với các tối ưu hóa thêm, chiến lược này có thể trở thành một chiến lược theo đuổi xu hướng hiệu quả cao.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

strategy(shorttitle='Take Profit On Trend',
 title='Take Profit On Trend (by BHD_Trade_Bot)',
 overlay=true,
 initial_capital = 15,
 default_qty_type = strategy.cash,
 default_qty_value = 15,
 commission_type=strategy.commission.percent,
 commission_value=0.1)



//Backtest Time
start_day = 1
start_month = 1
start_year = 2021
end_day = 1
end_month = 1
end_year = 2050
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() =>
    time >= start_time and time <= end_time ? true : false

// Last bar
h1_last_bar = (timenow - time)/1000/60/60 < 2



// EMA
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// RSI length 200
rsi200 = rsi(close, 200)

// Bollinger Bands length 50
bb50 = 2 * stdev(close, 50)

// BHD Unit
bhd_unit = sma(bb50, 100)
bb50_upper = ema50 + bhd_unit
bb50_lower = ema50 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY

// Long-term uptrend
entry_condition1 = rsi200 > 51 

// Short-term downtrend
entry_condition2 = all_body_decrease(2) 

ENTRY_CONDITION = entry_condition1 and entry_condition2

if (ENTRY_CONDITION and is_back_test_time())
    strategy.entry("entry", strategy.long)



// CLOSE CONDITIONS

// Price increase 1 BHD unit
TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit

// Price decrease 2 BHD unit
STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2

CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS

if (CLOSE_CONDITION or h1_last_bar)
    strategy.close("entry")



// Draw
plot(ema50)
plot(ema200, color=color.yellow)
plot(bb50_upper)
plot(bb50_lower)


Thêm nữa