Стратегия отслеживания стоп-потери

Автор:Чао Чжан, Дата: 2024-01-03 16:15:29
Тэги:

img

Обзор

Эта стратегия использует индикатор Stoch для генерации сигналов входа. После входа в позицию, он будет отслеживать новые максимумы или минимумы в режиме реального времени для динамической корректировки стоп-лосса. В то же время стратегия также будет отправлять информацию о модификации стоп-лосса в MT4/MT5 через функцию оповещения для корректировки позиций в реальной торговле.

Принцип стратегии

  1. Стратегия генерирует сигналы покупки и продажи на основе индикатора Stoch. Когда линия Stoch K пересекает линию D снизу, генерируется сигнал покупки. Когда линия K пересекает линию D сверху, генерируется сигнал продажи.

  2. После входа в позицию стратегия отслеживает последний минимум самой низкой цены и последний максимум самой высокой цены в режиме реального времени как динамические уровни стоп-лосса.

  3. Когда обнаруживается изменение уровня стоп-лосса, стратегия генерирует заказ на изменение стоп-лосса через функцию оповещения и отправляет его в MT4/MT5, чтобы настроить уровень стоп-лосса фактических сделок в режиме реального времени.

  4. Эта стратегия поддерживает ручное управление тем, чтобы включить механизм динамической остановки убытков.

Анализ преимуществ

  1. Динамический механизм отслеживания стоп-лосса может гибко регулировать уровни стоп-лосса в соответствии с колебаниями рынка для эффективного контроля рисков.

  2. Функция оповещения позволяет в режиме реального времени отправлять информацию о корректировке стоп-лосса в MT4/MT5 для автоматизированного управления без ручного вмешательства.

  3. Визуальные аннотации корректировок стоп-лосса на графике облегчают просмотр и проверку последних эффектов стоп-лосса.

  4. Поддержка ручного управления механизмом стоп-лосса позволяет гибко адаптироваться к различным рыночным условиям.

  5. В сочетании с индикатором Stoch для определения возможностей, стратегия может эффективно фильтровать ложные прорывы и улучшать стабильность.

Анализ рисков

  1. Индикатор Stoch может генерировать частые перекрестные сигналы, что вызывает риск более неэффективных операций.

  2. В экстремальных рыночных условиях можно проникнуть в стоп-лосс, не имея возможности полностью избежать огромных потерь.

  3. Возможны проблемы с подключением, такие как прерывания и задержки, что предотвращает обратную связь в режиме реального времени.

  4. Динамический режим остановки остановки требует относительно частых корректировок, что может привести к более высоким торговым затратам.

Руководство по оптимизации

  1. Для оптимизации показателя Stoch для улучшения качества сигнала и эффективности стратегии можно протестировать различные комбинации параметров.

  2. Другие показатели могут быть объединены для фильтрации сигналов или определения диапазонов корректировки для повышения стабильности стратегии.

  3. Различные алгоритмы отслеживания могут быть изучены, чтобы уменьшить частоту регулировки при одновременном обеспечении эффектов остановки потерь.

  4. Способы подключения к MT4/MT5 могут быть улучшены для обеспечения своевременного и эффективного оповещения и минимизации задержек.

  5. Для использования различных механизмов при различных рыночных условиях могут быть введены автоматические и ручные режимы остановки потерь.

Резюме

Эта стратегия сначала определяет торговые возможности на основе индикатора Stoch, затем отслеживает колебания цен во время позиций для динамической корректировки стоп-потерь и автоматически выдает информацию об корректировке через предупредительные ордера. Такой динамический механизм позволяет активно управлять рисками позиций в соответствии с изменениями рынка с меньшим количеством ручного вмешательства. Между тем, интуитивные аннотации стоп-потерь также облегчают мониторинг. Дальнейшие оптимизации фильтрации сигналов и алгоритмов отслеживания могут улучшить прибыльность. В целом, динамическая стратегия стоп-потерь отслеживания подходит для отслеживания волатильных рынков и автоматизированного управления рисками позиций.


/*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)


Больше