Стратегия открытого диска

Автор:Чао Чжан, Дата: 2023-10-23 15:13:49
Тэги:

img

Обзор

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

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

  1. Используйте 30-минутные панели, так как нужно достаточно времени, чтобы измерить экстремальные движения цен после открытия.

  2. Укажите, где открываются бары в эти периоды времени: 0700-0715, 0800-0815, 1300-1315, 1430-1445.

  3. Проверьте, отвечает ли открытая строка:

    • Открыть около бар низкий, закрыть около бар высокий (верхний бар)

    • Или открыть около бар высокий, закрыть около бар низкий (низ бар)

    • И высокий превышает предыдущий 5-барный высокий на 1 x 5-барный диапазон, или низкий прерывает предыдущий 5-барный низкий на 1 x 5-барный диапазон (прорыв)

  4. Если вышеперечисленные условия выполнены, введите трендную торговлю в этом направлении 3 бара после сигнальной панели.

  5. Установите стоп-потерю на высоком/низком уровне входной стойки.

  6. Удерживать положение в течение 3 баров (90 минут), затем выходить.

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

  • Захватывает сильные направленные движения в результате высокой ликвидности после открытия
  • Прорывные фильтры предотвращают ложные сигналы от хрупких условий
  • Более длительные сроки сокращают чрезмерную торговлю
  • Стоп-лосс избегает чрезмерных потерь

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

  • Фиксированные периоды открытости рискуют пропустить прорыв тренда
  • Недостаточный порог прорыва может отфильтровать действительные сигналы
  • Фиксированное время хранения не может быть адаптировано к конкретным условиям
  • Никакая остановка не следует тенденциям

Рассмотрим следующие факты:

  • Динамическое определение открытого периода с большим количеством параметров
  • Оптимизировать порог прорыва
  • Корректировка времени хранения на основе волатильности
  • Добавить процедуры остановки отслеживания

Направления к улучшению

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

Резюме

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


/*backtest
start: 2023-10-15 00:00:00
end: 2023-10-22 00:00:00
period: 10m
basePeriod: 1m
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/
// © Marcns_

//@version=5
// a script that highlights open drives around cash market opens throughout the day
// this indicator identifies the following cash open, open drives 0700 - 0715 / 0800 - 0815 / 1300 - 1315 / 1430 - 1445 
// an open drive is when a cash market opens and price runs either up or down away from the opening price, often this will be the high or the low the remainer of the session or day
// and often identify a trend session
strategy("Open Drive", commission_type =  strategy.commission.cash_per_contract, commission_value = 3.8 )

// open drive filter times - all times GMT
eu_sev = time(timeframe.period, "0700-0715", "GB")
eu_eig = time(timeframe.period, "0800-0815", "GB")
us_one = time(timeframe.period, "1300-1315", "GB")
us_two = time(timeframe.period, "1430-1445", "GB")


// identify bar that opens at low and closes at high + vice versa 
// bar needs to open at one extreme and close at another 
TrndExThreshold_Open = 0.15
TrndExThreshold_Close = 0.15

// add a bar range expansion filter - range of bar correlates to volume, high volume = wider range. This script will be able to filter for a break of a 5 bar range +100% or -100%

fbhi = ta.highest(5)
fblo = ta.lowest(5)

fbr = (fbhi - fblo)

RangeEx_up = 0.0

if high >= (fbhi[1] + fbr[1])
    RangeEx_up := 1.0
else
    na

// range ex down

RangeEx_do = 0.0

if low <= (fblo[1] - fbr[1]) 
    RangeEx_do := 1.0
else
    na


//#1 open within 5% of low

OpenAtLow = 0.0 

if (close > open) and (open-low) / (high-low) < TrndExThreshold_Open
    OpenAtLow := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtHigh = 0.0

if (close > open) and (high-close) / (high-low) < TrndExThreshold_Close
    CloseAtHigh := 1.0
else
    na 

OD_Up = 0.0

if (OpenAtLow + CloseAtHigh + RangeEx_up == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Up := 1
else
    na

plot(OD_Up, title = "OD_up")



OpenAtHigh = 0.0 

if (close < open) and (high-open) / (high-low) < TrndExThreshold_Open
    OpenAtHigh := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtLow = 0.0

if (close < open) and (close-low) / (high-low) < TrndExThreshold_Close
    CloseAtLow := 1.0
else
    na 

OD_Down = 0.0

if (OpenAtHigh + CloseAtLow + RangeEx_do == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Down := -1
else
    na

plot(OD_Down, title = "OD_down", color = color.red)


//3sma

ma = ta.sma(close,3)

// one time framing - highlight bars the make a series of lower highs or higher lows to identify trend 
// one time frame up 
otf_u = 0.0

if close > ma and close[1] > ma[1]
    otf_u := 1
else
    na
// one time frame down 
otf_d = 0.0

if close < ma and close[1] < ma[1]
    otf_d := 1
else
    na


//bgcolor(otf_u ? color.rgb(76, 175, 79, 70) : na)
//bgcolor(otf_d ? color.rgb(255, 82, 82, 66) : na)

// record high and low of entry bar into variable for absolute stop
// buy stop
bs = 0.0

if OD_Up
    bs := low[1]
else
    na

// sell stop
ss = 0.0

if OD_Down
    ss := high[1]
else
    na




// strategy entry and exits 
// long
if OD_Up
    strategy.entry("el", strategy.long, 2)
if ta.barssince(OD_Up)> 3 
    strategy.exit(id = "ex" , from_entry = "el", limit = close)

// short 
if OD_Down
    strategy.entry("es", strategy.short, 2)
if ta.barssince(OD_Down)> 3
    strategy.exit(id = "ex" , from_entry = "es", limit = close)



Больше