Pergantian Setelah Strategi Konsolidasi

Penulis:ChaoZhang, Tanggal: 2023-11-03 17:26:53
Tag:

img

Gambaran umum

Ide utama dari strategi ini adalah untuk mendeteksi konsolidasi jangka pendek yang jelas dalam pergerakan harga saham, dan kemudian menilai arah berikutnya yang mungkin berdasarkan pola konsolidasi yang terbentuk selama fase konsolidasi, sehingga mengambil posisi panjang atau pendek yang sesuai.

Logika Strategi

  1. Strategi ini menggunakan indikator osilator Stochastic untuk menentukan apakah harga saham telah memasuki konsolidasi.

  2. Ketika osilator Stochastic berosilasi, perubahan arah lilin digunakan untuk mendeteksi titik pembalikan tren. perubahan lilin dari hitam ke putih sinyal konsolidasi berakhir dan pergi panjang. perubahan dari putih ke hitam sinyal konsolidasi berakhir dan pergi pendek.

  3. Target keuntungan dan stop loss setelah masuk ditetapkan secara dinamis berdasarkan harga masuk menggunakan trailing stop. fixed profit/loss digunakan untuk posisi penuh, trailing stop digunakan untuk posisi parsial.

  4. Strategi ini mendukung perdagangan posisi penuh dan parsial. titik tetap digunakan untuk posisi penuh, trailing stop digunakan untuk posisi parsial.

  5. Jam perdagangan juga dikonfigurasi dalam strategi.

Analisis Keuntungan

  1. Osilator stokastik secara akurat mengidentifikasi konsolidasi harga jangka pendek.

  2. Perdagangan pada titik pembalikan setelah konsolidasi meningkatkan akurasi.

  3. Penghentian yang tertinggal mengunci keuntungan saat harga bergerak menguntungkan.

  4. Mendukung perdagangan posisi penuh dan parsial berdasarkan preferensi risiko.

  5. Jam perdagangan menghindari perdagangan yang salah selama periode volatilitas.

Analisis Risiko

  1. Osilator stokastik rentan terhadap sinyal palsu, entri yang hilang atau memberikan entri prematur.

  2. Pembalikan candlestick mungkin tidak akurat untuk mendeteksi perubahan tren.

  3. Penghentian yang tertinggal tergantung pada hit oleh whipsaws harga.

  4. Risiko yang lebih tinggi dengan perdagangan posisi parsial, kerugian bisa diperbesar pada pembalikan.

  5. Stop loss dan trailing stop parameter perlu disetel untuk instrumen yang berbeda.

  6. Peristiwa besar dapat mempengaruhi kinerja strategi.

Peluang Peningkatan

  1. Mengoptimalkan parameter osilator Stochastic untuk deteksi konsolidasi yang lebih baik.

  2. Tambahkan filter untuk mengkonfirmasi sinyal candlestick, meningkatkan akurasi.

  3. Meningkatkan algoritma trailing stop untuk pelacakan yang lebih baik.

  4. Tambahkan aturan ukuran posisi untuk membatasi kerugian dalam saham tunggal.

  5. Hindari volatilitas yang didorong oleh peristiwa besar dengan memasukkan jadwal acara.

  6. Meningkatkan model posisi parsial untuk menangkap tren dengan lebih baik.

Kesimpulan

Strategi turnaround setelah konsolidasi mengidentifikasi konsolidasi jangka pendek menggunakan osilator Stochastic dan perdagangan pada titik pembalikan tren setelah fase konsolidasi. Ini memiliki tingkat kemenangan yang layak dan memungkinkan penguncian keuntungan segmen dalam tren. Namun, Stochastic rentan terhadap sinyal palsu. Keakuratan dapat ditingkatkan dengan mengoptimalkan parameter, menambahkan filter dll. Selain itu, mengoptimalkan trailing stop, mengontrol ukuran posisi, dan menghindari risiko peristiwa adalah bidang yang membutuhkan fokus. Secara keseluruhan, strategi ini menyediakan model referensi tetapi membutuhkan penyetelan dan kontrol risiko untuk perdagangan langsung berdasarkan gaya perdagangan individu.


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





















Lebih banyak