Chiến lược này sử dụng chỉ số Stoch để tạo ra tín hiệu đầu vào. Sau khi nhập vào một vị trí, nó sẽ theo dõi mức cao hoặc thấp mới trong thời gian thực để điều chỉnh stop loss một cách năng động. Đồng thời, chiến lược cũng sẽ gửi thông tin sửa đổi stop loss đến 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.
Chiến lược này tạo ra tín hiệu mua và bán dựa trên chỉ số Stoch. Khi đường Stoch K vượt qua trên đường D từ dưới, một tín hiệu mua được tạo ra. Khi đường K vượt qua dưới đường D từ trên, một tín hiệu bán được tạo ra.
Sau khi nhập một vị trí, chiến lược theo dõi 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 trong thời gian thực dưới dạng mức dừng lỗ động. Cụ thể, đối với các vị trí dài, điểm thấp nhất gần đây của giá thấp nhất được theo dõi dưới dạng mức dừng lỗ. Đối với các vị trí ngắn, điểm cao nhất gần đây của giá cao nhất được theo dõi dưới dạng mức dừng lỗ.
Khi một sự thay đổi trong mức dừng lỗ được phát hiện, chiến lược tạo ra một lệnh dừng lỗ sửa đổi thông qua chức năng cảnh báo và gửi nó đến MT4 / MT5 để điều chỉnh mức dừng lỗ của các giao dịch thực tế trong thời gian thực.
Chiến lược này hỗ trợ điều khiển bằng tay cho phép cơ chế dừng lỗ động. Khi được bật, dừng lỗ có thể được điều chỉnh theo thời gian thực theo biến động của thị trường.
Cơ chế dừng lỗ kéo dài năng động có thể điều chỉnh mức dừng lỗ một cách linh hoạt theo biến động thị trường để kiểm soát rủi ro một cách hiệu quả.
Chức năng cảnh báo cho phép gửi thông tin điều chỉnh dừng lỗ theo thời gian thực đến MT4/MT5 để quản lý tự động mà không cần can thiệp thủ công.
Các chú thích trực quan về điều chỉnh dừng lỗ trên biểu đồ giúp dễ dàng xem và xác minh các hiệu ứng dừng lỗ sau.
Hỗ trợ điều khiển bằng tay cơ chế dừng lỗ cho phép thích nghi linh hoạt với các điều kiện thị trường khác nhau.
Kết hợp với chỉ số Stoch để xác định cơ hội, chiến lược có thể lọc hiệu quả các vụ phá vỡ sai và cải thiện sự ổn định.
Chỉ số Stoch có thể tạo ra các tín hiệu chéo thường xuyên, đưa ra nguy cơ hoạt động không hiệu quả hơn.
Trong điều kiện thị trường cực đoan, dừng lỗ có thể được thâm nhập, không thể tránh hoàn toàn tổn thất lớn.
Các vấn đề kết nối cảnh báo như gián đoạn và chậm trễ có thể xảy ra, ngăn chặn phản hồi thời gian thực về các điều chỉnh.
Phạm vi điều chỉnh nên được cân bằng với chi phí.
Các kết hợp tham số khác nhau có thể được thử nghiệm để tối ưu hóa chỉ số Stoch cho chất lượng tín hiệu và hiệu suất chiến lược tốt hơn.
Các chỉ số khác có thể được kết hợp để lọc tín hiệu hoặc xác định phạm vi điều chỉnh để cải thiện tính ổn định của chiến lược.
Các thuật toán theo dõi khác nhau có thể được nghiên cứu để giảm tần suất điều chỉnh trong khi đảm bảo hiệu ứng dừng lỗ.
Các phương pháp kết nối với MT4/MT5 có thể được cải thiện để đảm bảo cảnh báo kịp thời và hiệu quả và giảm thiểu sự chậm trễ.
Các chế độ dừng lỗ tự động và thủ công có thể được giới thiệu để sử dụng các cơ chế khác nhau trong các điều kiện thị trường khác nhau.
Chiến lược này đầu tiên xác định các cơ hội giao dịch dựa trên chỉ số Stoch, sau đó theo dõi biến động giá trong các vị trí để điều chỉnh năng động các lỗ dừng và tự động phát hành thông tin điều chỉnh thông qua các lệnh cảnh báo. Cơ chế năng động như vậy cho phép quản lý rủi ro vị trí tích cực theo những thay đổi của thị trường với ít can thiệp thủ công hơn. Trong khi đó, các chú thích lỗ dừng trực quan cũng tạo điều kiện giám sát. Việc tối ưu hóa thêm các thuật toán lọc tín hiệu và theo dõi có thể cải thiện lợi nhuận. Nhìn chung, chiến lược lỗ dừng theo dõi năng động phù hợp để theo dõi thị trường biến động và quản lý rủi ro vị trí tự động.
/*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)