Эта стратегия может быть адаптирована к различным временным рамкам путем корректировки параметров и может легко интегрировать дополнительные фильтры и механизмы управления рисками для оптимизации.
Стратегия сначала используетswings()
Функция для расчета высоких и низких уровней колебаний на основе периода просмотра.swingLookback
Долгие сигналы запускаются, когда цена превышает высокий показатель, а короткие сигналы - когда цена превышает низкий показатель.
В частности, длинный сигнал запускается, когда цена закрытия больше или равна высокой цене. короткий сигнал запускается, когда цена закрытия меньше или равна низкой цене.
Стратегия также устанавливает цель прекращения на основеstopTargetPercent
параметр для определения уровня стоп-лосса. Например, длинный стоп-лосс может быть установлен на 5% ниже высокого значения, а короткий стоп-лосс может быть установлен на 5% выше низкого значения.
Преимущество этой стратегии заключается в гибкости для корректировки периода просмотра, чтобы контролировать частоту торговли. Более короткий период просмотра делает его более чувствительным к прорывам и увеличивает частоту торговли. Более длительный период просмотра уменьшает чувствительность и частоту торговли, но может упустить возможности.
Уменьшение последствий:
Стратегия может быть улучшена несколькими способами:
Проверьте различные значения периода обратного просмотра, чтобы найти оптимальные параметры.
Испытайте различные временные рамки, такие как 5 м, 15 м, 1 ч, чтобы определить лучший временной план.
Оптимизируйте процент стоп-лосса, чтобы сбалансировать потенциал прибыли и управление рисками.
Добавьте фильтры, такие как объем, волатильность, чтобы уменьшить низкие настройки.
Интегрируйте больше механизмов управления рисками, таких как остановка, получение прибыли.
Оптимизация параметров с помощью анализа и машинного обучения.
Внедрение ИИ/машинного обучения для автоматической оптимизации параметров.
Скалабельная стратегия трейдинга является надежной и настраиваемой системой трейдинга. Она проста в использовании и очень адаптируема путем корректировки обратной связи и добавления фильтров. Она может легко интегрировать управление рисками для контроля риска. Благодаря оптимизации параметров и интеграции машинного обучения стратегия может развиваться с течением времени, чтобы адаптироваться к изменяющимся рынкам. В целом, это рекомендуемая универсальная стратегия трейдинга.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m 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/ // © deperp //@version=5 // strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0) // Backtest Time Period useDateFilter = input.bool(true, title="Begin Backtest at Start Date", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2020"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true swingLookback = input.int(20, title="Swing Lookback", minval=3) stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1) // Calculate lockback swings swings(len) => var highIndex = bar_index var lowIndex = bar_index var swingHigh = float(na) var swingLow = float(na) upper = ta.highest(len) lower = ta.lowest(len) if high[len] > upper highIndex := bar_index[len] swingHigh := high[len] if low[len] < lower lowIndex := bar_index[len] swingLow := low[len] [swingHigh, swingLow, highIndex, lowIndex] // Strategy logic [swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback) longCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortCondition = inTradeWindow and (ta.crossunder(close, swingLow)) if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) longStopTarget = close * (1 + stopTargetPercent / 100) shortStopTarget = close * (1 - stopTargetPercent / 100) strategy.exit("Long Stop Target", "Long", limit=longStopTarget) strategy.exit("Short Stop Target", "Short", limit=shortStopTarget) // Plot break lines // line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right) // line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right) // Alert conditions for entry and exit longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow)) longExitCondition = close >= longStopTarget shortExitCondition = close <= shortStopTarget alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position") alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position") alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position") alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")