Chiến lược theo dõi dừng lỗ động


Ngày tạo: 2024-01-03 16:15:29 sửa đổi lần cuối: 2024-01-03 16:15:29
sao chép: 0 Số nhấp chuột: 596
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi dừng lỗ động

Tổng quan

Chiến lược này sử dụng chỉ số Stoch để đánh giá tín hiệu vào cửa, theo dõi giá cao hoặc thấp trong thời gian thực sau khi vào cửa, do đó điều chỉnh động điểm dừng. Đồng thời, chiến lược cũng sẽ gửi thông tin về sửa đổi dừng cho MT4 / MT5 thông qua chức năng cảnh báo, để điều chỉnh vị trí trong giao dịch thực tế trong thời gian thực.

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

  1. Chiến lược này dựa trên chỉ số Stoch để tạo ra tín hiệu mua và bán, tạo ra tín hiệu mua khi đường K của Stoch vượt qua đường D từ phía dưới; tạo ra tín hiệu bán khi đường K của Stoch vượt qua đường D từ phía trên xuống.

  2. Sau khi vào thị trường, chiến lược sẽ theo dõi trong thời gian thực mức thấp nhất của giá thấp nhất và mức cao nhất của giá cao nhất, làm điểm dừng động. Cụ thể, đối với đặt hàng nhiều, sẽ theo dõi mức thấp nhất gần đây của giá thấp nhất làm điểm dừng; đối với đặt hàng ngắn, sẽ theo dõi mức cao nhất gần đây của giá cao nhất làm điểm dừng.

  3. Khi phát hiện ra sự thay đổi của mức dừng, chiến lược sẽ tạo ra lệnh dừng sửa đổi thông qua chức năng cảnh báo, gửi đến MT4 / MT5 để điều chỉnh mức dừng trong giao dịch thực tế trong thời gian thực. Đồng thời vẽ biểu tượng đồ họa để hiển thị trực quan sự thay đổi của mức dừng.

  4. Chiến lược này hỗ trợ kiểm soát thủ công xem có kích hoạt cơ chế dừng động hay không. Sau khi được kích hoạt, giá theo dõi dừng có thể được điều chỉnh theo thời gian thực theo biến động của thị trường.

Phân tích lợi thế

  1. Sử dụng cơ chế dừng theo dõi động, có thể điều chỉnh điểm dừng một cách linh hoạt theo biến động của thị trường, thực hiện theo dõi dừng, kiểm soát rủi ro hiệu quả.

  2. Sử dụng chức năng alert có thể gửi thông tin điều chỉnh dừng lỗ trực tiếp đến MT4/MT5, quản lý tự động, không cần can thiệp của người.

  3. Thông tin điều chỉnh dừng lỗ được đánh dấu trực quan trên đồ họa để dễ dàng xem và xác minh hiệu quả theo dõi dừng lỗ.

  4. Hỗ trợ kiểm soát thủ công cho dù có kích hoạt hệ thống theo dõi dừng lỗ hay không, linh hoạt thích ứng với các điều kiện thị trường khác nhau.

  5. Kết hợp với chỉ số Stoch để đánh giá thời gian, nó có thể lọc hiệu quả các đột phá giả mạo và tăng sự ổn định của chiến lược.

Phân tích rủi ro

  1. Stoch có thể xảy ra các tín hiệu chéo thường xuyên, dẫn đến nguy cơ hoạt động không hiệu quả hơn. Các tham số có thể được điều chỉnh thích hợp để lọc tín hiệu.

  2. Trong trường hợp cực đoan, có thể phá vỡ lệnh dừng và không thể tránh hoàn toàn rủi ro mất mát lớn.

  3. alert kết nối có thể bị gián đoạn, chậm trễ, không thể phản hồi kết quả điều chỉnh trong thời gian thực, cần phải xử lý lỗi.

  4. Động thái theo dõi dừng lỗ đòi hỏi điều chỉnh tương đối dày đặc, có thể dẫn đến chi phí giao dịch nhiều hơn.

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

  1. Có thể thử nghiệm các kết hợp các tham số khác nhau để tối ưu hóa chỉ số Stoch để có được chất lượng tín hiệu và hiệu quả chiến lược tốt hơn.

  2. Có thể kết hợp với các chỉ số khác để lọc tín hiệu hoặc xác định mức độ điều chỉnh, tối ưu hóa cơ chế dừng lỗ để cải thiện ổn định chiến lược.

  3. Các thuật toán theo dõi khác nhau có thể được nghiên cứu để đảm bảo hiệu quả dừng lỗ trong khi giảm tần số điều chỉnh.

  4. Có thể tối ưu hóa cách kết nối với MT4/MT5 để đảm bảo cảnh báo kịp thời và giảm độ trễ.

  5. Có thể giới thiệu chế độ dừng tự động và chuyển đổi chế độ thủ công, các cơ chế dừng khác nhau được sử dụng cho các điều kiện thị trường khác nhau.

Tóm tắt

Chiến lược này dựa trên chỉ số Stoch để xác định thời gian mua và bán, sau đó theo dõi biến động giá trong thời gian thực trong thời gian giữ vị trí, thông tin điều chỉnh bằng cách tự động điều chỉnh thông tin thông qua lệnh cảnh báo. Cơ chế dừng lỗ động này có thể chủ động quản lý rủi ro vị trí theo sự thay đổi của thị trường và giảm hiệu quả của can thiệp nhân tạo.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Peter_O

//@version=4
strategy(title="Moving Stop-Loss mechanism", overlay=true)

// This script was created for educational purposes only and it is a spin-off of my previous script:
// https://www.tradingview.com/script/9MJO3AgE-TradingView-Alerts-to-MT4-MT5-dynamic-variables-NON-REPAINTING/
// This spin-off adds very often requested Moving Stop-Loss Mechanism - the logic here moves the stop-loss each time 
// a new pivot is detected.
//
// Last lines of the script include alert() function calls, with a syntax compatible with TradingConnector
// for execution in Forex/indices/commodities/crypto markets via MetaTrader.
// Please note that "tradeid=" variable must be passed with each alert, so that MetaTrader knows which
// trade to modify.

TakeProfitLevel=input(400)

// **** Entries logic, based on Stoch **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph

plot(stoploss_long, color=color.red, title="stoploss_long")
plot(stoploss_short, color=color.lime, title="stoploss_short")

// Stop-Loss Updating mechanism
enable_stoploss_mechanism=input(true, title="Enable Stoploss Modification Mechanism")
UpdateLongStopLoss = strategy.position_size>0 and strategy.position_size[1]>0 and piv_low and pl!=stoploss_long and not GoLong and enable_stoploss_mechanism
UpdateShortStopLoss = strategy.position_size<0 and strategy.position_size[1]<0 and piv_high and ph!=stoploss_short and not GoShort and enable_stoploss_mechanism
if UpdateLongStopLoss
    stoploss_long := pl
if UpdateShortStopLoss
    stoploss_short := ph

plotshape(UpdateLongStopLoss ? stoploss_long[1]-300*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.lime, textcolor=color.white, text="SL\nmove")
plotshape(UpdateShortStopLoss ? stoploss_short[1]+300*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.red, textcolor=color.black, text="SL\nmove")
// } End of Pivot-points and stop-loss logic

// **** Trade counter **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1
// } End of Trade counter

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if UpdateLongStopLoss
    alertsyntax_updatelongstoploss='slmod slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updatelongstoploss, freq=alert.freq_once_per_bar_close)
if UpdateShortStopLoss
    alertsyntax_updateshortstoploss='slmod slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updateshortstoploss, freq=alert.freq_once_per_bar_close)