Стратегия торговли черепахами на основе Дончианских каналов

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

img

Обзор

Название этой стратегии - Стратегия торговли черепахами на основе каналов Дончиана. Она заимствует основную идею из знаменитых Правил торговли черепахами и использует каналы Дончиана для определения рыночных тенденций в сочетании с скользящими средними для фильтрации, реализуя относительно простую следующую стратегию тренда.

Принцип стратегии

Основным показателем для суждения этой стратегии является Дончианский канал. Дончианский канал состоит из колеблющегося диапазона самых высоких и самых низких цен в N-дневный период. Если цена прорвется через верхнюю рельсу канала, это будет длинный сигнал; если она прорвется через нижнюю рельсу канала, это будет короткий сигнал. Эта стратегия использует быстрый Дончианский канал (10 дней) для выпуска сигналов и медленный Дончианский канал (20 дней) для остановки потерь.

Кроме того, эта стратегия также вводит две скользящие средние линии (50-дневной линии и 125-дневной линии) для фильтрации сигналов. Только когда быстрая скользящая средняя линия пересекает линию медленного скользящего среднего, будут торговаться длинные позиции; Только когда быстрая скользящая средняя линия пересекает линию медленного скользящего среднего, будут торговаться короткие позиции. Это может эффективно отфильтровать некоторые ложные сигналы.

Условия открытия этой стратегии следуют: цена проходит через верхнюю рельсу Доньцзяньского канала, а скоростная средняя линия пересекает линию медленного среднего движения. Когда оба условия выполнены, будут открыты длинные позиции; цена проходит через нижнюю рельсу Доньцзяньского канала, и быстро движущаяся средняя линия пересекает линию медленного среднего движения, а затем открывает короткие позиции. Условия закрытия - когда цена касается противоположных медленных границ Доньцзяньского канала.

Анализ преимуществ

Преимущества этой стратегии:

  1. Используя канал Дончиана для определения направления тренда, эффект обратного теста лучше для успешного улавливания большого тренда;

  2. Добавление фильтра скользящей средней может отфильтровать некоторые ложные сигналы и избежать потерь;

  3. Сочетание быстрых и медленных каналов Donchain и скользящих средних может сбалансировать частоту торговли и точность стоп-лосса;

  4. Риск хорошо контролируется с механизмом стоп-лосса для контроля одиночных потерь.

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

Некоторые риски этой стратегии:

  1. На шоковом рынке может быть больше небольших проигрышных ордеров;

  2. При обратном тренде фильтрация скользящих средних увеличит затраты на открытие;

  3. На резких рынках можно добиться остановки.

Контрмеры и решения:

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

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

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Например, вводить объем, открывать позиции только тогда, когда объем увеличивается;

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

  3. Оптимизировать стратегии стоп-лосса. Ввести отслеживание стоп-лосса, волатильность стоп-лосса, время стоп-лосса и т.д., чтобы сделать стоп-лосс умнее.

Резюме

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


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Coded by Vladkos
strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5)

fromyear = input(2017, defval = 2018, minval = 1800, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(21, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
ATR=input(20,minval=1)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstoploss= input(true,defval=true,title="Stop LOSS")
///////////ATR
tra=atr(ATR)


////////////Переменные
Donchian_slow=input(20,minval=1)
Donchian_fast=input(10,minval=1)
Slow_EMA=input(125,minval=1)
Fast_EMA=input(50,minval=1)

/////////// Медленный Дончан
lower = lowest(Donchian_slow)
upper = highest(Donchian_slow)
basis = avg(upper, lower)
plot(lower,color=blue)
plot(upper,color=blue)

/////////// быстрый Дончан
lowerF = lowest(Donchian_fast)
upperF = highest(Donchian_fast)
basisF = avg(upperF, lowerF)
plot(lowerF,color=red)
plot(upperF,color=red)

////////// Скользящие средние
ema_S=ema(close,Slow_EMA)
ema_F=ema(close,Fast_EMA)
plot(ema_S,color=red)
plot(ema_F,color=green)

///////// Условия сделок
long_condition= close>=upper[1] and ema_F>ema_S  
long_exit= close<lowerF[1]

short_condition=close<=lower[1] and ema_F<ema_S
short_exit=close>upperF[1]

////////// Отправка ордеров
strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true)
strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true))
strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
    
strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true))
strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true))
strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()






Больше