Стратегия торговли по фиксированной сетке


Дата создания: 2023-11-16 17:09:45 Последнее изменение: 2023-11-16 17:09:45
Копировать: 0 Количество просмотров: 851
1
Подписаться
1617
Подписчики

Стратегия торговли по фиксированной сетке

Обзор

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

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

В этой стратегии сначала устанавливается стартовая цена sprice и пропорциональный размер расстояния по каждому уровню gridpercent. Затем на основе стартовой цены и пропорционального размера рассчитывается цена покупки и продажи на 10 уровнях.

Формула цены покупки:

b1=sprice-(sprice*p1)

b2=sprice-(sprice*p2)

b3=sprice-(sprice*p3)

p1 - p10 - это соотношение, рассчитанное по уровню gridpercent.

Продажа по цене:

s1=b1+(sprice*p1)

s2=b2+(sprice*p1)

s3=b3+(sprice*p1)

Условия покупки: покупка будет инициирована, когда цена закрытия будет ниже соответствующей цены покупки:

if (close

strategy.entry(“b1”, strategy.long, when=(close

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

if (close>s1)

strategy.exit(“b1”, when=(close>s1))

Это позволяет реализовать стратегию фиксированной сетки “покупка-продажа”.

Стратегические преимущества

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

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

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

  3. “Все, что мы делаем, - это выигрыш, независимо от того, идет ли рынок вверх или вниз”.

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

  5. Можно увеличить размер позиции, увеличив количество ячеек.

  6. Это позволяет избежать крупных убытков в экстремальных ситуациях.

Стратегический риск

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

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

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

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

  4. Системы автоматического трейдинга рискуют встряхивать сделки.

  5. В результате концентрационных взрывов убытки увеличились.

Соответствующие решения:

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

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

  3. Увеличение стоп-лосса для контроля риска.

  4. Необходимо обеспечить надлежащую гибкость цен на сделки, чтобы избежать очередей.

  5. Настройка контроля риска, ограничение максимального убытка.

Оптимизация стратегии

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

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

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

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

  4. При добавлении стоп-полей в точке повышенного риска, оптимизируйте положение стоп-полей, наблюдая за историческими стоп-полями.

  5. В сочетании с стратегией управления капиталом, динамическая корректировка позиций в зависимости от прибыли.

  6. Оптимизация управления позициями и максимальная эффективность использования капитала.

  7. Оптимизация исполнения сделок с использованием таких алгоритмов, как TWAP, для уменьшения затрат на удар.

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Lionkind

//@version=5
strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1)

// Fix 35k price as starting point and 1% as a distance

sprice=input(40500,"Starting price")
gridpercent=input(1,"Percent")

// calculate the % of the 10 layers 

p1=((gridpercent*1)/100)
p2=((gridpercent*2)/100)
p3=((gridpercent*3)/100)
p4=((gridpercent*4)/100)
p5=((gridpercent*5)/100)
p6=((gridpercent*6)/100)
p7=((gridpercent*7)/100)
p8=((gridpercent*8)/100)
p9=((gridpercent*9)/100)
p10=((gridpercent*10)/100)

//set buy prices 

b1=sprice-(sprice*p1)
b2=sprice-(sprice*p2)
b3=sprice-(sprice*p3)
b4=sprice-(sprice*p4)
b5=sprice-(sprice*p5)
b6=sprice-(sprice*p6)
b7=sprice-(sprice*p7)
b8=sprice-(sprice*p8)
b9=sprice-(sprice*p9)
b10=sprice-(sprice*p10)

//set sell prices

s1=b1+(sprice*p1)
s2=b2+(sprice*p1)
s3=b3+(sprice*p1)
s4=b4+(sprice*p1)
s5=b5+(sprice*p1)
s6=b6+(sprice*p1)
s7=b7+(sprice*p1)
s8=b8+(sprice*p1)
s9=b9+(sprice*p1)
s10=b10+(sprice*p1)

//Long conditions

lc1=close<b1
lc2=close<b2
lc3=close<b3
lc4=close<b4
lc5=close<b5
lc6=close<b6
lc7=close<b7
lc8=close<b8
lc9=close<b9
lc10=close<b10

//exit conditions
ec1=close>s1
ec2=close>s2
ec3=close>s3
ec4=close>s4
ec5=close>s5
ec6=close>s6
ec7=close>s7
ec8=close>s8
ec9=close>s9
ec10=close>s10

//long orders
if (lc1)
    strategy.entry("b1", strategy.long, when=(lc1))
    
if (lc2)
    strategy.entry("b2", strategy.long, when=(lc2))
    
if (lc3)
    strategy.entry("b3", strategy.long, when=(lc3))    
if (lc4)
    strategy.entry("b4", strategy.long, when=(lc4))    
if (lc5)
    strategy.entry("b5", strategy.long, when=(lc5))
if (lc6)
    strategy.entry("b6", strategy.long, when=(lc6))
if (lc7)
    strategy.entry("b7", strategy.long, when=(lc7))    
if (lc8)
    strategy.entry("b8", strategy.long, when=(lc8))    
if (lc9)
    strategy.entry("b9", strategy.long, when=(lc9))    
if (lc10)
    strategy.entry("b10", strategy.long, when=(lc10))
    
//exit orders   
if (ec1)
    strategy.exit("b1", when=(ec1), limit=1)
if (ec2)
    strategy.exit("b2", when=(ec2), limit=1)
if (ec3)
    strategy.exit("b3", when=(ec3), limit=1)
if (ec4)
    strategy.exit("b4", when=(ec4), limit=1)
if (ec5)
    strategy.exit("b5", when=(ec5), limit=1)
if (ec6)
    strategy.exit("b6", when=(ec6), limit=1)
if (ec7)
    strategy.exit("b7", when=(ec7), limit=1)
if (ec8)
    strategy.exit("b8", when=(ec8), limit=1)
if (ec9)
    strategy.exit("b9", when=(ec9), limit=1)
if (ec10)
    strategy.exit("b10", when=(ec10), limit=1)
    

plot(b1,color=color.green)
plot(s1, color=color.red)
plot(b2, color=color.purple)