Ý tưởng cốt lõi của chiến lược này là các nhà đầu tư luôn giữ cổ phần đầu tư của một tài sản trong tài sản không thay đổi. Khi giá trị tài sản tăng, nhà đầu tư sẽ bán một phần để duy trì cổ phần đầu tư; khi giá trị tài sản giảm, nhà đầu tư sẽ mua để bổ sung cổ phần đầu tư. Chiến lược này áp dụng cho các tài sản tương đối ổn định.
Chiến lược này trước tiên cần thiết để thiết lập tham số phần trăm đầu tư, tức là phần tài sản chiếm trong danh mục đầu tư. Sau đó điều chỉnh vị trí theo logic sau:
Khi vị trí là 0, số hợp đồng cần mua được tính theo tỷ lệ phần trăm đầu tư và vốn đầu tư ban đầu.
Khi nắm giữ vị thế, so sánh số tiền đã đầu tư với tỷ lệ lợi nhuận tổng tài khoản đầu tư và tỷ lệ phần trăm đầu tư được thiết lập. Nếu tỷ lệ số tiền đã đầu tư quá thấp, hãy mua hợp đồng để bổ sung phần đầu tư; Nếu tỷ lệ số tiền đã đầu tư quá cao, hãy bán hợp đồng để duy trì phần đầu tư.
Repeat bước 2, giữ cho phần đầu tư ở mức cố định.
Có thể giữ tài sản tương đối ổn định trong thời gian dài mà không cần giao dịch thường xuyên.
Điều chỉnh vị trí thường xuyên để kiếm lợi nhuận từ biến động tài sản.
Có thể phân tán đầu tư vào nhiều tài sản không liên quan, giảm rủi ro trong danh mục đầu tư.
Có thể ngăn chặn mất toàn bộ kho và tránh mất toàn bộ đầu tư khi bong bóng vỡ.
Các tài sản có biến động cao có nguy cơ mất mát cao hơn.
Các giao dịch thường xuyên đòi hỏi phải trả phí.
Việc điều chỉnh vị trí có thể bị chậm trễ, bỏ lỡ điểm mua và bán tốt nhất.
Việc thiết lập tỷ lệ phần trăm không phù hợp có thể dẫn đến giao dịch quá mức.
Bạn có thể giảm nguy cơ bằng cách:
Chọn tài sản cẩn thận và tránh các tài sản có biến động cao.
Tối ưu hóa logic điều chỉnh vị trí, giảm tần suất giao dịch.
Thiết lập các đơn vị tối thiểu thay đổi vị trí để tránh giao dịch quá mức.
Tối ưu hóa tỷ lệ phần trăm để ngăn chặn sự tập trung quá mức.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm logic dừng lỗ, tự động dừng lỗ khi giá tài sản giảm xuống một mức độ nhất định.
Thêm xác minh tín hiệu giao dịch cho sự điều chỉnh vị trí, tránh điều chỉnh vị trí tại các điểm thay đổi không theo xu hướng.
Các tham số khác nhau như tỷ lệ đầu tư, tỷ lệ dừng lỗ cho các tài sản khác nhau.
Thêm mô-đun tối ưu hóa tham số, tự động tối ưu hóa tham số dựa trên dữ liệu lịch sử.
Hỗ trợ tái đầu tư vào các tài sản khác, phân bổ tài sản động.
Chiến lược này đạt được hiệu quả phân tán đầu tư, kiểm soát rủi ro bằng cách cố định cổ phần đầu tư, áp dụng cho việc nắm giữ tài sản ổn định trong thời gian dài. Tuy nhiên, chiến lược này có vấn đề về sự trì trệ điều chỉnh vị trí, rủi ro đầu tư tài sản mạo hiểm. Sau đó, có thể nâng cao tính ổn định của chiến lược bằng cách tối ưu hóa logic dừng lỗ, xác minh tín hiệu và các phương tiện khác.
/*backtest
start: 2022-09-21 00:00:00
end: 2022-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// strategy("Fixed Fractioning", overlay=true, initial_capital=100000.0)
percent_invested=input(50.0,title="Percent Invested",maxval=100.0,minval=0.0)
fraction_invested=percent_invested/100
from_day=input(1,title="From Day",maxval=31,minval=1)
from_month=input(1,title="From Month",maxval=12,minval=1)
from_year=input(2017,title="From Year",maxval=2018,minval=1900)
to_day=input(1,title="To Day",maxval=31,minval=1)
to_month=input(1,title="To Month",maxval=12,minval=1)
to_year=input(2018,title="To Year",maxval=2018,minval=1900)
// === FUNCTION EXAMPLE === from: https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
start = timestamp(from_year, from_month, from_day, 00, 00) // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59) // backtest finish window
window() => true // create function "within window of time"
strategy.initial_capital = 50000
if strategy.position_size==0 and window()
contracts_to_buy=(fraction_invested*strategy.initial_capital)/close
strategy.entry("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)
invested=(strategy.position_size*close)/strategy.equity
if invested<fraction_invested and window()
contracts_to_buy=((fraction_invested-invested)*strategy.equity)/close
strategy.order("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)
else
if invested>fraction_invested and window()
contracts_to_sell=((invested-fraction_invested)*strategy.equity)/close
strategy.order("sell",long=false,qty=contracts_to_sell,limit=close,when=contracts_to_sell>1)