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

Автор:Чао Чжан, Дата: 2023-12-01 14:41:57
Тэги:

img

Обзор

Динамическая стратегия торговли сеткой рассчитывает скользящую среднюю линию и ее верхние и нижние пути для динамического установления диапазона торговли сеткой.

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

Стратегия сначала рассчитывает скользящую среднюю линию определенного периода n и верхние и нижние пути скользящей средней линии. Верхний путь - это скользящая средняя линия * (1 + входный параметр std), а нижний путь - скользящая средняя линия * (1 - входный параметр std). Это создает динамически регулируемую зону диапазона торговли.

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

В частности, мы используем bool массив order_array для записи состояния торговли каждой линии сетки. Когда линия сетки запускает длинное условие, соответствующее состояние в order_array устанавливается на true, что указывает на то, что линия сетки уже имеет позицию. Когда цены падают и нарушают линию сетки, состояние предыдущей линии сетки в order_array устанавливается на false и выпускается закрывающий сигнал.

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

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

  1. Использование скользящих средних для создания динамически скорректированного диапазона торговли может скорректировать диапазон на основе волатильности рынка, чтобы сделать стратегию более адаптивной к рынку.

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

  3. Количество сети и распределение капитала принимают равные расстояния и равное распределение, что может хорошо контролировать размер единичных позиций и снижать риск единичных позиций.

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

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

Стратегия также сопряжена с некоторыми рисками:

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

  2. Если параметры не установлены должным образом, это приведет к чрезмерно большим или маленьким торговым зонам и сетям, что повлияет на эффективность стратегии.

  3. Стратегия не учитывает некоторые экстремальные рыночные условия, такие как разрывы в ценах, краткосрочные взрывоопасные рост или падение, и т. д. Эти условия могут привести к тому, что стратегия прорвется через несколько сетей, что приведет к потерям, не поддающимся контролю риска.

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

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

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

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

  3. Условные ордера могут быть установлены для установки ордеров стоп-лосса заранее на определенном расстоянии от линий сети, чтобы играть роль предварительного стоп-лосса и контроля потерь в экстремальных рыночных условиях.

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

Резюме

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


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

//@version=5
strategy('Grid Trading Strategy', overlay=true)

// Input
ma_length = input.int(300, 'Moving Average Length',group = 'Moving Average Conditions', step = 10)
std = input.float(0.03, title='Upper and Lower Grid Deviation', group='Grid Conditions', step = 0.01)
grid = input.int(15, maxval=15, title='Grid Line Quantity', group='Grid Conditions')

// Moving Average
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
    array.push(grid_array, lower_bound + grid_width * i)
var order_array = array.new_bool(grid, false)    
strategy.initial_capital = 10000
// Entry Conditions
for i = 0 to grid - 1 by 1
    if close < array.get(grid_array, i) and not array.get(order_array, i)
        buy_id = i
        array.set(order_array, buy_id, true)
        strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
    if close > array.get(grid_array, i) and i!=0
        if array.get(order_array, i-1)
            sell_id = i - 1
            array.set(order_array, sell_id, false)
            strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))

plot(grid > 0 ? array.get(grid_array,0) : na, color = color.yellow, transp = 10)
plot(grid > 1 ? array.get(grid_array,1) : na, color = color.yellow, transp = 10)
plot(grid > 2 ? array.get(grid_array,2) : na, color = color.yellow, transp = 10)
plot(grid > 3 ? array.get(grid_array,3) : na, color = color.yellow, transp = 10)
plot(grid > 4 ? array.get(grid_array,4) : na, color = color.yellow, transp = 10)
plot(grid > 5 ? array.get(grid_array,5) : na, color = color.yellow, transp = 10)
plot(grid > 6 ? array.get(grid_array,6) : na, color = color.yellow, transp = 10)
plot(grid > 7 ? array.get(grid_array,7) : na, color = color.yellow, transp = 10)
plot(grid > 8 ? array.get(grid_array,8) : na, color = color.yellow, transp = 10)
plot(grid > 9 ? array.get(grid_array,9) : na, color = color.yellow, transp = 10)
plot(grid > 10 ? array.get(grid_array,10) : na, color = color.yellow, transp = 10)
plot(grid > 11 ? array.get(grid_array,11) : na, color = color.yellow, transp = 10)
plot(grid > 12 ? array.get(grid_array,12) : na, color = color.yellow, transp = 10)
plot(grid > 13 ? array.get(grid_array,13) : na, color = color.yellow, transp = 10)
plot(grid > 14 ? array.get(grid_array,14) : na, color = color.yellow, transp = 10)

Больше