Стратегия «остановись и повернись»


Дата создания: 2023-11-03 17:26:53 Последнее изменение: 2023-11-03 17:26:53
Копировать: 0 Количество просмотров: 633
1
Подписаться
1617
Подписчики

Стратегия «остановись и повернись»

Обзор

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

Стратегический принцип

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

  2. При колебании показателя стохастического осциллятора, по направлению сущности K-линии судить о точке перехода тренда. Когда K-линия с отрицательного поворачивает к солнцу, судить о завершении свертывания, делать больше; когда K-линия с отрицательного поворачивает к солнцу, судить о завершении свертывания, делать пустое место.

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

  4. Стратегия поддерживает одновременно полный и разделённый операции. При полном положении устанавливается фиксированный стоп-стоп; при разделении - мобильный стоп-стоп.

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

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

  1. Используя индикатор стохастического осциллятора, можно точно определить краткосрочную консолидацию цен на акции.

  2. Операции в точках поворота K-линии после землетрясения позволяют повысить точность операций.

  3. Применение мобильного стоп-стоп-потери, можно в зависимости от движения цены акций, чтобы остановить потерю, можно зафиксировать больше прибыли.

  4. Поддержка полного и разделённого портфеля операций, с возможностью выбора подходящего способа работы в соответствии с собственными предпочтениями в отношении риска.

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

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

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

  2. Определение точки поворота K-линии неточно, возможно, операция будет выполнена в не поворотной точке.

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

  4. Разделение позиций может быть рискованным, а обратный курс может привести к увеличению убытков.

  5. Необходимо скорректировать стоп-потери и частоту движения в соответствии с особенностями различных акций.

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

Направление оптимизации

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

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

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

  4. Добавить контроль позиций, чтобы избежать слишком больших потерь по одной акции.

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

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

Подвести итог

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

Исходный код стратегии
/*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 )