Chiến lược dừng lỗ và chốt lời dựa trên chỉ báo


Ngày tạo: 2023-11-10 11:28:06 sửa đổi lần cuối: 2023-11-10 11:28:06
sao chép: 0 Số nhấp chuột: 476
1
tập trung vào
1226
Người theo dõi

Chiến lược dừng lỗ và chốt lời dựa trên chỉ báo

Tổng quan

Chiến lược này sử dụng đường trung bình di chuyển làm tín hiệu giao dịch, kết hợp với tỷ lệ dừng lỗ tùy chỉnh của người dùng, để thực hiện một chiến lược dừng lỗ hoàn chỉnh theo kiểu chỉ số. Chiến lược này có thể tự động nhập, dừng lỗ, dừng, không cần can thiệp của con người, phù hợp với giao dịch tự động.

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

Chính sách của chúng tôi là:

  1. Sử dụng SMA 3 chu kỳ làm tín hiệu giao dịch, làm nhiều khi SMA trên đi 0 và trống khi SMA dưới đi 0;

  2. Sau khi đăng nhập, người dùng có thể tùy chỉnh tỷ lệ dừng lỗ và tỷ lệ dừng;

  3. Tự động thiết lập đường dừng dựa trên tỷ lệ lỗ hổng của giá vào và thiết lập của người dùng;

  4. Tự động thiết lập dây dừng dựa trên tỷ lệ dừng của giá vào và người dùng;

  5. Tự động dừng khi giá chạm vào đường dừng; tự động dừng khi giá chạm vào đường dừng;

  6. Sau khi thanh toán, lệnh dừng lỗ sẽ được tự động hủy bỏ.

Cụ thể, chiến lược tính toán trung bình di chuyển của 3 chu kỳ thông qua hàm sma và gán giá trị của nó cho biến ma.

Sau đó, tính toán dòng đầu vào đa đầu long, có giá trị là ma cộng với phần trăm của ma là lo. lo là tham số có thể điều chỉnh của người dùng, đại diện cho độ lệch dòng đầu vào nhiều lần.

Khi ma lên 0, biểu thị bắt đầu làm nhiều hơn, nhập vào nhiều hơn thông qua hàm strategy.entry, giá nhập là long。

Đồng thời, thiết lập giá dừng và giá dừng. Giá dừng là giá nhập cảnh trừ đi sl% của giá nhập cảnh. Sl là tham số có thể điều chỉnh của người dùng, đại diện cho tỷ lệ dừng. Giá dừng là giá nhập cảnh cộng với tp% của giá nhập cảnh.

Cài đặt lệnh dừng lỗ và lệnh dừng lại bằng hàm strategy.entry. Khi giá chạm vào đường dừng lỗ, sẽ tự động dừng lỗ; Khi giá chạm vào đường dừng, sẽ tự động dừng.

Sau khi thanh toán, lệnh dừng lỗ sẽ được tự động hủy qua hàm strategy.cancel.

Lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Mức độ tự động hóa cao, không cần sự can thiệp của con người, phù hợp với giao dịch tự động;

  2. Có thể tùy chỉnh tỷ lệ Stop Loss Stop Stop để kiểm soát rủi ro;

  3. Các tín hiệu giao dịch được lấy từ các chỉ số để tránh các đợt phá vỡ giả mạo.

  4. Các nhà khoa học đã nghiên cứu về các nguyên nhân gây ra sự cố này và đưa ra các giải pháp khác.

  5. Chiến lược này có logic rõ ràng, đơn giản và dễ hiểu để thực hiện.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro:

  1. Rủi ro của chỉ số tạo ra tín hiệu sai. Giải pháp là tối ưu hóa các tham số để đảm bảo chỉ số ổn định và đáng tin cậy.

  2. Tỷ lệ dừng lỗ được thiết lập không hợp lý, có thể quá thoải mái hoặc quá quyết liệt. Giải pháp là điều chỉnh tham số dừng lỗ cho các thị trường khác nhau.

  3. Tham gia đột phá dễ bị lừa. Giải pháp là kết hợp các tín hiệu nhập cảnh lọc như xu hướng, chỉ số giá cả.

  4. Việc rút lui có thể lớn hơn. Giải pháp là giảm tiêu chuẩn vị trí, hoặc theo dõi dừng lỗ.

Hướng tối ưu hóa chiến lược

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số của đường trung bình di chuyển để làm cho nó đáng tin cậy hơn;

  2. Tối ưu hóa điều kiện nhập cảnh, tránh phá vỡ giả mạo, có thể thêm xác nhận giá cả;

  3. Tối ưu hóa chiến lược dừng lỗ, có thể sử dụng dừng động, theo dõi dừng lỗ, v.v.

  4. Tối ưu hóa quản lý vốn, điều chỉnh tiêu chuẩn vị trí, giảm rủi ro đơn lẻ;

  5. Tối ưu hóa thời gian nhập cảnh của bộ lọc, kết hợp với xu hướng, hỗ trợ các chỉ số như ngưỡng kháng cự.

  6. Tham gia Pyramiding để thực hiện chiến lược tăng giá để tăng lợi nhuận.

  7. Tối ưu hóa tham số cho các giống cụ thể.

Tóm tắt

Chiến lược này là một chiến lược dừng lỗ theo kiểu chỉ số, có lợi thế của tự động hóa giao dịch, kiểm soát rủi ro, phù hợp với giao dịch định lượng. Tuy nhiên, cũng có một số hướng cần được tối ưu hóa, chẳng hạn như tối ưu hóa tham số chỉ số, lọc đầu vào, chiến lược dừng lỗ, quản lý tiền. Nói chung, chiến lược này cung cấp một khung kỹ thuật giao dịch đơn giản và đáng tin cậy, trên cơ sở đó có thể mở rộng và tối ưu hóa để trở thành một chiến lược mạnh mẽ hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])