Chiến lược Stop-Loss-Take Profit hai chiều dựa trên Stochastic Crossover

Tác giả:ChaoZhang, Ngày: 2024-03-08 15:12:42
Tags:

img

Tổng quan

Chiến lược này sử dụng các tín hiệu chéo của Trình dao động chứng khoán để kích hoạt các hoạt động mua và bán. Khi đường %K vượt qua trên đường %D và giá trị %K dưới 20, nó sẽ mở một vị trí dài; khi đường %K vượt qua dưới đường %D và giá trị %K trên 80, nó sẽ mở một vị trí ngắn. Ngoài ra, các tập hợp chiến lược lấy lợi nhuận và dừng lỗ để quản lý các vị trí và ngăn chặn sự mở rộng tổn thất. Hơn nữa, chiến lược cũng đặt các điều kiện hợp lý để đóng các vị trí. Khi Trình dao động chứng khoán hiển thị một tín hiệu chéo đối diện với tín hiệu mở, nó sẽ đóng vị trí dài hoặc ngắn tương ứng ngay cả khi giá lấy lợi nhuận hoặc dừng lỗ chưa đạt được.

Nguyên tắc chiến lược

  1. Tính toán các giá trị %K và %D của Stochastic Oscillator 14 giai đoạn và làm mịn chúng bằng cách sử dụng các đường trung bình di chuyển đơn giản.
  2. Xác định xem đường %K và đường %D đã qua nhau:
    • Khi đường %K vượt qua trên đường %D và giá trị %K dưới 20, nó kích hoạt tín hiệu mua và mở một vị trí dài.
    • Khi đường %K vượt dưới đường %D và giá trị %K trên 80, nó kích hoạt tín hiệu bán và mở vị trí ngắn.
  3. Đặt khoảng cách lấy lợi nhuận và dừng lỗ (trong Ticks) để quản lý các vị trí mở:
    • Đối với các vị trí dài, đặt giá TP lấy lợi nhuận trên giá nhập và giá dừng lỗ SL dưới giá nhập.
    • Đối với các vị trí ngắn, đặt giá lấy lợi nhuận TP dưới giá nhập và giá dừng lỗ SL trên giá nhập.
    • Khi giá đạt đến giá lấy lợi nhuận hoặc giá dừng lỗ, đóng vị trí tương ứng.
  4. Thiết lập các điều kiện hợp lý để đóng các vị trí:
    • Khi đường %K vượt qua dưới đường %D và giá trị %K nhỏ hơn hoặc bằng 80, đóng tất cả các vị trí dài.
    • Khi đường %K băng qua trên đường %D và giá trị %K lớn hơn hoặc bằng 20, đóng tất cả các vị trí ngắn.

Phân tích lợi thế

  1. Chiến lược này sử dụng Stochastic Oscillator làm chỉ số tín hiệu giao dịch chính, được sử dụng rộng rãi trong giao dịch định lượng và có thể nắm bắt hiệu quả các điều kiện thị trường mua quá mức và bán quá mức.
  2. Chiến lược đặt ra cả lợi nhuận / dừng lỗ và các điều kiện hợp lý để đóng các vị trí, có thể kiểm soát rủi ro đến một mức độ nhất định và tránh sự mở rộng của tổn thất.
  3. Logic chiến lược là rõ ràng, dễ hiểu và thực hiện, phù hợp cho người mới bắt đầu học và sử dụng.

Phân tích rủi ro

  1. Stochastic Oscillator có thể tạo ra nhiều tín hiệu sai trong một thị trường hỗn loạn, dẫn đến tần suất giao dịch cao và chi phí giao dịch tăng.
  2. Chiến lược này không điều chỉnh các vị trí một cách năng động, và khoảng cách lấy lợi nhuận và dừng lỗ cố định có thể không kiểm soát hiệu quả rủi ro trong thời gian biến động thị trường nghiêm trọng.
  3. Các thông số trong chiến lược (chẳng hạn như thời gian dao động Stochastic, khoảng cách lấy lợi nhuận và dừng lỗ, v.v.) là cố định và không được tối ưu hóa cho các điều kiện thị trường khác nhau, có thể ảnh hưởng đến khả năng thích nghi của chiến lược.

Hướng tối ưu hóa

  1. Xem xét việc giới thiệu các chỉ số kỹ thuật khác hoặc các chỉ số tâm lý thị trường để được sử dụng cùng với Stochastic Oscillator để cải thiện độ tin cậy của tín hiệu giao dịch và giảm các tín hiệu sai.
  2. Tối ưu hóa quản lý vị trí bằng cách điều chỉnh năng động khoảng cách lấy lợi nhuận và dừng lỗ dựa trên điều kiện biến động thị trường, hoặc áp dụng các phương pháp quản lý tiền tiên tiến hơn như tiêu chí Kelly.
  3. Sử dụng các phương pháp tối ưu hóa như thuật toán di truyền và tìm kiếm lưới để tối ưu hóa các thông số chiến lược và tìm sự kết hợp các thông số tối ưu thích nghi với các điều kiện thị trường khác nhau.
  4. Xem xét thêm các điều kiện lọc, chẳng hạn như thời gian giao dịch và biến động của các công cụ giao dịch, để giảm giao dịch trong điều kiện thị trường không thuận lợi.

Tóm lại

Chiến lược stop-loss take-profit hai chiều dựa trên giao dịch chéo Stochastic là một chiến lược giao dịch định lượng đơn giản và dễ hiểu. Nó kích hoạt các hoạt động mua và bán thông qua các tín hiệu chéo của Trình dao động Stochastic và thiết lập lợi nhuận / dừng lỗ và các điều kiện hợp lý để đóng các vị trí để quản lý rủi ro. Ưu điểm của chiến lược này là logic rõ ràng và phù hợp cho người mới bắt đầu học và sử dụng; tuy nhiên, nó cũng có một số rủi ro, chẳng hạn như Trình dao động Stochastic có thể tạo ra nhiều tín hiệu sai trong một thị trường hỗn loạn, và các phương pháp quản lý vị trí cố định có thể không thích nghi với các điều kiện thị trường khác nhau. Để cải thiện hơn nữa hiệu suất của chiến lược, chúng ta có thể giới thiệu các chỉ số khác, xem xét quản lý vị trí, tối ưu hóa tham số và thêm các điều kiện lọc mẫu. Nói chung, chiến lược này có thể phục vụ như một chiến lược giao dịch định lượng cơ bản và thông qua tối ưu hóa và cải tiến liên tục, nó dự kiến sẽ đạt được kết quả tốt trong giao dịch.


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("How to force strategies fire exit alerts not reversals", initial_capital = 1000, slippage=1, commission_type = strategy.commission.cash_per_contract, commission_value = 0.0001, overlay=true) 
// disclaimer: this content is purely educational, especially please don't pay attention to backtest results on any timeframe/ticker

// Entries logic: based on Stochastic crossover
k = ta.sma(ta.stoch(close, high, low, 14), 3)
d = ta.sma(k, 3)
crossover = ta.crossover(k,d)
crossunder = ta.crossunder(k,d)

if (crossover and k < 20)
	strategy.entry("Buy", strategy.long, alert_message="buy")
if (crossunder and k > 80)
	strategy.entry("Sell", strategy.short, alert_message="sell")

// StopLoss / TakeProfit exits:
SL = input.int(600, title="StopLoss Distance from entry price (in Ticks)")
TP = input.int(1200, title="TakeProfit Distance from entry price (in Ticks)")
strategy.exit("xl", from_entry="Buy", loss=SL, profit=TP, alert_message="closebuy")
strategy.exit("xs", from_entry="Sell", loss=SL, profit=TP, alert_message="closesell")

// logical conditions exits:
if (crossunder and k <= 80)
	strategy.close("Buy", alert_message="closebuy")
if (crossover and k >= 20)
	strategy.close("Sell", alert_message="closesell")

Thêm nữa