Торговые стратегии, основанные на волновых трендах


Дата создания: 2023-12-19 12:07:14 Последнее изменение: 2023-12-19 12:07:14
Копировать: 0 Количество просмотров: 1121
1
Подписаться
1621
Подписчики

Торговые стратегии, основанные на волновых трендах

Обзор

Это торговая стратегия, основанная на индикаторе волновой тенденции LazyBear. Эта стратегия использует волновую тенденцию ценовых колебаний для определения перекупа и перепродажи на рынке, а также для долговых и коротких торгов.

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

Эта стратегия основана на волновом трендовом индикаторе LazyBear. Сначала рассчитывается средняя цена ((AP), затем рассчитывается показательная скользящая средняя цена ((ESA) AP и показательная скользящая средняя абсолютных ценовых изменений ((D). На основе этого рассчитывается волновой индекс ((CI), затем рассчитывается показательная скользящая средняя CI, получается волновая трендовая линия ((WT).

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

Это очень простая, но очень практичная стратегия для отслеживания трендов.

  1. Основанный на волновых трендовых показателях, можно четко определить ценовые тенденции и настроения рынка
  2. Поскольку WT имеет золотой крест и мертвый крест для определения плюсов и минусов, его можно легко использовать.
  3. Настраиваемые параметры регулируют чувствительность WT-проводов для различных циклов
  4. Добавление дополнительных условных фильтровальных сигналов, таких как ограничение окна времени торговли

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

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

  1. В качестве стратегии отслеживания тенденций, в сборе рынка может быть создано множество ошибочных сигналов
  2. WT-линия сама по себе является отсталой и может пропустить быстрый поворот цены
  3. Параметры по умолчанию могут не подходить для всех сортов и циклов, требуется оптимизация
  4. Без механизма хранения убытков, одностороннее хранение может занять слишком много времени

Основные решения:

  1. Оптимизация параметров, регулирование чувствительности WT-линий
  2. Добавить другие показатели для проверки, чтобы избежать ошибочных сигналов
  3. Настройка остановки и остановки
  4. Ограничение количества сделок или позиций в день

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

В этой стратегии есть место для дальнейшей оптимизации:

  1. Оптимизация параметров WT, чтобы сделать его более чувствительным или более стабильным
  2. Различные комбинации параметров на основе различных циклов
  3. Добавление индексов количественных цен, индексов колебаний и т. д. в качестве подтверждающих сигналов
  4. Добавление логики стоп-лост и стоп-стоп
  5. Улучшение форм хранения, таких как пирамидальные формы хранения, сетчатые сделки и т. д.
  6. Методы, такие как машинное обучение, для выявления лучших особенностей и правил торговли

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

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

Исходный код стратегии
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note. 
//
//@version=4
     
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)

plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)

//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
    
longCondition  = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())      

//strategy.entry(id="Short Entry", long=false, when=shortCondition)