Mua giảm với lợi nhuận và dừng lỗ

Tác giả:ChaoZhang, Ngày: 2023-11-23 16:50:01
Tags:

img

Tổng quan

Chiến lược này mua giảm và lấy lợi nhuận cho tỷ lệ thắng cao bằng cách theo dõi động mức giá thấp, đi lâu sau khi giảm giá, và khóa lợi nhuận và kiểm soát rủi ro thông qua lợi nhuận thích nghi và dừng lỗ.

Nguyên tắc

Khái niệm cơ bản của chiến lược này là sử dụng chỉ số ATR để tính toán các vị trí lấy lợi nhuận và dừng lỗ động. Cụ thể, tín hiệu dài được kích hoạt khi giá đóng dưới mức thấp nhất trong n ngày qua (được đặt thành 7 ngày trong mã); trong các vị trí dài, giá lấy lợi nhuận và dừng lỗ sẽ được tính toán năng động dựa trên chỉ số ATR (được đặt thông qua số nhân ATR) và được hiển thị trên biểu đồ trong thời gian thực. Lợi nhuận hoặc kiểm soát rủi ro có thể đạt được khi giá đạt đến điểm lấy lợi nhuận hoặc dừng lỗ.

Chiến lược kết hợp cách tiếp cận mua đơn giản nhất với ý tưởng dừng lỗ / lấy lợi nhuận năng động để nắm bắt các cơ hội kịp thời trong khi kiểm soát rủi ro.

Ưu điểm

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

  1. Sử dụng các chỉ số ATR năng động để thiết lập dừng lỗ và lấy lợi nhuận có thể điều chỉnh mức P / L dựa trên sự biến động của thị trường, tránh mất lỗ không cần thiết hoặc bỏ lỡ cơ hội lợi nhuận lớn hơn do dừng lỗ / lấy lợi nhuận quá cố định.

  2. Các chiến lược mua giảm có xu hướng có tỷ lệ thắng cao hơn trong thời gian củng cố thị trường khi giá giảm xuống dưới mức hỗ trợ bất thường và có khả năng phục hồi.

  3. Ước tính tỷ lệ lợi nhuận / dừng lỗ thông qua các giá trị ATR là hợp lý và có thể được thiết lập linh hoạt theo điều kiện thị trường và dung nạp rủi ro cá nhân.

  4. Khái niệm mã là đơn giản và rõ ràng, dễ hiểu. Cài đặt tham số cũng trực quan. Nó phù hợp như một chiến lược ví dụ cho việc học.

Rủi ro

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

  1. Không thể xác định mức độ và sức mạnh của sự phục hồi sau khi giảm. Có nguy cơ rằng kỳ vọng lợi nhuận không đạt được. Điều này có thể được giải quyết bằng cách điều chỉnh các thông số ATR để thiết lập phạm vi lợi nhuận khác nhau.

  2. Rủi ro bị mắc kẹt trong tổn thất khi giá phá vỡ hỗ trợ và tiếp tục giảm, đối mặt với tổn thất lớn hơn.

  3. Stop loss quá chặt chẽ cũng có thể bị đánh bại không cần thiết.

  4. Rủi ro quá phù hợp với Backtest. Kiểm tra trong các điều kiện thị trường khác nhau là cần thiết, với các cài đặt trượt / hoạt động thích hợp.

Tăng cường

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  1. Tối ưu hóa mức hỗ trợ và xác định tín hiệu. Các chỉ số phức tạp hơn như KDJ hoặc Bollinger Bands có thể được sử dụng để đánh giá các tín hiệu đảo ngược một cách đáng tin cậy hơn.

  2. Tối ưu hóa các quy tắc kích thước vị trí. Điều chỉnh kích thước vị trí năng động dựa trên biến động thị trường vv

  3. Thực hiện mô-đun dừng lỗ cuối cùng, thắt chặt dừng sau khi giá tăng một phạm vi nhất định, để khóa lợi nhuận một phần.

  4. Thêm các bộ lọc hội tụ. Chỉ nhập dài nếu lĩnh vực tương ứng / thị trường rộng cũng đạt được hỗ trợ, xác minh độ tin cậy tín hiệu.

Kết luận

Chiến lược này nắm bắt các cơ hội đảo ngược trung bình thông qua việc mua giảm, với lợi nhuận / dừng lỗ để kiểm soát rủi ro. Mặc dù có chỗ cho sự tinh vi hơn, nó đủ đơn giản để người mới bắt đầu hiểu và học hỏi.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-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/
// © racer8
//@version=4
strategy("Buy-The-Dip", overlay=true)

atn = input(15, "ATR Period")
atr = sma(tr,atn)[1]
bought = strategy.position_size[0] > strategy.position_size[1]

slm = input(2.0,"ATR SL Multiple",minval=0)
StopPrice  = strategy.position_avg_price - slm*atr              // determines stop loss's price 
FixedStopPrice = valuewhen(bought,StopPrice,0)                  // stores original StopPrice  
plot(FixedStopPrice,"Stop Loss",color=color.red,linewidth=2,style=plot.style_cross)

tpm = input(1.0,"ATR TP Multiple",minval=0)
TakePrice  = strategy.position_avg_price + tpm*atr              // determines Take Profit's price 
FixedTakePrice = valuewhen(bought,TakePrice,0)                  // stores original TakePrice  
plot(FixedTakePrice,"Take Profit",color=color.green,linewidth=2,style=plot.style_cross)

nn = input(7,"Channel Length")
ll = lowest(low,nn)

if close<ll[1]
    strategy.entry("Buy",strategy.long)
if strategy.position_size > 0
    strategy.exit(id="XL SL", stop=FixedStopPrice, limit=FixedTakePrice)    // commands stop loss order to exit!

plot(ll,color=color.orange)

Thêm nữa