Стратегия отслеживания супертенденций с двойными временными рамками

Автор:Чао Чжан, Дата: 22 сентября 2023 14:27:52
Тэги:

Обзор

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

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

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

Конкретная логика торговли:

  1. Использовать направление основного временного рамок Supertrend в качестве общего направления тренда.

  2. Введите, когда вспомогательный временной интервал Supertrend выдает сигнал в том же направлении.

  3. Установите стоп-лосс и возьмите точки прибыли.

  4. Выйти, когда главный временной отрезок Supertrend снова вернется.

Объединяя два индикатора временных рамок, некоторые расхождения могут быть отфильтрованы для более точного ввода.

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

Преимущества этой стратегии включают:

  1. Сочетание двойных временных рамок позволяет более точно оценивать тренд.

  2. Supertrend чувствителен к изменениям тренда, с точным входом.

  3. Остановить убытки и взять риск контроля прибыли.

  4. Простая и прямая логика стратегии, легко понятная.

  5. Параметры могут быть настроены для разных продуктов.

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

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

  1. Отставание от супертенденции может привести к неправильному оценке сигналов.

  2. Неправильный стоп-лосс и прием прибыли могут привести к перегонке тенденций или преждевременному стоп-лос.

  3. Двойные временные рамки могут пропустить некоторые более короткие переломы.

  4. Оптимизация параметров опирается на исторические данные, существуют риски перенастройки.

  5. Не учитывается стоимость сделки.

Решения:

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

  2. Динамически оптимизировать стоп-лосс и получение прибыли на основе результатов обратных тестов.

  3. Испытайте более короткие временные рамки в качестве вспомогательного суждения.

  4. Расширить диапазон данных обратного теста, проверка обратного теста на нескольких рынках.

  5. Добавьте транзакционные расходы, такие как комиссия и сдвиг.

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

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

  1. Проверяю больше комбинаций показателей, чтобы найти оптимальную комбинацию.

  2. Использование машинного обучения для динамической оптимизации параметров.

  3. Оптимизировать стоп-лосс и получение прибыли для улучшения соотношения риск-вознаграждение.

  4. Пробую комбинировать больше временных рамок.

  5. Корректировка диапазонов получения прибыли и остановки потерь на основе количества сделок.

  6. Добавляю комиссионные и логику скольжения.

  7. Разработка инструментов для оптимизации графических параметров.

Заключение

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


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0

res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=security(syminfo.tickerid,res,close)

TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp:=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown:=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend := Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Больше