Стратегия торговли с возможностью масштабирования

Автор:Чао Чжан, Дата: 2023-10-30 17:25:17
Тэги:

img

Обзор

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

Как это работает

Стратегия сначала используетswings()Функция для расчета высоких и низких уровней колебаний на основе периода просмотра.swingLookbackДолгие сигналы запускаются, когда цена превышает высокий показатель, а короткие сигналы - когда цена превышает низкий показатель.

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

Стратегия также устанавливает цель прекращения на основеstopTargetPercentпараметр для определения уровня стоп-лосса. Например, длинный стоп-лосс может быть установлен на 5% ниже высокого значения, а короткий стоп-лосс может быть установлен на 5% выше низкого значения.

Преимущество этой стратегии заключается в гибкости для корректировки периода просмотра, чтобы контролировать частоту торговли. Более короткий период просмотра делает его более чувствительным к прорывам и увеличивает частоту торговли. Более длительный период просмотра уменьшает чувствительность и частоту торговли, но может упустить возможности.

Преимущества

  • Простая логика прорыва, легкая для понимания и реализации
  • Период просмотра позволяет оптимизировать параметры и контролировать частоту торговли
  • Легко интегрирует стоп-лосс, стоп-последний и другое управление рисками
  • Очень расширяемый для добавления фильтров и повышения рентабельности
  • Применяется для любого периода времени для внутридневного или суингового трейдинга

Риски и способы их смягчения

  • Слишком короткий период просмотра может привести к переоценке
  • Слишком длительный период просмотра может лишить торговых возможностей
  • Слишком широкий стоп-лосс снижает потенциал прибыли
  • Стоп-лосс слишком жесткий может часто останавливаться

Уменьшение последствий:

  • Испытать различные периоды обратного просмотра для поиска оптимальных параметров
  • Оптимизировать уровень стоп-лосса для сбалансирования прибыли и контроля риска
  • Добавьте остановку или выход люстры для блокировки прибыли
  • Добавление фильтров для улучшения качества торговых сигналов
  • Оптимизировать параметры с помощью обратного тестирования

Возможности для расширения

Стратегия может быть улучшена несколькими способами:

  1. Проверьте различные значения периода обратного просмотра, чтобы найти оптимальные параметры.

  2. Испытайте различные временные рамки, такие как 5 м, 15 м, 1 ч, чтобы определить лучший временной план.

  3. Оптимизируйте процент стоп-лосса, чтобы сбалансировать потенциал прибыли и управление рисками.

  4. Добавьте фильтры, такие как объем, волатильность, чтобы уменьшить низкие настройки.

  5. Интегрируйте больше механизмов управления рисками, таких как остановка, получение прибыли.

  6. Оптимизация параметров с помощью анализа и машинного обучения.

  7. Внедрение ИИ/машинного обучения для автоматической оптимизации параметров.

Заключение

Скалабельная стратегия трейдинга является надежной и настраиваемой системой трейдинга. Она проста в использовании и очень адаптируема путем корректировки обратной связи и добавления фильтров. Она может легко интегрировать управление рисками для контроля риска. Благодаря оптимизации параметров и интеграции машинного обучения стратегия может развиваться с течением времени, чтобы адаптироваться к изменяющимся рынкам. В целом, это рекомендуемая универсальная стратегия трейдинга.


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

Больше