
Chiến lược mã hóa vị trí động động đa tín hiệu là một chiến lược giao dịch định lượng được thiết kế đặc biệt cho thị trường tiền điện tử, kết hợp các chỉ số phân tích kỹ thuật với hệ thống quản lý vị trí động. Ý tưởng cốt lõi là sử dụng các tín hiệu chéo của các đường trung bình di chuyển nhanh và chậm và các chỉ số tương đối mạnh (Stochastic RSI) để xác định hướng và thời gian tham gia của thị trường, đồng thời sử dụng phương pháp tăng vị trí kim loại để đối phó với sự điều chỉnh giá. Chiến lược này tự động thực hiện lệnh an toàn trong khu vực giảm giá dự kiến, kích thước của mỗi lệnh an toàn sẽ tăng dần theo tỷ lệ dự kiến, do đó giảm chi phí giữ vị trí trung bình trong quá trình giảm giá, và thu lợi nhuận bằng phẳng vị trí một lần khi giá tăng trở lại mức lợi nhuận mục tiêu.
Chiến lược này dựa trên một số thành phần công nghệ cốt lõi:
Hệ thống trung bình di chuyển képChiến lược sử dụng hai đường trung bình di chuyển ((nhanh và chậm) giao nhau làm tín hiệu đầu vào chính. Người dùng có thể chọn đường trung bình di chuyển đơn giản ((SMA), đường trung bình di chuyển chỉ số ((EMA) hoặc đường trung bình di chuyển của Hull ((HMA), và có thể chọn giao dịch khi giao nhau trên đường trung bình lên hoặc xuống tùy thuộc vào tình hình thị trường.
Chỉ số RSI StochasticNhư một điều kiện nhập cảnh phụ trợ, khi Stochastic RSI trên đường K đeo mức 5, đồng thời đường trung bình di chuyển nhanh đang trong xu hướng tăng ((trên 5 chu kỳ liên tiếp), kích hoạt tín hiệu mua.
Hệ thống đặt hàng an toàn độngSau khi nhập đầu tiên, chiến lược sẽ đặt nhiều lệnh an toàn dưới mức giá dự kiến. Các mức giá này được tính dựa trên tham số chênh lệch giá và nhân tố thu nhỏ bước dài.
Sự thay đổi kích thước vị trí: Kích thước của mỗi lệnh an toàn tăng dần theo nhân tố thu nhỏ quy mô của lệnh an toàn, tạo thành cấu trúc gia tăng.
Cơ chế cân bằng lợi nhuận mục tiêuChiến lược đặt mức lợi nhuận mục tiêu dựa trên giá giữ vị trí trung bình, và tất cả các vị trí sẽ bị phá giá khi giá tăng lên mức đó.
Quá trình thực hiện chính sách như sau:
Tín hiệu nhập cảnh đa chiều: Kết hợp các chỉ số xu hướng ((Moving Average) và chỉ số động lực ((Stochastic RSI), tăng độ chính xác đầu vào và giảm tín hiệu sai.
Khả năng thích nghi caoCác tham số chiến lược có thể được tùy chỉnh cao, người dùng có thể điều chỉnh các tham số như loại trung bình di chuyển, chu kỳ, hướng chéo, tỷ lệ chênh lệch giá theo môi trường thị trường khác nhau và sở thích rủi ro cá nhân.
Hiệu ứng trung bình chi phíGhi chú: Thông qua hệ thống đặt hàng an toàn được thiết kế sẵn, tự động gia tăng cổ phiếu khi giá giảm, giảm chi phí giữ cổ phiếu trung bình và tăng khả năng lợi nhuận cuối cùng.
Tối ưu hóa hiệu quả tài chínhCác đơn đặt hàng an toàn được thiết kế theo quy mô gia tăng để phân bổ quỹ hiệu quả hơn, nhiều tiền hơn sẽ được phân bổ cho các đơn đặt hàng có giá thấp hơn, phù hợp với tư tưởng đầu tư giá trị.
Tự động thực hiệnMột khi các tham số đã được thiết lập, chiến lược có thể được thực hiện hoàn toàn tự động, không cần sự can thiệp của con người, giảm quyết định giao dịch cảm xúc.
Tính linh hoạt và thích ứng với thị trườngBằng cách điều chỉnh đường chéo của đường trung bình di chuyển (thay lên hoặc đi xuống), chiến lược có thể thích ứng với các môi trường thị trường khác nhau (thay bò hoặc thị trường gấu).
Rủi ro vô tận: Không có thiết kế chiến lược rõ ràng để thiết lập một cơ chế dừng lỗ, có thể dẫn đến tổn thất lớn trong tình huống tiếp tục giảm. Trong điều kiện thị trường cực đoan, chẳng hạn như giá tài sản giảm mạnh hoặc trở lại bằng không, có thể dẫn đến tổn thất tài chính nghiêm trọng.
Nhu cầu tài chính caoVì chiến lược đòi hỏi phải dành tiền cho nhiều lệnh an ninh và mỗi lệnh tăng trưởng, số tiền thực tế cần thiết có thể vượt xa đầu tư ban đầu, nhà đầu tư cần đảm bảo có đủ tiền lưu động.
Có nhiều thiên vị: Kế hoạch chiến lược hiện tại chỉ hỗ trợ đa hướng, không hiệu quả trong xu hướng giảm dài hạn.
Độ nhạy tham sốHiệu suất của chiến lược phụ thuộc rất nhiều vào thiết lập tham số, tham số không đúng có thể dẫn đến kích hoạt lệnh an toàn sớm hoặc đặt hàng quá mức.
Cạm bẫy chi phí trung bìnhMặc dù chiến lược này nhằm giảm chi phí trung bình bằng cách tăng cường, nhưng nếu giá trị tài sản tiếp tục giảm và không thể phục hồi, nó vẫn có thể dẫn đến hiện tượng “rút xuống” và đóng cửa tài chính.
Các phương pháp giảm thiểu rủi ro bao gồm: áp dụng chiến lược này cho các tài sản nhìn chung là tốt; đặt đủ tiền cho các lệnh an toàn; thường xuyên kiểm tra xem các tham số chiến lược có phù hợp với môi trường thị trường; đặt giới hạn số lượng lệnh an toàn tối đa; xem xét thêm cơ chế dừng lỗ toàn cầu vào chiến lược.
Tăng hệ thống chống thiệt hạiMột trong những thiếu sót rõ ràng nhất của chiến lược là không có cơ chế dừng lỗ. Đề xuất thêm một tham số dừng lỗ toàn cầu, bắt buộc thanh toán tất cả các vị trí khi thua lỗ đạt một tỷ lệ nhất định, để bảo vệ an toàn của tiền.
Tham gia bộ lọc xu hướng thị trườngBạn có thể thêm các chỉ số định hướng có chu kỳ dài hơn, chẳng hạn như đường trung bình di chuyển dài hạn hoặc chỉ số ADX, chỉ thực hiện chiến lược khi xu hướng chính phù hợp, tránh đặt cược không cần thiết trong thị trường gấu rõ ràng.
Tối ưu hóa logic kích hoạt lệnh an toàn: Các lệnh an ninh hiện tại chỉ dựa trên kích hoạt sai lệch giá, có thể xem xét kết hợp khối lượng giao dịch, tỷ lệ biến động hoặc các chỉ số kỹ thuật khác để kích hoạt các lệnh an ninh thông minh hơn.
Đổi hướng lợi nhuận mục tiêu: có thể điều chỉnh mức lợi nhuận mục tiêu theo biến động của thị trường hoặc động thái hành vi giá sau khi tham gia, đặt lợi nhuận mục tiêu cao hơn trong môi trường thị trường biến động cao.
Thêm chức năng làm trống: Chiến lược mở rộng hỗ trợ định hướng giao dịch ngắn hạn, cho phép nó có hiệu quả như vậy trong xu hướng giảm, nâng cao khả năng thích ứng trên toàn thị trường của chiến lược.
Thêm kiểm soát thoái luiLưu ý: Thiết lập giới hạn rút tối đa, tạm dừng giao dịch hoặc đặt lại các tham số khi rút ra chiến lược vượt quá ngưỡng mốc, để ngăn chặn tổn thất liên tục trong điều kiện thị trường bất lợi.
Tối ưu hóa tham số chu kỳ: Thêm chức năng tối ưu hóa tham số tự động, điều chỉnh tham số thường xuyên dựa trên dữ liệu thị trường gần đây, để chiến lược có thể thích ứng với những thay đổi trong đặc điểm thị trường.
Các hướng tối ưu hóa này nhằm nâng cao khả năng quản lý rủi ro, khả năng thích ứng với thị trường và ổn định lâu dài của chiến lược, cho phép nó hoạt động tương đối ổn định trong nhiều môi trường thị trường.
Chiến lược mã hóa vị trí động tự điều chỉnh đa tín hiệu bằng đường tự động cung cấp một phương pháp giao dịch có hệ thống cho thị trường tiền điện tử bằng cách kết hợp các tín hiệu đầu vào của đường trung bình di chuyển và các chỉ số tương đối mạnh ngẫu nhiên, kết hợp với hệ thống đặt hàng an toàn động. Ưu điểm cốt lõi của nó là có thể tự động tăng vị trí dần khi giá giảm, giảm chi phí giữ vị trí trung bình và kiếm lợi nhuận khi giá tăng trở lại.
Tuy nhiên, chiến lược này cũng có những rủi ro rõ ràng, đặc biệt là thiếu các cơ chế dừng lỗ và mất vốn có thể gây ra trong một thị trường tiếp tục giảm. Khi sử dụng chiến lược này, các nhà đầu tư nên hiểu đầy đủ về tính chất rủi ro của nó, đảm bảo có đủ nguồn vốn dự trữ và xem xét thêm các biện pháp kiểm soát rủi ro bổ sung.
Với thiết lập tham số hợp lý và hướng tối ưu hóa được đề xuất, chiến lược này có thể trở thành một công cụ mạnh mẽ cho các nhà đầu tư dài hạn trong tiền điện tử, đặc biệt phù hợp với những nhà đầu tư tin tưởng vào giá trị dài hạn của một tài sản mã hóa cụ thể nhưng muốn tối ưu hóa chi phí đầu vào. Trong ứng dụng thực tế, khuyến nghị thử nghiệm đầy đủ trước trong môi trường mô phỏng và liên tục điều chỉnh và tối ưu hóa tham số chiến lược theo hiệu suất thị trường thực tế.
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT","balance":5000}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//
//@version=6
strategy(title = 'PEPE- DCA Strategy', overlay = true, pyramiding = 11, process_orders_on_close = true, commission_value = 0.1)
Base_order_size = input.int(1500, 'Base order Size')/close
Safety_order_size = input.int(350, 'Save order')/close
Triger_Type = input.string('Over', 'Entry at Cross Over / Under', options = ['Over', 'Under'], group = 'Deal start condition > Trading View custom signal', inline = '1', tooltip = 'Deal start condition decision')
Short_Moving_Average = input.string('SMA', 'Short Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '2', options = ['SMA', 'EMA', 'HMA'])
Short_Period = input.int(17, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '2')
Long_Moving_Average = input.string('HMA', 'Long Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '3', options = ['SMA', 'EMA', 'HMA'])
Long_Period = input.int(26, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '3')
Target_profit = input.float(1.9, 'Target profit (%)', step = 0.05, group = 'Take profit / Stop Loss', inline = '1') * 0.01
Max_safety_trades_count = input.int(5, 'Max safety trades count', maxval = 10, group = 'Safety orders', inline = '1')
Price_deviation = input.float(2.45, 'Price deviation to open safety orders (% from initial order)', step = 0.01, group = 'Safety orders', inline = '2') * 0.01
Safety_order_volume_scale = input.float(1.85, 'Safety order volume scale', step = 0.01, group = 'Safety orders', inline = '3')
Safety_order_step_scale = input.float(1.61, 'Safety order step scale', step = 0.01, group = 'Safety orders', inline = '3')
// Position status
status_none = strategy.opentrades == 0
status_long = strategy.position_size[1] == 0 and strategy.position_size > 0
/////////// Moving_Averages
Short_Moving_Average_Line = Short_Moving_Average == 'SMA' ? ta.sma(close, Short_Period) : Short_Moving_Average == 'EMA' ? ta.ema(close, Short_Period) : Short_Moving_Average == 'HMA' ? ta.sma(close, Short_Period) : na
Long_Moving_Average_Line = Long_Moving_Average == 'SMA' ? ta.sma(close, Long_Period) : Long_Moving_Average == 'EMA' ? ta.ema(close, Long_Period) : Long_Moving_Average == 'HMA' ? ta.sma(close, Long_Period) : na
///////////// Moving_Averages long condition
Base_order_Condition = Triger_Type == 'Over' ? ta.crossover(Short_Moving_Average_Line, Long_Moving_Average_Line) : ta.crossunder(Short_Moving_Average_Line, Long_Moving_Average_Line) // Buy when close crossing lower band
//////////////////// Savety order deviation
safety_order_deviation(index) =>
Price_deviation * math.pow(Safety_order_step_scale, index - 1)
pd = Price_deviation
ss = Safety_order_step_scale
//////// Cal of deviation steps
step(i) =>
i == 1 ? pd : i == 2 ? pd + pd * ss : i == 3 ? pd + (pd + pd * ss) * ss : i == 4 ? pd + (pd + (pd + pd * ss) * ss) * ss : i == 5 ? pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss : i == 6 ? pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss : i == 7 ? pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss : i == 8 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 9 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 10 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : na
long_line(i) =>
close[1] - close[1] * step(i)
////////// Savety order Triger
Safe_order_line(i) =>
i == 0 ? ta.valuewhen(status_long, long_line(0), 0) : i == 1 ? ta.valuewhen(status_long, long_line(1), 0) : i == 2 ? ta.valuewhen(status_long, long_line(2), 0) : i == 3 ? ta.valuewhen(status_long, long_line(3), 0) : i == 4 ? ta.valuewhen(status_long, long_line(4), 0) : i == 5 ? ta.valuewhen(status_long, long_line(5), 0) : i == 6 ? ta.valuewhen(status_long, long_line(6), 0) : i == 7 ? ta.valuewhen(status_long, long_line(7), 0) : i == 8 ? ta.valuewhen(status_long, long_line(8), 0) : i == 9 ? ta.valuewhen(status_long, long_line(9), 0) : i == 10 ? ta.valuewhen(status_long, long_line(10), 0) : na
l1 = Safe_order_line(1)
l2 = Safe_order_line(2)
l3 = Safe_order_line(3)
l4 = Safe_order_line(4)
l5 = Safe_order_line(5)
l6 = Safe_order_line(6)
l7 = Safe_order_line(7)
l8 = Safe_order_line(8)
l9 = Safe_order_line(9)
l10 = Safe_order_line(10)
//// take profit
TP_line = strategy.position_avg_price * (1 + Target_profit)
//Size of safety orders
safety_order_size(i) =>
Safety_order_size * math.pow(Safety_order_volume_scale, i - 1)
///plots
plot(Short_Moving_Average_Line, 'Short MA', color = color.new(color.red, 0), style = plot.style_line)
plot(Long_Moving_Average_Line, 'Long MA', color = color.new(color.green, 0), style = plot.style_line)
plot(strategy.opentrades == 1 ? l1 : na, 'Safety order1',color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 2 ? l2 : na, 'Safety order2', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 3 ? l3 : na, 'Safety order3', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 4 ? l4 : na, 'Safety order4', color =color.red, style = plot.style_linebr)
plot(strategy.opentrades == 5 ? l5 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 6 ? l6 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 7 ? l7 : na, 'Safety order6', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 8 ? l8 : na, 'Safety order7', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 9 ? l9 : na, 'Safety order8', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 10 ? l10 : na, 'Safety order9', color = color.red, style = plot.style_linebr)
plot(strategy.position_size > 0 ? TP_line : na, 'Take Profit', color = color.green, style = plot.style_linebr)
///////////////SToch-Rsi
smoothK = input.int(1, "ST_RSI -K settings for long", minval=1)
smoothD = input.int(3, "ST_RSI-D settings for long", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(9, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
////////buy cond- ST_RSI
bk = ta.crossover(k,5)
r = ta.rising(Short_Moving_Average_Line,5)
buy = bk and r
//Stradegy mod
if Base_order_Condition or buy
if (Base_order_Condition or buy ) and strategy.opentrades == 0
strategy.entry('Base order', strategy.long, qty = Base_order_size )
for i = 1 to Max_safety_trades_count by 1
i_s = str.tostring(i)
if strategy.opentrades <= i and strategy.position_size > 0 and not(strategy.position_size == 0)
strategy.entry('Safety order' + i_s, strategy.long, qty = safety_order_size(i) , limit = Safe_order_line(i))
for i = 1 to Max_safety_trades_count by 1
i_s = str.tostring(i)
if status_none
strategy.cancel('Safety order' + i_s)
strategy.exit('TP/SL', 'Base order', limit = TP_line)
strategy.exit('TP/SL', 'Safety order' + i_s, limit = TP_line)
//