Основная идея этой стратегии заключается в принятии торговых решений на основе ценового прорыва Дончианских каналов. Она относится к следующему типу количественных стратегий. Она может автоматически идентифицировать ценовые каналы. Когда цены проходят через верхнюю рельсу канала, будут открыты длинные позиции. Когда цены опускаются вблизи нижней рельсы канала или точки остановки потери, позиции будут закрыты. Эта стратегия направлена на захват средне- и долгосрочных ценовых тенденций и подходит для алгоритмической торговли финансовыми производными, такими как индексные фьючерсы.
Данная стратегия основана на индикаторе Donchian Channels. Donchian Channels - это каналы, на которых в течение определенного периода выделяются самые высокие и самые низкие цены.
Upper Rail = Самая высокая цена за последние n периодов Lower Rail = Самая низкая цена за последние n периодов
Когда цены проходят через верхнюю рельсу, считается, что длинная тенденция началась. Когда цены проходят через нижнюю рельсу, считается, что началась короткая тенденция. Эта стратегия рассматривает только случаи, когда верхняя рельс нарушена.
Конкретная логика торговли:
Преимущества этой стратегии включают:
Существуют также некоторые риски:
Решения:
Эта стратегия может быть дополнительно оптимизирована в следующих областях:
Общая идея этой стратегии ясна и проста в понимании и реализации. Она использует зрелые каналы Дончиана для автоматического определения направления тренда. Конфигурация также очень гибкая, чтобы удовлетворить различные потребности. При правильном стоп-лоссе и оптимизации параметров могут быть достигнуты хорошие результаты. В заключение, эта стратегия имеет низкую кривую обучения, но разумную эффективность. Она подходит в качестве стартерской количественной торговой стратегии.
/*backtest start: 2022-12-07 00:00:00 end: 2023-12-07 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/ // © Giovanni_Trombetta // Strategy to capture price channel breakouts //@version=4 strategy("ChannelsBreakout", max_bars_back=50, overlay=true) instrument = input(1, title = "Select 1: Stock/Forex, 2: Future") money = input(10000, title = "Money for each trade") backtest_start = input(2000, "Insert first year to backtest") period = input(50, title = "Period in bars of Donchian Channel") monetary_stoploss = input(1000, title = "Monetary Stop Loss") quantity = if instrument != 1 1 else int(money / close) upBarrier = highest(high,period) downBarrier = lowest(low,period) up = highest(high,period / 4) down = lowest(low,period / 4) plot(upBarrier, color=color.green, linewidth=2) plot(downBarrier, color=color.red, linewidth=2) plot(up, color=color.lime, linewidth=1) plot(down, color=color.orange, linewidth=2) longCondition = crossover(close, upBarrier[1]) and year >= backtest_start if (longCondition) strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0) closeCondition = crossunder(close, down[1]) or down < down[1] if (closeCondition) strategy.close("Long", comment = "Trailing") stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size strategy.exit("StopLoss", from_entry = "Long", stop = stop_level) plot(stop_level, color=color.yellow, linewidth=2) // l = label.new(bar_index, na, // text="PineScript Code", color= color.lime, textcolor = color.white, // style=label.style_labelup, yloc=yloc.belowbar, size=size.normal) // label.delete(l[1])