Торговая стратегия черепахи (англ. Turtle Trading Strategy) - это стратегия, которая отслеживает тренд, следующий за импульсом. Она была разработана известным трейдером Ричардом Деннисом в 1980-х годах, чтобы доказать, что трейдеры могут расти по правилам, а не рождаться.
Торговая стратегия черепахи использует два параметра N и N/2 для построения каналов. В частности, она рассчитывает самые высокие и самые низкие цены за последние N дней и N/2 дней. Когда цена превышает N-дневный канал, устанавливается длинная позиция. Когда цена падает ниже N/2-дневного канала, позиция закрывается. Точно так же, когда цена проходит N-дневный канал вниз, устанавливается короткая позиция, и закрывается, когда цена поднимается выше N/2-дневного канала. Цель состоит в том, чтобы следовать ценовым тенденциям, контролируя риск.
В коде N соответствуетenter_slow
и N/2 соответствуетenter_fast
Самые высокие цены (slowL
иfastL
) и низкие цены (slowS
иfastS
Долгие позиции открываются, когда цена превышает 55-дневный канал (enterL2
(и закрывается, когда цена опускается ниже 20-дневного канала (exitL1
Краткие позиции открываются, когда цена проходит через 55-дневный канал вниз (enterS2
(и закрывается, когда цена поднимается выше 20-дневного канала (exitS1
).
Наибольшее преимущество торговой стратегии черепахи заключается в контроле рисков. Установление позиций при ценовом прорыве и быстрое остановка при отклонениях эффективно контролирует потери на отдельных сделках.
Другим преимуществом является простой выбор параметров. Вся стратегия имеет всего 4 параметра, которые легко понять и настроить. Сами параметры также довольно стабильны, без необходимости частой оптимизации.
Самый большой риск торговой стратегии черепахи заключается в невозможности отслеживать долгосрочные тенденции. Она может упустить возможности входа, когда тенденции начинают формироваться. Кроме того, в условиях колебаний цены стратегия будет вызывать частые входы и выходы, увеличивая затраты на транзакции и риски скольжения.
Кроме того, настройки фиксированных параметров могут сильно отличаться в зависимости от продукции и режимов рынка, что требует ручной настройки на основе опыта.
Стратегия торговли черепахами может быть улучшена несколькими способами:
Добавление адаптивных возможностей к параметрам N и N/2 на основе волатильности рынка и частоты сигнала для повышения надежности системы в различных сценариях.
Включить правила обнаружения тенденций до входа, чтобы избежать неправильного входа на нестабильные рынки.
Принять подход с использованием нескольких временных рамок для подтверждения тенденций в более высокие периоды и совершать сделки в более низкие периоды.
Оптимизируйте правила стоп-лосса с использованием стоп-остановки или стоп-остановки, основанной на времени, чтобы уменьшить вывод.
Стратегия торговой черепахи эффективно отслеживает тенденции с помощью простой системы прорыва. Контроль рисков является ее самой большой силой, благодаря быстрой остановке и фиксированному размерению позиций. В то же время мы видим несколько измерений, вдоль которых стратегия может быть расширена и оптимизирована для большего количества инструментов и рыночных условий. В целом, она обеспечивает контролируемый риск способ захвата ценовых тенденций, который является важной базой для количественной торговли.
/*backtest start: 2022-12-24 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //oringinally coded by tmr0, modified by timchep //original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100) ////////////////////////////////////////////////////////////////////// // Component Code Start testStartYear = input(2011, "Backtest Start Year") testStartMonth = input(12, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=false) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop ////////////////////////////////////////////////////////////////////// shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true) enter_fast = input(20, minval=1) exit_fast = input(10, minval=1) enter_slow = input(55, minval=1) exit_slow = input(20, minval=1) fastL = highest(enter_fast) fastLC = lowest(exit_fast) fastS = lowest(enter_fast) fastSC = highest(exit_fast) slowL = highest(enter_slow) slowLC = lowest(exit_slow) slowS = lowest(enter_slow) slowSC = highest(exit_slow) enterL1 = high > fastL[1] exitL1 = low <= fastLC[1] enterS1 = low < fastS[1] exitS1 = high >= fastSC[1] enterL2 = high > slowL[1] exitL2 = low <= slowLC[1] enterS2 = low < slowS[1] exitS2 = high >= slowSC[1] if testPeriod() strategy.entry("fast L", strategy.long, when = enterL1) if not enterL1 strategy.entry("slow L", strategy.long, when = enterL2) strategy.close("fast L", when = exitL1) strategy.close("slow L", when = exitL2) if shortingEnabled and testPeriod() strategy.entry("fast S", strategy.short, when = enterS1) if not enterS2 strategy.entry("slow S", strategy.short, when = enterS2) strategy.close("fast S", when = exitS1) strategy.close("slow S", when = exitS2)