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
Strategi ini menggunakan indikator osilator Stochastic untuk menentukan apakah harga saham telah memasuki konsolidasi.
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.
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.
Strategi ini mendukung perdagangan posisi penuh dan parsial. titik tetap digunakan untuk posisi penuh, trailing stop digunakan untuk posisi parsial.
Jam perdagangan juga dikonfigurasi dalam strategi.
Osilator stokastik secara akurat mengidentifikasi konsolidasi harga jangka pendek.
Perdagangan pada titik pembalikan setelah konsolidasi meningkatkan akurasi.
Penghentian yang tertinggal mengunci keuntungan saat harga bergerak menguntungkan.
Mendukung perdagangan posisi penuh dan parsial berdasarkan preferensi risiko.
Jam perdagangan menghindari perdagangan yang salah selama periode volatilitas.
Osilator stokastik rentan terhadap sinyal palsu, entri yang hilang atau memberikan entri prematur.
Pembalikan candlestick mungkin tidak akurat untuk mendeteksi perubahan tren.
Penghentian yang tertinggal tergantung pada hit oleh whipsaws harga.
Risiko yang lebih tinggi dengan perdagangan posisi parsial, kerugian bisa diperbesar pada pembalikan.
Stop loss dan trailing stop parameter perlu disetel untuk instrumen yang berbeda.
Peristiwa besar dapat mempengaruhi kinerja strategi.
Mengoptimalkan parameter osilator Stochastic untuk deteksi konsolidasi yang lebih baik.
Tambahkan filter untuk mengkonfirmasi sinyal candlestick, meningkatkan akurasi.
Meningkatkan algoritma trailing stop untuk pelacakan yang lebih baik.
Tambahkan aturan ukuran posisi untuk membatasi kerugian dalam saham tunggal.
Hindari volatilitas yang didorong oleh peristiwa besar dengan memasukkan jadwal acara.
Meningkatkan model posisi parsial untuk menangkap tren dengan lebih baik.
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 )