
Стратегия использует индикатор Stoch для определения входного сигнала, и после входа она отслеживает в режиме реального времени новые высокие или новые низкие цены, что позволяет динамически корректировать стоп-пост. В то же время, стратегия также отправляет информацию о модифицированных стоп-пост через функцию оповещения в MT4/MT5, чтобы в режиме реального времени корректировать позиции в реальной сделке.
Эта стратегия основана на показателях Стоха, которые генерируют сигналы покупки и продажи, когда линия K Стоха прорывает линию D снизу; сигнал продажи, когда линия K Стоха прорывает линию D снизу.
После входа в рынок, стратегия будет в реальном времени отслеживать новейшие низкие цены на наименьшую цену и новейшие высокие цены на наибольшую цену в качестве динамического стоп-лостара. В частности, для многозаказных, будет отслеживать последние низкие цены на наименьшую цену в качестве стоп-лостара; для фрейдических, будет отслеживать последние высокие цены на наибольшую цену в качестве стоп-лостара.
Когда обнаруживается изменение стоп-стопа, стратегия генерирует измененные стоп-инструкции с помощью функции оповещения, отправляет в MT4/MT5 для корректировки стоп-стопа в реальной сделке в режиме реального времени. При этом графическая маркировка отображает изменения стоп-стопа.
Эта стратегия поддерживает ручное управление тем, включен ли динамический стоп-механизм. После его включения можно в режиме реального времени корректировать цену стоп-трекинга в зависимости от рыночных колебаний.
Применение механизма динамического отслеживания убытков позволяет гибко корректировать уровень убытков в зависимости от рыночных колебаний, обеспечивает отслеживание убытков и эффективно контролирует риск.
Используя функцию Alert, можно в режиме реального времени отправлять информацию о снятии убытков в MT4/MT5, автоматизировать управление без вмешательства человека.
Интуитивно на графике помечена информация о снятии убытков, что позволяет просматривать и проверять эффективность отслеживания убытков.
Поддержка ручного контроля за включенностью механизма отслеживания потерь, гибкая адаптация к различным рыночным условиям.
В сочетании с оценкой времени по показателю Стоха можно эффективно отфильтровать ложные прорывы и повысить стабильность стратегии.
Сточ-индикаторы могут часто пересекаться, что создает риски для более неэффективных операций. Параметры могут быть соответствующим образом скорректированы для фильтрации сигналов.
В крайнем случае, стоп-лосс может быть нарушен, и не может полностью избежать риска огромных потерь. Следует своевременно контролировать риск позиции.
В связи с возможными перебоями и задержками в связи с подключением к системе alert, в настоящее время нет возможности корректировать результаты в режиме реального времени.
Динамическое отслеживание остановок требует относительно интенсивных корректировок, которые могут привести к увеличению расходов на транзакции.
Можно тестировать различные комбинации параметров для оптимизации показателей Стоха, чтобы получить лучшее качество сигнала и эффективность стратегии.
В сочетании с другими показателями можно отфильтровать сигналы или определить величину корректировки, оптимизировать механизм остановки убытков для улучшения стабильности стратегии.
Различные алгоритмы отслеживания могут быть изучены, чтобы обеспечить эффективность сдерживания убытков при снижении частоты корректировки.
Можно оптимизировать подключение к MT4/MT5, чтобы обеспечить эффективное и своевременное оповещение и уменьшить проблемы с задержкой.
Можно ввести автоматический режим остановки и переключение на ручной режим, в разных рыночных условиях используются различные механизмы остановки.
Эта стратегия сначала определяет время покупки и продажи на основе показателя Стоха, а затем в режиме реального времени отслеживает ценовые колебания и корректирует стоп-пост во время удержания позиции, автоматизируя информацию о корректировке с помощью предупредительных указаний. Такой динамический стоп-механизм может активно управлять позиционным риском в зависимости от изменений рынка и снижать эффективность человеческого вмешательства.
/*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)