Консолидационная стратегия выхода

Автор:Чао Чжан, Дата: 2023-12-15 11:59:08
Тэги:

img

Обзор

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

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

Основная стратегия основана на полосах Боллинджера. Она использует ДЛОГО-периодическую простую скользящую среднюю, поскольку средняя линия и верхние/низкие полосы являются стандартными отклонениями +MULT/-MULT. Сигналы покупки генерируются при закрытии перерывов выше верхней полосы, а сигналы продажи генерируются при закрытии перерывов ниже нижней полосы, формируя стратегию прорыва диапазона.

Для контроля рисков он использует ATR для линии остановки потери. Он также учитывает торговые часы на индийском рынке и закрывает все позиции в 14:57 каждый день.

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

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

  1. Ясная логика, легкая настройка параметров, гибкая адаптация
  2. Включить контроль стоп-лосса и времени для управления рисками
  3. Рассмотрим особенности индийских рынков для локализации.
  4. Разумная частота торговли, избегание переоценки
  5. Хорошая расширяемость для дальнейшей оптимизации

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

Риски этой стратегии:

  1. Болинджерские полосы опираются на настройку параметров на основе опыта
  2. Единый индикатор, восприимчивый к ложным сигналам
  3. ATR может контролировать только ограниченные риски
  4. События черного лебедя не учитываются

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

  1. Объединение нескольких показателей для фильтрации сигналов
  2. Оптимизация правил настройки параметров
  3. Включение логики трейдинга с разрывом
  4. Улучшение надежности стоп-лосса
  5. Объединение индексов настроения рынка

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

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

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

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

Заключение

В общем, это простая стратегия внутридневного выхода. Она рассматривает специфику индийского рынка и контролирует торговые риски.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Consolidation Breakout [Indian Market Timing]",overlay = true , pyramiding = 0 ,initial_capital = 50000, default_qty_value=5, currency = currency.NONE,commission_type = strategy.cash, commission_value = 30, slippage = 1 )


// ══════════════════════════════════//
// ————————> INPUT VALUES <————————— //
// ══════════════════════════════════//

LENGTH = input.int(title='LENGTH', defval = 75, minval = 10 ,maxval = 300)
MULT = input.float(title='MULT_STDEV',defval = 3.2 , minval = 1 , maxval = 7 , step =0.1)

//EMA1 = input.int(title='EMA1', defval = 50, minval = 10 ,maxval = 550)
//EMA2 = input.int(title='EMA2', defval = 135, minval = 10 ,maxval = 550)
factor_tr = input.float(title = "ATR TRAIL", defval = 10, step = 0.1)

// ══════════════════════════════════//
// ————————> DAY TIME LIMIT <——————— //
// ══════════════════════════════════//

t = time(timeframe.period, '0935-1430:1234567')
time_condition = not na(t)

//**********************// ════════════════════════════════//
//**********************// ————————> ATR & PLOT <————————— //
//**********************// ════════════════════════════════//
//ema1 = ta.ema(close,EMA1)
//ema2 = ta.ema(close,EMA2)

//plot(ema1, color=color.new(color.blue, 0), style=plot.style_linebr, title='ema1')
//plot(ema2, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema2')

atr_tr = ta.atr(16)*factor_tr

longStop = close - atr_tr
shortStop = close + atr_tr

Entry = close
length = LENGTH
mult = MULT
basis = ta.sma(Entry , length)
dev = mult * ta.stdev(Entry , length)
upper = (basis + dev)
lower = (basis - dev)
buyEntry = ta.crossover(Entry , upper)
sellEntry = ta.crossunder(Entry , lower)

//plot(upper, color=color.new(color.red, 0), style=plot.style_linebr, title="short stop")
//plot(lower, color=color.new(color.green, 0), style=plot.style_linebr, title="Long stop")

plot(upper, color=close[1] > upper and close > upper ? color.green : color.red, linewidth=2)
plot(lower, color=close[1] > lower and close > lower ? color.green : color.red, linewidth=2)




// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( buyEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop , comment='S')

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( sellEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 57)






    

Больше