Автор:Чао Чжан, Дата: 2024-01-23 11:26:14
Тэги:

img

Обзор

Эта стратегия сочетает в себе двусторонние торговые сигналы ТСИ и улучшенные индикаторы CCI и использует подход хеджирования для часто открывающихся и закрывающихся позиций, направленный на достижение более стабильной непрерывной прибыли. Ключевой логикой является золотой крест и мертвый крест быстро и медленно движущихся средних показателей ТСИ, в сочетании с сигналами покупки и продажи индикатора HMACCI для определения направления рынка. Риски контролируются путем ограничения условий открытия, в то время как устанавливаются логики остановки убытков и получения прибыли.

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

Стратегия в основном основана на сочетании показателей ТСОС и HMACCI.

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

Показатель HMACCI основан на традиционном индикаторе CCI, использующем скользящую среднюю стоимость вместо самой цены, которая может отфильтровывать некоторый шум и оценивать зоны перекупки и перепродажи.

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

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

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

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

Это относительно стабильная и надежная стратегия хеджирования высокой частоты.

  1. Сочетание двойных показателей может эффективно предотвратить ложные сигналы
  2. Частые операции по хеджированию приводят к более стабильным колебаниям прибыли и убытка
  3. Строгая логика открытия и условия остановки потерь могут контролировать риски
  4. Сочетание суждений о тенденции и переломе приводит к более высокой терпимости к ошибкам
  5. Не имеет направленной предвзятости, подходит для различных рыночных условий
  6. Большое регулируемое пространство параметров, может быть оптимизировано для различных продуктов

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

Основными рисками являются:

  1. Больше потерь по сборам, вызванных высокочастотным трейдингом
  2. Невозможность полностью избежать того, чтобы быть запертым в жиле.
  3. Чрезмерно агрессивный вход, если параметры не установлены правильно
  4. Трудность выдержать односторонние огромные потери в краткосрочной перспективе

Риски могут быть уменьшены путем:

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

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

По-прежнему существует большое пространство для оптимизации этой стратегии, в основном:

  1. Оптимизация параметров, таких как период, длина и т. д., посредством тестирования
  2. Пробовать различные комбинации индикаторов, например, MACD, BOLL и т.д.
  3. Изменение логики открытия, установка более строгих фильтров
  4. Оптимизация стратегий получения прибыли и остановки убытков, например, динамические, остановки выхода
  5. Использование методов машинного обучения для поиска более стабильных диапазонов параметров
  6. Испытания на различных торговых продуктах и сроках
  7. Сочетание обнаружения тенденций для избежания чрезмерно агрессивных сделок на рынках с ограниченным диапазоном

Заключение

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the suns bipolarity
//©SeaSide420
//@version=4
strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001)
long = input(title="TSI Long Length", type=input.integer, defval=25)
short = input(title="TSI Short Length", type=input.integer, defval=25)
signal = input(title="TSI Signal Length", type=input.integer, defval=13)
length = input(33, minval=1, title="HMACCI Length")
src = input(open, title="Price Source")
ld = input(50, minval=1, title="Line Distance")
CandlesBack = input(8,minval=1,title="Candles Look Back")
StopLoss= input(3000,minval=1, title="Stop Loss")
TargetProfitAll= input(3000,minval=1, title="Target Profit Close All")
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2020)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
ul = (ld)
ll = (ld-ld*2)
ma = hma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)*10
tsi_value2=ema(tsi_value/10, signal)*10
cc = color.white
ct = color.new(color.gray, 90)
if cci<ll or cci[1]<ll
    cc:=color.red
if cci>ul or cci[1]>ul
    cc:=color.green
if cci<ul and cci>ll
    cc:=color.new(color.yellow, 90)
ccc = color.white
if cci>ul
    ccc:=color.green
if cci<cci[1] and cci<ul and cci>ll
    ccc:=color.red
if cci<ll
    ccc:=color.red
if cci>cci[1] and cci>ll and cci<ul
    ccc:=color.green
tsiplot= plot(tsi_value, color=color.lime)
tsiplot2=plot(tsi_value2, color=color.red)    
colorchange2 =tsi_value>tsi_value2?color.lime:color.orange
fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50)
band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed)
band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed)
fill(band1, band0, color=cc, title="MidBandBackground", transp=0)
band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed)
band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed)
cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5)
cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3)
hline(0, title="Zero")
hline(420, title="420")
hline(-420, title="-420")
fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0)
LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2
ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2
plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green)
plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red)
if  strategy.openprofit>TargetProfitAll
    strategy.close_all(when=window(),comment="close all profit target")
if LongCondition and strategy.openprofit>-1
    strategy.order("BUY", strategy.long,when=window())
if ShortCondition and strategy.openprofit>-1
    strategy.order("SELL", strategy.short,when=window())
strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window())     
strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window()) 

Больше