Основная идея этой стратегии заключается в том, чтобы обнаружить очевидную краткосрочную консолидацию в движении цен на акции, а затем судить о вероятном следующем направлении на основе модели консолидации, сформированной во время фазы "консолидации", чтобы занять соответствующие длинные или короткие позиции.
Стратегия использует индикатор стохастического осциллятора, чтобы определить, вступила ли цена акции в консолидацию.
Когда стохастический осциллятор колеблется, направленные изменения свечей используются для обнаружения точек обратного тренда.
Цели прибыли и стоп-лосс после входа устанавливаются динамически на основе цены входа с использованием последующих остановок.
Стратегия поддерживает как полную, так и частичную торговлю позициями.
Торговые часы также настроены в стратегии.
Стохастический осциллятор точно определяет краткосрочную консолидацию цен.
Торговля в переломные моменты после консолидации повышает точность.
Продолжающаяся остановка закрепляет прибыль по мере того, как цена движется в пользу.
Поддерживает полную и частичную торговлю позициями на основе предпочтения риска.
Время торговли избегайте неправильных сделок в периоды волатильности.
Стохастический осциллятор, склонный к ложным сигналам, отсутствующим записям или дающим преждевременные записи.
Обратные тенденции могут быть неточными для обнаружения изменений тренда.
Отставание останавливается, если цена падает.
Высокий риск при частичной торговле позициями, убытки могут увеличиться при переворотах.
Параметры остановки и остановки должны быть настроены на разные инструменты.
Крупные события могут повлиять на эффективность стратегии.
Оптимизировать параметры стохастического осциллятора для лучшего обнаружения консолидации.
Добавление фильтров для подтверждения сигналов свечей, повышение точности.
Улучшить алгоритмы отслеживания для лучшего отслеживания.
Добавить правила размещения позиций для ограничения потерь в отдельных акциях.
Избегайте волатильности, обусловленной крупными событиями, используя график событий.
Улучшение частичной модели позиции для лучшего отслеживания тенденций.
Стратегия по повороту после консолидации идентифицирует краткосрочную консолидацию с использованием стохастического осциллятора и торгует в точках обратного тренда после фазы консолидации. Она имеет приличный показатель выигрыша и позволяет блокировать прибыль сегмента в трендах. Однако стохастический подвержен ложным сигналам. Точность может быть улучшена путем оптимизации параметров, добавления фильтров и т. Д. Кроме того, оптимизация остановок, контроль размеров позиций и избегание рисков событий являются областями, которые требуют внимания. В целом эта стратегия обеспечивает эталонную модель, но требует настройки и контроля рисков для живой торговли на основе индивидуального торгового стиля.
/*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 )