
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.
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.
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.
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.
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.
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ả.
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.
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ỗ.
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.
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.
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.
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.
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.
Độ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.
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.
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.
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.
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ễ.
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.
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.
/*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)