
Торговая стратегия черепах (англ. Turtle Trading Strategy) - это стратегия отслеживания тенденций, которая отслеживает прорывную динамику. Она была разработана известным трейдером Ричардом Деннисом (англ. Richard Dennis) в 1980-х годах для проверки того, могут ли трейдеры быть воспитаны правилами, а не врожденными.
Стратегия трейдинга на пляже использует два параметра N и N / 2 для построения каналов. В частности, рассчитывается наивысшая цена за последние N дней и N / 2 дней соответственно. Установление многоочередных позиций при превышении цены N дневного канала, устранение позиций при падении цены ниже N / 2 дневного канала; Установление пустых позиций при падении цены ниже N дневного канала, устранение позиций при превышении цены ниже N / 2 дневного канала.
В коде N соответствуетenter_slow, N/2 соответствуетenter_fast│ наивысшая цена за последние 55 дней и наивысшая цена за последние 20 дней соответственно│slowLиfastLМинимальная ценаlowest(slowS和fastS)。当价格超过55天通道时做多(enterL2),当价格跌破20天通道时平多仓(exitL1);当价格跌破55天通道时做空(enterS2),当价格超过20天通道时平空仓(exitS1`)。
Самым большим преимуществом стратегии торговли на берегу является контроль риска. Вы можете эффективно контролировать одиночные потери, создавая позиции при прорыве цены и быстро останавливая потери при ее отступлении. При этом применяется принцип управления средствами с фиксированной долей, что еще больше снижает риск.
Еще одним преимуществом является простота выбора параметров. Вся стратегия имеет всего 4 параметра, которые легко понять и скорректировать. Сами параметры также относительно стабильны и не требуют частой оптимизации.
Самый большой риск от стратегии береговой торговли заключается в том, что она не может отслеживать долгосрочные тенденции. Когда тенденция начинает формироваться, стратегия может упустить возможность входа. Кроме того, при ценовых волатильностях стратегия часто открывает позиции, увеличивая затраты на торговлю и риск скольжения.
Кроме того, фиксированные параметры могут сильно различаться в зависимости от разных сортов и рыночных условий. Это требует адаптации с помощью человеческого опыта.
Оптимизация стратегии торговли морскими акулами может быть осуществлена в следующих аспектах:
Добавлена функция самостоятельной адаптации параметров. Параметры N, N/2 могут автоматически корректироваться в зависимости от волатильности рынка и частоты сигналов, чтобы адаптироваться к большему количеству сценариев.
Добавление правил определения тренда. Прежде чем начать, нужно определить направление тренда, чтобы избежать ошибочного входа в ситуацию с колебаниями цен.
Сочетание нескольких стратегий unity в более высоких временных периодах, определение направления тренда в более низких временных периодах.
Оптимизация стратегии остановки потерь.
Стратегия трейдинга на морских черепах обеспечивает эффективное отслеживание тенденций с помощью простой системы прорыва. Контроль риска является наибольшим преимуществом этой стратегии, что обусловлено быстрым стоп-подом и управлением фиксированными средствами. В то же время мы также видим, что стратегия может быть расширена и оптимизирована с нескольких сторон, чтобы адаптироваться к большему количеству сортов и рыночной среде.
/*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)