Торговая стратегия DongAnch Beach - это очень упрощенная стратегия DongAnch Beach. Она сильно отличается от первоначальной стратегии DongAnch Beach. Стратегия использует два канала DongAnch, быстрый и медленный канала. Период канала устанавливается пользователем, по умолчанию - 20 K-линий быстрого канала, 50 K-линий медленного канала.
В основном логика этой стратегии заключается в следующем:
Вычислить быстрый канал: взять самую высокую цену последнего FastRoot K-линии как трассу вверх, минимальную цену как трассу вниз; средний трассу в канале как трассу вверх.
Вычисляется медленный канал: выбирается максимальная цена ближайшего медленного корня K-линии как канал на трассу, а минимальная цена как канал вниз по трассе.
При отсутствии позиций, делают больше сигналов, чтобы цена коснулась медленного канала; делают пустые сигналы, чтобы цена коснулась медленного канала.
После открытия позиции используется скоростная трасса в качестве стоп-линии.
В процессе держания позиции, когда сигналы торговли противоположны сигналам открытия позиции, баланс выходит из позиции.
В частности, в частности:
Правила простые и простые в применении.
Настраиваемые параметры. Пользователи могут настраивать параметры в зависимости от сорта сделки и временного цикла, чтобы адаптироваться к различным рыночным условиям.
Конфликтные торговые сигналы меньше.
Автоматическое управление рисками остановки. Мобильные остановки на скоростном канале, ограничивающие однократные остановки.
В результате, в результате, в результате, в результате, в результате.
Если ценовые колебания не проявляются, это может привести к большему количеству сдерживающих потерь; это может повлиять на стратегическую прибыльность.
Отступление может быть большим. Когда тренд совершает поворот, то и прибыль в направлении движения превращается в реальный убыток.
Неправильная настройка параметров может привести к чрезмерной радикальности или консервативности. Это требует повторного тестирования для получения подходящих значений.
Высокая степень зависимости от автоматизированных транзакций. Необходимо обеспечить стабильность сервера, чтобы избежать аномалий, которые не позволят нормально автоматизировать транзакции.
Для снижения вышеперечисленных рисков можно улучшить параметровые настройки, ограничить размер кладовых, добавить модули ветроустройства и т.д.
Эта стратегия может быть оптимизирована в следующих направлениях:
Увеличение условий фильтрации открытых позиций, чтобы избежать пропущенного сигнала в точке поворота тренда. Например, анализ тренда с использованием индикаторов, таких как комбинированный индекс тренда.
Оптимизировать настройки параметров, чтобы сделать их более подходящими для различных видов торговли; например, быстрые циклы прохождения, размер позиции и т. д.
Добавление модулей управления ветром. Например, максимальное отступление, ограничение потерь в течение дня. Избегание рисковых событий, которые приводят к большим потерям.
Оптимизировать стратегию остановки; например, динамические остановки, такие как trailing stop, чтобы сделать остановки более подходящими для рыночных тенденций.
В целом, стратегия торговли в Донанчи-Бич является очень простой стратегией отслеживания трендов. Ее преимущества заключаются в том, что она легко понятна, легко автоматизируется и подходит для процедурной торговли. Однако существуют определенные риски, которые требуют дальнейшей оптимизации ее параметров в соответствии с реальными рыночными условиями.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2020 //@version=4 strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %") sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %") fast = input(20, minval=1) slow = input(50, minval=1) showof = input(true, defval = true, title = "Show offset") showll = input(true, defval = true, title = "Show lines") showdd = input(false, defval = true, title = "Show label (drawdown)") showbg = input(true, defval = true, title = "Show background") fromyear = input(1900, defval = 1900, 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") //Donchian price channel fast hf = highest(high, fast) lf = lowest(low, fast) center = (hf + lf) / 2 //Donchian price chennal slow hs = highest(high, slow) ls = lowest(low, slow) //Lines colorpc = showll ? color.blue : na colorsl = showll ? color.red : na offset = showof ? 1 : 0 plot(hs, offset = offset, color = colorpc) plot(ls, offset = offset, color = colorpc) plot(center, offset = offset, color = colorsl) //Background size = strategy.position_size colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na bgcolor(colorbg, transp = 70) //Orders truetime = true lotlong = 0.0 lotshort = 0.0 lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1] lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1] //Orders strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime) strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime) strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0) strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0) if true strategy.close_all() strategy.cancel("fast L") strategy.cancel("fast S") strategy.cancel("slow L") strategy.cancel("slow S") if showdd //Drawdown max = 0.0 max := max(strategy.equity, nz(max[1])) dd = (strategy.equity / max - 1) * 100 min = 100.0 min := min(dd, nz(min[1])) //Label min := round(min * 100) / 100 labeltext = "Drawdown: " + tostring(min) + "%" var label la = na label.delete(la) tc = min > -100 ? color.white : color.red osx = timenow + round(change(time)*10) osy = highest(100) la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)