
Торговая стратегия волатильных каналов Дончжана определяет текущие ценовые тенденции путем расчета каналов с наивысшими и наименьшими ценами за определенный период, и в сочетании с прорывом каналов проводит длинные и короткие сделки. Эта стратегия применима к торговле акциями и цифровыми валютами с высокой волатильностью.
Стратегия строит каналы, рассчитывая максимальную цену pcmax и минимальную цену pcmin в течение последних () исторических циклов.
Верхняя полоса y = pcmax - (pcmax - pcmin) * (100 - percentDev)/100
Нижняя трасса y = pcmin + (pcmax - pcmin) * percentDev/100
В результате, 13% опрошенных считают, что это неправда.
Когда цена прорывается вверх, создается сигнал long; когда цена прорывается вниз, создается сигнал short.
Определение конкретного торгового сигнала производится следующим образом:
boundup = high > yh определить, пробился ли на рельсы
bounddn = low < yl Определить, был ли взрыв
upsign = sma(bounddn, 2) == 1 Судя по средней линии bounddn, продолжается прорыв вниз
dnsign = sma(boundup, 2) == 1 Продолжается прорыв вверх по трассе, судя по средней линииboundup
exitup = dnsign Прорыв вверх по рельсу дает сигнал равновесия
exitdn = upsign Прорыв по нисходящей трассе дает сигнал о равновесии
if upsign Прорыв нижней полосы производит многосигнал
if dnsign Прорыв вверх по рельсу дает сигнал пуска
Эта стратегия также устанавливает время начала торговли, чтобы избежать ненужных ночных позиций.
Используйте канал Донцзяна, чтобы определить тенденции, чтобы лучше отследить результаты
При этом устанавливаются сигналы о прибыли и убытка, что позволяет вести торговлю в обоих направлениях
Профилактика ошибочных сделок с помощью фильтрации поровну
Настройка опционального сдерживания убытков, управление рисками
Настройка времени начала и окончания торговли, чтобы избежать риска ночных позиций
Танцянский канал чувствителен к параметрам history и percentDev, параметры должны быть оптимизированы для различных сортов
Сигналы могут быть ошибочными при землетрясении
Прибыль может быть затронута в реальном секторе без учета факторов управления заказами.
Риск чрезмерного размещения позиций на фиксированном рынке без учета факторов управления позициями
Требуется разумное размещение торгового капитала в фиксированном состоянии без учета факторов управления капиталом
Оптимизация параметров history и percentDev, чтобы лучше адаптироваться к различным видам
Добавлены фильтры, чтобы предотвратить ошибочные сигналы при колебаниях
Добавление модуля управления позициями, чтобы контролировать долю капитала, занимаемого отдельными позициями
Добавление модуля управления капиталом, ограничивающего долю капитала в общем положении
Добавление функции управления заказами, оптимизация порядка заказов
Стратегия торговли волатильным каналом Дон Чжиан используется для определения тенденций и торговых сигналов путем прорыва канала, имеет хорошую обратную эффективность и обладает двусторонними торговыми возможностями. Однако в этой стратегии также есть некоторые риски, требующие оптимизации параметров, фильтров, управления позициями, управления капиталом, управления заказами и т. Д. Для стабильной прибыльности в реальном мире.
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
////////////////////////////////////////////////////////////
// Copyright by AlexInc v1.0 02/07/2018 @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")
fromyear = input(2018, defval = 2018, minval = 1900, 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(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
bodymin = min( open, close)
bodymax = max(open, close)
pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)
yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin
plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)
//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)
exitup = dnsign
exitdn = upsign
lot = strategy.equity / close * capital / 100
xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na
stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])
stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])
pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
stop_level_short = strategy.position_avg_price + nLoss
if pos == 0
stop_level_long = bodymin - nLoss
stop_level_short = bodymax + nLoss
//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)
if upsign
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dnsign
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if true
strategy.close_all()
//if strategy.position_size != 0
// strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
// strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)