В процессе загрузки ресурсов... загрузка...

Стратегия торговли черепахами

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

img

Обзор

Торговая стратегия черепахи (англ. 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 параметра, которые легко понять и настроить. Сами параметры также довольно стабильны, без необходимости частой оптимизации.

Анализ рисков

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

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

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

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

  1. Добавление адаптивных возможностей к параметрам N и N/2 на основе волатильности рынка и частоты сигнала для повышения надежности системы в различных сценариях.

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

  3. Принять подход с использованием нескольких временных рамок для подтверждения тенденций в более высокие периоды и совершать сделки в более низкие периоды.

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

Заключение

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


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

Больше