В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан, Дата: 2023-11-16 17:09:45
Тэги:

img

Обзор

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

Логика стратегии

Стратегия сначала устанавливает стартовую цену и процент расстояния от сети, затем рассчитывает 10 уровней цен на покупку и продажу на основе стартовой цены и процента.

Формула покупки:

b1=sprice-(sprice*p1)

b2=sprice-(sprice*p2)

b3=sprice-(sprice*p3)

где p1 ~ p10 - это проценты, рассчитанные слой за слоем на основе процента сетки.

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

s1=b1+(стоимость*p1)

s2=b2+(стоимость*p1)

s3=b3+(стоимость*p1)

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

если (почти < b1)

Strategy.entry ((b1, strategy.long, when=(close

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

если (близко>s1)

strategy.exit("b1", когда=(близко>s1))

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

Преимущества

Стратегия фиксированной сети имеет следующие преимущества:

  1. Достигает авто низкого покупания-высокой продажи без синхронизации рынка, снижает трудности торговли.

  2. Установление правильного расстояния от решетки эффективно контролирует риск и избегает преследования.

  3. Прибыльно, независимо от того, растет ли рынок или падает.

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

  5. Увеличение размера позиции путем добавления слоев сетки.

  6. Включение стоп-лосса позволяет избежать больших потерь при экстремальных рыночных событиях.

Риски

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

  1. Торговые сборы пожирают прибыль на рынке с ограниченным диапазоном.

  2. Неправильные начальные цены и настройки сетки приводят к потерям.

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

  4. Механическая торговля сопряжена с риском размещения ордеров.

  5. Концентрированные события могут усиливать потери.

Решения:

  1. Оптимизировать параметры сети для обеспечения прибыли > сборов.

  2. Бактэст для поиска оптимальной стартовой цены и расстояния от сетки.

  3. Добавьте стоп-лосс для контроля рисков.

  4. Расслабьте цену заказа, чтобы избежать вставки.

  5. Установите контроль риска, чтобы ограничить максимальную потерю.

Усовершенствования

Стратегия может быть улучшена следующими способами:

  1. Динамически регулируйте расстояние от сетки на основе волатильности.

  2. Вычислить диапазон цен до динамически установленной стартовой цены.

  3. Добавьте модель ML для прогнозирования цены и корректировки сетки.

  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)

Больше