Peralihan Selepas Strategi Pengukuhan

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

img

Ringkasan

Idea utama strategi ini adalah untuk mengesan pengukuhan jangka pendek yang jelas dalam pergerakan harga saham, dan kemudian menilai arah seterusnya yang mungkin berdasarkan corak pengukuhan yang terbentuk semasa fasa pengukuhan, untuk mengambil kedudukan panjang atau pendek yang sesuai.

Logika Strategi

  1. Strategi ini menggunakan penunjuk osilator Stochastic untuk menentukan sama ada harga saham telah memasuki konsolidasi.

  2. Apabila pengayun Stochastic berosilasi, perubahan arah lilin digunakan untuk mengesan titik pembalikan trend. Perubahan lilin dari hitam ke putih menandakan pengukuhan berakhir dan pergi panjang. Perubahan dari putih ke hitam menandakan pengukuhan berakhir dan pergi pendek.

  3. Sasaran keuntungan dan stop loss selepas masuk ditetapkan secara dinamik berdasarkan harga masuk menggunakan trailing stop.

  4. Strategi ini menyokong kedua-dua perdagangan kedudukan penuh dan separa.

  5. Waktu dagangan juga dikonfigurasi dalam strategi. Dagangan hanya dibenarkan pada waktu yang ditetapkan.

Analisis Kelebihan

  1. Osilator stokastik dengan tepat mengenal pasti penyatuan harga jangka pendek.

  2. Perdagangan pada titik pembalikan selepas penyatuan meningkatkan ketepatan.

  3. Hentian yang tertinggal mengunci keuntungan apabila harga bergerak dengan baik.

  4. Menyokong perdagangan kedudukan penuh dan separa berdasarkan keutamaan risiko.

  5. Waktu perdagangan mengelakkan perdagangan yang salah semasa tempoh tidak menentu.

Analisis Risiko

  1. Osilator stokastik terdedah kepada isyarat palsu, entri yang hilang atau memberikan entri awal.

  2. Pembalikan candlestick mungkin tidak tepat untuk mengesan perubahan trend.

  3. Penghentian yang tertinggal tertakluk kepada penumpuan harga.

  4. Risiko yang lebih tinggi dengan perdagangan kedudukan separa, kerugian boleh diperbesar pada pembalikan.

  5. Parameter stop loss dan trailing stop perlu disesuaikan untuk instrumen yang berbeza.

  6. Kejadian besar boleh mempengaruhi prestasi strategi.

Peluang Peningkatan

  1. Mengoptimumkan parameter pengayun Stochastic untuk pengesanan penyatuan yang lebih baik.

  2. Tambah penapis untuk mengesahkan isyarat candlestick, meningkatkan ketepatan.

  3. Mempertingkatkan algoritma penangguhan untuk pengesanan yang lebih baik.

  4. Tambah peraturan saiz kedudukan untuk mengehadkan kerugian dalam stok tunggal.

  5. Mengelakkan turun naik yang didorong oleh peristiwa utama dengan menggabungkan jadual acara.

  6. Memperbaiki model kedudukan separa untuk menangkap trend dengan lebih baik.

Kesimpulan

Strategi pusingan selepas penyatuan mengenal pasti penyatuan jangka pendek menggunakan osilator Stochastic dan berdagang pada titik pembalikan trend selepas fasa penyatuan. Ia mempunyai kadar kemenangan yang baik dan membolehkan mengunci keuntungan segmen dalam trend. Walau bagaimanapun, Stochastic terdedah kepada isyarat palsu. Ketepatan dapat ditingkatkan dengan mengoptimumkan parameter, menambah penapis dll. Di samping itu, mengoptimumkan berhenti yang tertinggal, mengawal saiz kedudukan, dan mengelakkan risiko peristiwa adalah bidang yang memerlukan tumpuan. Secara keseluruhan, strategi ini menyediakan model rujukan tetapi memerlukan penyesuaian dan kawalan 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 lanjut