Эта стратегия использует скользящую среднюю в качестве торговых сигналов и объединяет ее с установленными пользователем коэффициентами стоп-лосса и прибыли, чтобы реализовать полную стратегию стоп-лосса и прибыли, основанную на индикаторах.
Основная логика этой стратегии заключается в следующем:
Используйте 3-периодическую SMA в качестве торговых сигналов, займите длинную позицию, когда SMA пересекается выше 0, и займите короткую позицию, когда SMA пересекается ниже 0.
После вступления в торговлю, пользователи могут настроить стоп-лосс и взять коэффициенты прибыли.
На основе входной цены и коэффициента стоп-лосса, установленного пользователем, автоматически устанавливается линия стоп-лосса.
На основе входной цены и соотношения прибыли, установленного пользователем, автоматически устанавливается линия прибыли.
Когда цена достигнет линии остановки, то автоматически прекратится.
После закрытия позиций, автоматически отменить стоп-лосс и принять ордера на прибыль.
В частности, стратегия рассчитывает 3-периодическую SMA с использованием функции sma и присваивает ее переменной ma.
Затем он рассчитывает длину длинной входной линии, которая составляет ma плюс ma% от lo. lo является пользовательским регулируемым параметром для длинного смещения входной линии.
Когда ma превышает 0, это сигнализирует о длинном входе. Стратегия входит в длинный с помощью функции strategy.entry с ценой входа, установленной на длинный.
В то же время устанавливаются цены стоп-лосса и прибыли. Стоп-лосса - это цена входа минус цена входа% sl. sl - параметр коэффициента стоп-лосса, регулируемый пользователем. Цена прибыли - это цена входа плюс цена входа% tp. tp - параметр коэффициента прибыли, регулируемый пользователем.
Функция Strategy.entry устанавливает стоп-лосс и прибыль отдельно. Когда цена касается линии стоп-лосса, она автоматически останавливается. Когда цена касается линии прибыли, она автоматически получает прибыль.
После закрытия позиций ордера на остановку потерь и получение прибыли автоматически отменяются с помощью функции strategy.cancel.
Преимущества этой стратегии:
Высокая степень автоматизации, отсутствие необходимости в ручном вмешательстве, подходит для алгоритмической торговли.
Настраиваемые коэффициенты стоп-лосса и прибыли для контроля риска.
Торговые сигналы поступают от индикатора, избегая ложного прорыва.
Визуализация стоп-лосса и прибыли, интуитивно.
Простая и понятная логика стратегии, легко понятная и реализуемая.
Эта стратегия также сопряжена с некоторыми рисками:
Риск ложных сигналов от индикатора.
Неправильные параметры стоп-лосса и показателя прибыли могут быть слишком свободными или слишком агрессивными.
Решение заключается в том, чтобы отфильтровать сигналы входа с трендом, объемом и т. Д.
Решение заключается в том, чтобы уменьшить размер позиции или использовать стоп-лосс.
Некоторые направления для оптимизации стратегии:
Оптимизировать параметры скользящей средней для надежности.
Оптимизировать условия входа, чтобы избежать ложного прорыва, добавить подтверждение объема и т.д.
Оптимизировать стоп-лосс и получать прибыль, использовать динамический или отслеживающий стоп-лосс и т.д.
Оптимизировать управление рисками, корректировать размер позиций, снизить риск одной сделки.
Оптимизировать время входа, комбинировать с трендом, поддержкой/сопротивлением и т.д.
Добавьте пирамиду для совокупной прибыли.
Оптимизация параметров для конкретных продуктов.
Эта стратегия обеспечивает простую и надежную техническую основу для индикаторного стоп-лосса и получения прибыли с такими преимуществами, как автоматизация и контроль рисков. Она подходит для алгоритмической торговли. Существует также много аспектов, которые можно улучшить и оптимизировать, таких как параметры индикатора, фильтры входа, стратегии стоп-лосса / получения прибыли, управление рисками и т. Д. С дальнейшими расширениями и оптимизациями она может стать еще более мощной торговой стратегией.
/*backtest start: 2023-01-01 00:00:00 end: 2023-11-09 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/ //Settings lo = input(-5.0, title = "Long-line, %") tp = input(5.0, title = "Take-profit") sl = input(2.0, title = "Stop-loss") //SMA ma = sma(ohlc4, 3) long = ma + ((ma / 100) * lo) //Orders avg = strategy.position_avg_price if ma > 0 strategy.entry("Long", strategy.long, limit = long) strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp)) strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl)) //Cancel order if strategy.position_size == 0 strategy.cancel("Take") strategy.cancel("Stop") //Lines plot(long, offset = 1, color = color.black, transp = 0) take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp) stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl) takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0) plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0) // disp_panels = input(true, title="Display info panels?") h=high info_label_off = input(20, title="Info panel offset") info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size") info_panel_x = timenow + round(change(time)*info_label_off) info_panel_y = h info_title= "-=-=-=-=- Info Panel -=-=-=-=-" info_div = "\n\n------------------------------" a = "\n\ Long : " + tostring(long) b = "\n\ Stop loss : " + tostring(stop) c = "\n\ TP : " + tostring(take) // info_text = a+c+b // info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na // label.delete(info_panel[1])