
Chiến lược giao dịch động lượng xu hướng định lượng dễ dàng là một chiến lược giao dịch định lượng nhiều đầu trống kết hợp theo dõi xu hướng, chỉ số động lượng và kênh Bollinger Bands. Chiến lược này sử dụng các đường chéo của đường trung bình di chuyển nhanh để xác định hướng xu hướng, đồng thời kết hợp với kênh Bollinger Bands và chỉ số động lượng để xác nhận tín hiệu vào. Chiến lược này cũng có các biện pháp kiểm soát rủi ro như dừng lỗ, theo dõi dừng lỗ và quản lý vị trí.
Nguyên tắc cốt lõi của chiến lược này là sử dụng xu hướng giá và hiệu ứng động lực để nắm bắt cơ hội thị trường. Cụ thể, chiến lược sử dụng đường trung bình di chuyển của hai chu kỳ khác nhau (đường nhanh và đường chậm) để xác định hướng của xu hướng giá. Khi đường nhanh đi từ dưới lên, đại diện cho xu hướng tăng, chiến lược sẽ tạo ra nhiều tín hiệu; ngược lại, khi đường nhanh đi từ trên xuống, đại diện cho xu hướng giảm, chiến lược sẽ tạo ra tín hiệu trống.
Để xác nhận thêm xu hướng và thời gian nhập cảnh, chiến lược này cũng kết hợp các đường dẫn và động lực của Brin. Brin bao gồm ba đường: đường trung tâm là đường trung bình di chuyển, đường trên và đường dưới cộng và giảm một số chênh lệch tiêu chuẩn trên cơ sở đường trung tâm. Khi giá vượt qua đường Brin, đại diện cho năng lượng tăng mạnh hơn, chiến lược sẽ làm nhiều hơn; Khi giá vượt qua đường Brin, đại diện cho năng lượng giảm mạnh hơn, chiến lược sẽ bị bỏ trống.
Ngoài ra, chiến lược này cũng giới thiệu các chỉ số động lực, đo lường tốc độ giảm giá bằng cách so sánh giá hiện tại với giá trước một chu kỳ nhất định. Các chỉ số động lực có thể được sử dụng để đánh giá sức mạnh của xu hướng, do đó cung cấp xác nhận bổ sung cho việc tham gia.
Về quản lý vị trí, chiến lược cho phép thiết lập quy mô vị trí dựa trên số tiền tài khoản và sở thích rủi ro. Ngoài ra, chiến lược cũng có hệ thống dừng lỗ và theo dõi dừng lỗ để kiểm soát lỗ hổng rủi ro cho mỗi giao dịch.
Nhìn chung, chiến lược giao dịch động lực xu hướng định lượng dễ dàng của Quartz tìm cách nắm bắt cơ hội của xu hướng thị trường, kiểm soát rủi ro chặt chẽ và đạt được lợi nhuận vững chắc từ đầu tư thông qua nhiều khía cạnh như theo dõi xu hướng, xác nhận động lực và quản lý rủi ro.
Theo dõi xu hướng: Chiến lược sử dụng giao điểm của đường trung bình nhanh hoặc chậm để nắm bắt cơ hội xu hướng của giá cả, có thể làm nhiều xu hướng tăng hoặc giảm, thích ứng với các hoạt động khác nhau của thị trường.
Xác nhận động lực: giới thiệu chỉ số động lực như là xác nhận thứ hai của xu hướng, giúp loại bỏ tín hiệu sai và cải thiện chất lượng nhập cảnh.
Băng Brin hỗ trợ quyết định: Băng Brin có thể phản ánh phạm vi dao động của giá, phá vỡ băng Brin có thể được coi là tín hiệu của xu hướng tăng tốc hoặc biến động bất thường của giá, cung cấp tham chiếu cho nhập cảnh.
Quản lý vị trí: Chiến lược sử dụng phương pháp quản lý vị trí dựa trên tỷ lệ và giới hạn tài khoản tài chính, có thể kiểm soát linh hoạt việc sử dụng tiền cho mỗi giao dịch, sử dụng đầy đủ tiền và không tiếp xúc quá mức với rủi ro.
Hạn chế dừng lỗ: Thiết lập dừng lỗ và theo dõi dừng lỗ, có thể bảo vệ lợi nhuận khi giá đi theo hướng dự kiến, đồng thời dừng lỗ quyết định khi giá đảo ngược, kiểm soát hiệu quả mức lỗ tối đa của một giao dịch.
Tối ưu hóa đa tham số: Chiến lược bao gồm nhiều tham số có thể điều chỉnh, chẳng hạn như chu kỳ trung bình, tham số Brin, tỷ lệ dừng lỗ, và nhiều thứ khác, có thể được tối ưu hóa thông qua tham số để cải thiện khả năng thích ứng và độ bền của chiến lược.
Giao dịch thường xuyên: Chiến lược này tạo ra tín hiệu nhập vào dựa trên đường trung bình và phá vỡ vùng Brin. Khi thị trường biến động lớn, tín hiệu giao dịch có thể được tạo ra thường xuyên, dẫn đến quá nhiều giao dịch, tăng chi phí phí và chi phí điểm trượt.
Đối số nhạy cảm: chiến lược bao gồm nhiều tham số, chẳng hạn như chu kỳ trung bình, chu kỳ động lượng, tham số Brin, v.v. Sự lựa chọn các tham số khác nhau có thể có ảnh hưởng lớn đến hiệu quả của chiến lược. Nếu tham số được chọn không đúng cách, có thể dẫn đến hiệu suất chiến lược kém.
Trở trễ trong nhận dạng xu hướng: Đường trung bình di chuyển là một chỉ số bị trễ, đặc biệt là khi chu kỳ đường trung bình dài, tốc độ nhận dạng xu hướng sẽ chậm hơn và có thể bỏ lỡ thời gian nhập cảnh tốt nhất.
Rủi ro dừng lỗ: Mặc dù chiến lược đã đặt ra các biện pháp dừng lỗ, nhưng trong một tình huống cực đoan (ví dụ như nhảy nhanh), giá có thể vượt quá mức dừng lỗ trực tiếp, dẫn đến tổn thất thực tế vượt quá dự kiến.
Rủi ro tập trung vị trí: Nếu chiến lược liên tục tạo ra tín hiệu đồng chiều trong một khoảng thời gian nhất định, nó có thể dẫn đến việc quá tập trung vị trí theo một hướng nhất định, đối mặt với rủi ro giữ vị trí lớn hơn.
Rủi ro về thanh khoản: Trả giá và hiệu quả thực tế của chiến lược có thể bị ảnh hưởng bởi tính thanh khoản của thị trường, đặc biệt là khi hoạt động với số tiền lớn, có thể gặp phải vấn đề về điểm trượt và khối lượng giao dịch không đầy đủ.
Tham gia thêm các chỉ số kỹ thuật: Dựa trên đường trung bình, động lực và dải Brin hiện tại, bạn có thể thử giới thiệu thêm các chỉ số kỹ thuật, chẳng hạn như RSI, MACD, để cải thiện độ tin cậy của tín hiệu bằng cách xác nhận chung nhiều chỉ số.
Tối ưu hóa cơ chế nhập và thoát: Có thể xem xét thêm các điều kiện trong quyết định nhập và thoát, chẳng hạn như yêu cầu khối lượng giao dịch nhất định phải được đáp ứng trước khi giá phá vỡ, bằng cách sử dụng hàng loạt hoặc dừng di động khi thoát ra, để tăng tính linh hoạt và khả năng sinh lợi của chiến lược.
Các tham số điều chỉnh động: Đối với các tham số chu kỳ trung bình, chu kỳ động lực, và các tham số Brin, có thể thiết kế một cơ chế cho các tham số tự thích ứng, tùy thuộc vào tình trạng thị trường khác nhau và mức độ biến động, tham số điều chỉnh động có giá trị, tăng khả năng thích ứng của chiến lược.
Cải thiện quản lý vị trí: Trên cơ sở quản lý vị trí hiện tại, có thể giới thiệu các phương pháp quản lý tiền cao hơn, chẳng hạn như công thức Kelly, tỷ lệ cố định, quyền lợi động, v.v., để cân bằng lợi nhuận và rủi ro tốt hơn.
Kết hợp với phân tích cơ bản: Chiến lược phân tích kỹ thuật thuần túy có thể có nguy cơ không có hiệu lực hoặc không hiệu quả trên thị trường, và hiệu quả của chiến lược có thể được cải thiện nếu có thể kết hợp một số yếu tố cơ bản, như dữ liệu kinh tế vĩ mô, xu hướng ngành, và các tín hiệu kỹ thuật được lọc và xác nhận.
Tăng sự nhất quán giữa phản hồi và thực tế: Chiến lược có thể có sự khác biệt giữa hiệu suất trong phản hồi và thực tế, cần chú ý đến chất lượng thực hiện của phản hồi và thực tế, bao gồm các yếu tố như giá giao dịch, điểm trượt, độ trễ, để đảm bảo hiệu suất của thực tế với kết quả phản hồi.
Phương pháp giao dịch động của xu hướng định lượng dễ dàng là một chiến lược giao dịch định lượng kết hợp nhiều phương pháp phân tích kỹ thuật. Nó sử dụng xu hướng bắt chéo ngang hàng, đai Brin phá vỡ xu hướng xác nhận, tốc độ phản ánh chỉ số động lực, kiểm soát rủi ro dừng lỗ, quản lý vị trí tối ưu hóa sử dụng vốn, tạo thành một hệ thống quyết định và quản lý giao dịch hoàn chỉnh.
Điểm mạnh của chiến lược này là kết hợp theo dõi xu hướng với động lực, phán đoán hỗ trợ Brin, quản lý vị trí và cân nhắc dừng lỗ để nắm bắt cơ hội thị trường thông qua phân tích và ra quyết định đa chiều. Tuy nhiên, chiến lược này cũng phải đối mặt với các rủi ro tiềm ẩn như giao dịch thường xuyên, tham số nhạy cảm, không thể xác định xu hướng sau khi dừng lỗ và không thể bảo vệ các tình huống cực đoan. Điều này đòi hỏi phải liên tục cải thiện và hoàn thiện chiến lược bằng cách giới thiệu nhiều chỉ số kỹ thuật, tối ưu hóa tín hiệu phán đoán logic động lực, điều chỉnh tham số và cải thiện quản lý tài chính.
Ngoài ra, chiến lược giao dịch định lượng có thể có sự khác biệt giữa kết quả đo đạc và hiệu suất thực tế, điều này đòi hỏi phải tập trung vào các vấn đề về cấp độ thực hiện như giá giao dịch, điểm trượt, chậm trễ để nâng cao tính khả thi và ổn định của chiến lược. Đồng thời, chiến lược định lượng không chỉ giới hạn trong phân tích kỹ thuật, kết hợp hợp các yếu tố cơ bản phù hợp sẽ giúp nâng cao tính toàn diện và hiệu quả của quyết định.
Nhìn chung, chiến lược giao dịch động lực xu hướng định lượng dễ dàng cung cấp một ý tưởng hoàn chỉnh và khả thi hơn cho thực tiễn giao dịch định lượng, nhưng hiệu quả cuối cùng của chiến lược cũng phụ thuộc vào việc cân nhắc các cơ hội và rủi ro khác nhau và tối ưu hóa các chi tiết. Trong ứng dụng thực tế, cần điều chỉnh và cải tiến chiến lược phù hợp với sở thích rủi ro, quy mô vốn, thị trường giao dịch và các tình huống cụ thể của riêng bạn, và liên tục giám sát và tối ưu hóa trong hoạt động thực tế để theo đuổi hiệu suất chiến lược mạnh mẽ hơn và lý tưởng hơn.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('甲易炳', overlay=true)
// Parameters
trendPeriod = input(50, 'Trend Period')
momentumPeriod = input(14, 'Momentum Period')
bbPeriod = input(20, 'Bollinger Bands Period')
bbDeviation = input(2, 'Bollinger Bands Deviation')
fastMALen = input(23, 'Fast SMA Length')
slowMALen = input(50, 'Slow SMA Length')
longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01
shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01
stopLossPerc = input.float(0.5, 'Stop Loss %', minval=0.05, step=0.05) * 0.01
enableTrailing = input.bool(true, 'Enable Trailing')
trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01
trailingStopLossPerc = input.float(0.5, 'Trailing Stop Loss %', minval=0.05, step=0.05) * 0.01
qty_percent = input.int(20, 'Position Size %', step=1)
qty_cap = input.int(10000, 'Max Position Size', step=1000)
beast_mode = input.bool(false, 'Beast Mode')
set_cap = input.bool(true, 'Cap Position Size')
strategy.initial_capital = 50000
// Calculate position size
qty1 = (strategy.initial_capital + strategy.netprofit) * qty_percent / 10 / close
qty = (set_cap and qty1 > qty_cap) ? qty_cap : qty1
// Calculate moving averages
fastMA = ta.sma(close, fastMALen)
slowMA = ta.sma(close, slowMALen)
// Bollinger Bands
[upperBB, middleBB, lowerBB] = ta.bb(close, bbPeriod, bbDeviation)
// Entry conditions
buySignal = ta.crossover(close, fastMA) and close > upperBB
sellSignal = ta.crossunder(close, fastMA) and close < lowerBB
// Rampage mode entry conditions
if beast_mode
buySignal := buySignal and fastMA > fastMA[2]
sellSignal := sellSignal and fastMA < fastMA[2]
// Active positions
longIsActive = buySignal or strategy.position_size > 0
shortIsActive = sellSignal or strategy.position_size < 0
// Declare take profit and stop loss variables
var float longTakeProfitPrice = na
var float shortTakeProfitPrice = na
// Take profit and stop loss calculation
if longIsActive
if buySignal and not (strategy.position_size > 0)
longTakeProfitPrice := close * (1 + longTakeProfitPerc)
else
longTakeProfitPrice := nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc))
if shortIsActive
if sellSignal and not (strategy.position_size < 0)
shortTakeProfitPrice := close * (1 - shortTakeProfitPerc)
else
shortTakeProfitPrice := nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPerc))
longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
longTrailingStopLossPrice = close * (1 - trailingStopLossPerc)
shortTrailingStopLossPrice = close * (1 + trailingStopLossPerc)
// Entries and exits
if strategy.position_size == 0
strategy.entry('Long Entry', qty=qty, direction=strategy.long, when=buySignal, alert_message='Long Entry')
strategy.entry('Short Entry', qty=qty, direction=strategy.short, when=sellSignal, alert_message='Short Entry')
strategy.exit('Long Take Profit', 'Long Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : longTakeProfitPrice, trail_price=enableTrailing ? longTakeProfitPrice : na, trail_offset=enableTrailing ? longTrailingTakeProfitStepTicks : na, when=longIsActive, alert_message='Long Take Profit')
strategy.exit('Short Take Profit', 'Short Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : shortTakeProfitPrice, trail_price=enableTrailing ? shortTakeProfitPrice : na, trail_offset=enableTrailing ? shortTrailingTakeProfitStepTicks : na, when=shortIsActive, alert_message='Short Take Profit')
else
if longIsActive
strategy.exit('Long Stop Loss', 'Long Entry', stop=longTrailingStopLossPrice, when=longIsActive)
if shortIsActive
strategy.exit('Short Stop Loss', 'Short Entry', stop=shortTrailingStopLossPrice, when=shortIsActive)
// Plotting
plot(fastMA, 'Fast SMA', color=color.blue, linewidth=1, style=plot.style_line)
plot(slowMA, 'Slow SMA', color=color.orange, linewidth=1, style=plot.style_line)
plot(upperBB, 'Upper BB', color=color.green, linewidth=1, style=plot.style_line)
plot(lowerBB, 'Lower BB', color=color.red, linewidth=1, style=plot.style_line)