Переход после консолидационной стратегии

Автор:Чао Чжан, Дата: 2023-11-03 17:26:53
Тэги:

img

Обзор

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

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

  1. Стратегия использует индикатор стохастического осциллятора, чтобы определить, вступила ли цена акции в консолидацию.

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

  3. Цели прибыли и стоп-лосс после входа устанавливаются динамически на основе цены входа с использованием последующих остановок.

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

  5. Торговые часы также настроены в стратегии.

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

  1. Стохастический осциллятор точно определяет краткосрочную консолидацию цен.

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

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

  4. Поддерживает полную и частичную торговлю позициями на основе предпочтения риска.

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

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

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

  2. Обратные тенденции могут быть неточными для обнаружения изменений тренда.

  3. Отставание останавливается, если цена падает.

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

  5. Параметры остановки и остановки должны быть настроены на разные инструменты.

  6. Крупные события могут повлиять на эффективность стратегии.

Возможности для расширения

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

  2. Добавление фильтров для подтверждения сигналов свечей, повышение точности.

  3. Улучшить алгоритмы отслеживания для лучшего отслеживания.

  4. Добавить правила размещения позиций для ограничения потерь в отдельных акциях.

  5. Избегайте волатильности, обусловленной крупными событиями, используя график событий.

  6. Улучшение частичной модели позиции для лучшего отслеживания тенденций.

Заключение

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


/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Cross', overlay=true, initial_capital=1000 )

// Creditos : Cleber.martinelli
////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    CALENDARIO                      //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

//052)
// trading view solicita que se ja informado data para gerar backtest a partir de tal data
//começa backtest do trading sistem em qual data ?

ano = input.int(2022, minval=1, title="Ano")
mes = input.int(1, minval=1, maxval=12, title="Mes")
dia = input.int(1, minval=1, maxval=31, title="Dia")
hora = input.int(1, minval=1, maxval=23, title="hora")
minuto = input.int(0, minval=0, maxval=59, title="minuto")
horaabertura = input.int(10, minval=1, maxval=23, title="hora Inicio Operacao Robo")
minutoabertura = input.int(40, minval=1, maxval=59, title="Minuto Encerra Tudo")
horaencerra = input.int(17, minval=1, maxval=23, title="hora Fechamento")
minutoencerra = input.int(50, minval=1, maxval=59, title="Minuto Encerra Novas Operacoes")
minutofinaliza = input.int(50, minval=1, maxval=59, title="Minuto Encerra Tudo")

//valida se o dia de hoje é posterior ao dia informado acima
Validadia = year >= ano and month >= mes and dayofmonth >= dia

//cria horario de abertura de negociaçao, considerar default 10 hs, pois os indicadores ja estarão corrigidos
abreloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaabertura
//and minute >= minutoabertura)

//cria horario de fechamento de todas as negociaçoes, considerar default 17:00 hs
//nenhuma ordem pode ser aberta depois dessa data e as abertas devem ser fechadas
fechaloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutoencerra)

fechaloja2 = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutofinaliza)

//valida horario de negociação, pra liberar as operacoes.
lojaaberta = abreloja == true and fechaloja == false and fechaloja2 == false

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Inputs da Estratégia
pmax = input.int(90, minval=0, maxval=100, title="Estocastico Alvo - Para Short")
pmin = input.int(10, minval=0, maxval=100, title="Estocastico Alvo - Para Buy ")

parcial = input(title="Parcial ? ", defval=true)
p_gain = input.int(150, minval=0, maxval=1000, title="Pontos para Gain ")
p_loss = input.int(150, minval=0, maxval=1000, title="Pontos para Loss")
p_parcial = input.int(50, minval=0, maxval=100, title="Pontos para Parcial ")

// puxando os indicadores que usaremos 
estoc = ta.stoch(close,high,low,5)

if (estoc >=pmax and close < open)
    strategy.entry("Vende", strategy.short ,qty = 2)


if (estoc <=pmax and close > open)
    strategy.entry("Compra", strategy.long ,qty  =  2 )


pm_ativo = strategy.opentrades.entry_price(0)

if strategy.position_size > 0 and parcial// Posicionado na compra 
    if strategy.position_size == 2 // Mão cheia
        if close < pm_ativo - 100
            strategy.exit("Fecha Compra", "Compra", loss=p_loss , qty  =  2 )
        if close > pm_ativo + 50
            strategy.exit("Fecha Compra", "Compra", profit=p_gain , qty  =  1 )
    if strategy.position_size == 1// Mão cheia
        if close < pm_ativo 
            strategy.exit("Fecha Compra", "Compra", loss=0 , qty  =  1 )
        if close > pm_ativo + 100
            strategy.exit("Fecha Compra", "Compra", profit= p_gain * 1.5 , qty  =  1 )    
    
if strategy.position_size < 0 and parcial // Posicionado na Venda 
    if strategy.position_size == -2 // Mão cheia
        if close > pm_ativo - 100
            strategy.exit("Fecha Venda", "Vende", loss=p_loss , qty  =  2 )
        if close < pm_ativo + 50
            strategy.exit("Fecha Venda", "Vende", profit=p_gain , qty  =  1 )
    if strategy.position_size == -1// Mão cheia
        if close > pm_ativo 
            strategy.exit("Fecha Venda", "Vende", loss=0 , qty  =  1 )
        if close < pm_ativo + 100
            strategy.exit("Fecha Venda", "Vende", profit=p_gain*1.5 , qty  =  1 )    
    
if strategy.position_size > 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Compra", "Compra", loss=p_loss , profit = p_gain , qty  =  2 )
if strategy.position_size < 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Venda", "Vende", loss=p_loss , profit = p_gain , qty  =  2 )





















Больше