Umkehrung nach der Konsolidierungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-03 17:26:53
Tags:

img

Übersicht

Die Hauptidee dieser Strategie besteht darin, eine offensichtliche kurzfristige Konsolidierung in den Kursbewegungen der Aktien zu erkennen und dann anhand des während der Konsolidierungsphase gebildeten Konsolidierungsmusters die voraussichtliche nächste Richtung zu beurteilen, um entsprechende Long- oder Short-Positionen einzunehmen.

Strategie Logik

  1. Die Strategie verwendet den Stochastischen Oszillator-Indikator, um festzustellen, ob der Aktienkurs in die Konsolidierung eingetreten ist.

  2. Wenn der Stochastische Oszillator oszilliert, werden Richtungsänderungen der Kerzen verwendet, um Trendumkehrpunkte zu erkennen. Eine Kerze ändert sich von schwarz auf weiß, die Konsolidierung endet und lang geht. Eine Änderung von weiß auf schwarz, die Konsolidierung endet und kurz geht.

  3. Gewinnziele und Stop-Loss nach dem Einstieg werden dynamisch auf Basis des Einstiegspreises mit Trailing-Stops festgelegt.

  4. Die Strategie unterstützt sowohl den vollen als auch den teilweisen Positionshandel.

  5. Handelszeiten sind ebenfalls in der Strategie konfiguriert.

Analyse der Vorteile

  1. Der stochastische Oszillator identifiziert kurzfristige Preiskonsolidierung genau.

  2. Der Handel an Umkehrpunkten nach der Konsolidierung verbessert die Genauigkeit.

  3. Nachlassende Stopps schließen Gewinne ein, wenn sich der Preis günstig bewegt.

  4. Unterstützt den vollständigen und teilweisen Positionshandel auf Basis der Risikopräferenz.

  5. Handelszeiten Vermeiden Sie falsche Trades in volatilen Zeiten.

Risikoanalyse

  1. Stochastischer Oszillator, der anfällig für falsche Signale, fehlende Einträge oder vorzeitige Einträge ist.

  2. Die Umkehrung der Werte ist möglicherweise nicht genau geeignet, um Trendänderungen zu erkennen.

  3. Der Rückstand ist abhängig von Preisschwankungen.

  4. Das Risiko bei einem Teilhandelsgeschäft ist höher, bei Umkehrungen können Verluste erhöht werden.

  5. Stop-Loss- und Trailing-Stop-Parameter müssen für verschiedene Instrumente abgestimmt werden.

  6. Große Ereignisse können die Strategiewirkung beeinflussen.

Möglichkeiten zur Verbesserung

  1. Optimierung der Stochastischen Oszillatorparameter für eine bessere Konsolidierungserkennung.

  2. Fügen Sie Filter hinzu, um Kerzensignale zu bestätigen, um die Genauigkeit zu verbessern.

  3. Verbesserte Trailing Stop-Algorithmen für eine bessere Verfolgung.

  4. Hinzufügen von Positionsgrößenregeln zur Begrenzung von Verlusten bei einzelnen Beständen.

  5. Vermeiden Sie Ereignisbedingte Volatilität durch Einbeziehung eines Ereignisplans.

  6. Verbesserung des partiellen Positionsmodells zur besseren Erfassung von Trends.

Schlussfolgerung

Die Turnaround-Strategie nach der Konsolidierung identifiziert eine kurzfristige Konsolidierung mithilfe des Stochastic-Oszillators und handelt nach der Konsolidierungsphasen an Trendumkehrpunkten. Sie hat eine anständige Gewinnrate und ermöglicht das Sperren von Segmentgewinnen in Trends. Stochastic ist jedoch anfällig für falsche Signale. Die Genauigkeit kann durch Optimierung von Parametern, Hinzufügen von Filtern usw. verbessert werden.


/*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 )





















Mehr