Стратегия торговли «Черепашка» на основе канала Дончиана


Дата создания: 2023-12-25 10:57:52 Последнее изменение: 2023-12-25 10:57:52
Копировать: 3 Количество просмотров: 888
1
Подписаться
1621
Подписчики

Стратегия торговли «Черепашка» на основе канала Дончиана

Обзор

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

Стратегический принцип

Основным критерием этой стратегии является Donchian channel. Donchian channel состоит из диапазона колебаний в течение N дней с наивысшей и наименьшей ценой. Если цена прорывает верхнюю траекторию канала, то это длинный сигнал; если она прорывает нижнюю траекторию канала, то это короткий сигнал.

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

Открытие позиции при условии, что цена пересекает Donchian channel вверх и медленно пересекает Donchian channel вниз, и открывает пустую позицию при условии, что цена касается Donchian channel в противоположном направлении.

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

Эта стратегия имеет следующие преимущества:

  1. Используйте Donchian channel для определения направления тенденции, чтобы лучше отслеживать и успешно улавливать большие тенденции.

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

  3. Использование комбинации медленного Дончианского канала и медленного движущегося среднего, чтобы сбалансировать частоту торгов и точность остановки;

  4. Установлен контроль над рисками, есть механизмы сдерживания убытков, чтобы контролировать отдельные потери.

Анализ стратегических рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. В случае шокового кризиса может возникнуть меньшее число неудачных проектов;

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

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

Как бороться с этим и как его решить?

  1. Параметры могут быть скорректированы, чтобы сократить Donchian циклы и уменьшить циклы скользящих средних для различных рынков.

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

Направление оптимизации стратегии

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

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

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

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

Подвести итог

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

Исходный код стратегии
/*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()