Strategi Posisi Tambah Dua Cara Dinamis

Penulis:ChaoZhangTanggal: 2023-11-27 11:33:11
Tag:

img

Gambaran umum

Ini adalah strategi yang mengambil posisi di kedua arah dengan menggunakan sinyal terobosan yang kuat di kedua arah. Ini akan memilih arah untuk membuka posisi setelah dua candlestick kuat berturut-turut muncul di arah yang sama, kemudian mengatur stop profit dan stop loss untuk manajemen risiko.

Prinsip Strategi

Strategi ini menilai arah pasar berdasarkan sinyal dari dua candlestick yang kuat berturut-turut. Secara khusus, strategi ini menghitung persentase kenaikan/penurunan dari setiap candlestick. Ketika persentase kenaikan/penurunan dari dua candlestick berturut-turut keduanya melebihi ambang batas yang ditetapkan oleh pengguna (seperti 6%), strategi ini menentukan bahwa arahnya kuat, dan membuka posisi panjang/pendek di candlestick ketiga.

Kondisi panjang: Harga penutupan dua candlestick berturut-turut naik lebih dari 6% dibandingkan dengan harga penutupan sebelumnya

Kondisi pendek: Harga penutupan dua candlestick berturut-turut turun lebih dari 6% dibandingkan dengan harga penutupan sebelumnya

Setelah membuka posisi, itu akan mengatur jarak stop profit dan stop loss untuk mengendalikan risiko. Jarak stop profit dimasukkan oleh pengguna, dan jarak stop loss adalah kelipatan (seperti 8 kali) dari harga pembukaan.

Strategi ini juga memiliki beberapa fungsi tambahan untuk mengendalikan risiko, seperti hanya memungkinkan untuk membuka posisi selama periode waktu tertentu, menetapkan jumlah kerugian maksimum, dll.

Analisis Keuntungan

Ini adalah strategi perdagangan dua arah yang relatif stabil dan dapat diandalkan.

  1. Perdagangan dua arah dapat memperoleh keuntungan ketika pasar naik dan turun, meningkatkan stabilitas.

  2. Menghakimi tren berdasarkan dua sinyal yang kuat dapat secara efektif menyaring kebisingan dan meningkatkan kualitas posisi yang dibuka.

  3. Pengaturan stop profit dan stop loss wajar, yang bermanfaat untuk pengendalian risiko dan membatasi kerugian.

  4. Fungsi bantuannya komprehensif, seperti kontrol waktu, kontrol kerugian maksimum, dll. Mereka dapat mengendalikan risiko dengan sangat baik.

  5. Sangat mudah untuk backtest dan mengoptimalkan strategi ini karena logika sederhana dan jelas.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Kita dapat menyesuaikan parameter sinyal pertama dengan benar untuk memastikan kualitas sinyal.

  2. Kemungkinan tiga candlestick super kuat berturut-turut relatif kecil, yang dapat menyebabkan lebih sedikit peluang untuk membuka posisi.

  3. Perilaku irasional yang disebabkan oleh kejadian mendadak dapat menyebabkan kerugian besar melebihi jarak stop loss.

  4. Untuk pelaksanaan perdagangan dua arah, kita perlu memperhatikan masalah alokasi dana, jika tidak, itu dapat menyebabkan keuntungan tanpa stop loss.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Mengoptimalkan logika penilaian sinyal pertama untuk meningkatkan kualitas sinyal. Lebih banyak faktor dapat dipertimbangkan seperti perubahan volume transaksi, tingkat volatilitas dll.

  2. Optimalkan standar stop profit dan stop loss. Sesuaikan parameter berdasarkan pasar yang berbeda untuk membuat rasio risiko-imbalan lebih wajar. Jarak stop loss juga dapat ditetapkan sebagai stop loss dinamis.

  3. Tambahkan lebih banyak modul pengendalian risiko. misalnya, kerugian harian maksimum, kerugian berturut-turut maksimum dll. untuk memastikan penggunaan dana yang efisien dan aman.

  4. Mengoptimalkan rasio alokasi dana, untuk membuat alokasi modal perdagangan dua arah lebih wajar, mencegah keuntungan tanpa stop loss.

  5. Atur kombinasi parameter yang berbeda untuk optimasi backtesting terhadap varietas perdagangan yang berbeda, untuk meningkatkan kemampuan beradaptasi.

Ringkasan

Strategi ini adalah strategi posisi tambah dua arah yang relatif kuat. Ini memiliki kualitas sinyal yang tinggi dan kemampuan pengendalian risiko tertentu. Ini juga memiliki ruang besar untuk optimasi untuk meningkatkan stabilitas keuntungan lebih lanjut. Strategi ini cocok untuk pasar tren jangka menengah dan panjang, dan juga dapat memanfaatkan peluang selama konsolidasi pasar.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="GAVAD", shorttitle="GAVAD", overlay=false, initial_capital=36000)

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                     GAVAD %                        //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////
Sinal = input(6, title="Sinal", type=input.integer, minval=1, maxval=150)
//Objetivo = input(6, title="Objetivo", type=input.integer, minval=1, maxval=100)
Multip = input(10000, title="Sinal", type=input.integer, minval=1, maxval=100000)



//GavadEntrada1 = (close - low [1])/close[1]
//plot(GavadEntrada1, style=plot.style_line, linewidth=3, color=color.yellow)

//sombra
//DownOL = (low - open ) / open * -10000
//plot(DownOL, style=plot.style_area, linewidth=3, color=color.silver)


// imprime o GAVAD
GavadEntrada = (close - close [1])/close[1] * Multip
plot(GavadEntrada, style=plot.style_histogram, linewidth=3, color=color.purple)

//linha do Sinal
plot(Sinal, style=plot.style_line, linewidth=1, color=color.yellow)
//linha do Objetivo
//plot(Objetivo, style=plot.style_line, linewidth=1, color=color.white)

Fura1 = GavadEntrada [0] >= Sinal
Fura2 = GavadEntrada [1] >= Sinal

Alert = Fura1
plotshape(Alert, style=shape.circle,  location = location.top, color= color.yellow)

SinalON = Fura1 and Fura2
plotshape(SinalON, style=shape.circle,  location = location.bottom, color= color.green)



////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//              CONDIÇÕES DE OPERACAO                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////



Sell_Forte2 = SinalON
//plotshape(Sell_Forte2, style=shape.xcross, color=color.yellow, location=location.bottom)

//Call_Forte2 = SinalON
//plotshape(Call_Forte2, style=shape.xcross, color=color.yellow, location=location.top)


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    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(2021, minval=1, title="Ano")
mes = input(1, minval=1, maxval=12, title="Mes")
dia = input(1, minval=1, maxval=30, title="Dia")
hora = input(0, minval=1, maxval=23, title="hora")
minuto = input(0, minval=1, maxval=59, title="minuto")
horaabertura = input(10, minval=1, maxval=23, title="hora Inicio Operacao Robo")
minutoabertura = input(40, minval=1, maxval=59, title="Minuto Encerra Tudo")
horaencerra = input(17, minval=1, maxval=23, title="hora Fechamento")
minutoencerra = input(50, minval=1, maxval=59, title="Minuto Encerra Novas Operacoes")
minutofinaliza = input(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


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//             GERENCIAMENTO DE RISCO                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

//seta meta mensal
meta = input(150000, "Meta de Lucro")
Contratos= input(5, "Contratos")

//seta tamanho do lote (ordem inicial-unica)
tamanhodolote = Contratos

//seta stop gain final em pontos (metade da barra anterior)
//gaintotal = input(30, "Gain")
gaintotal = input(3, "Gain")

//seta stop loss final em pontos
lossmaximo = input(8, "Loss")
//lossmaximo = (open- close)*100

////////////////////////////////////////////////////////
//                                                    //
//                     Checkbox                       //
//                                                    //
////////////////////////////////////////////////////////

//ativacomprasretorno = input(title="Ativar Compras Retorno", type=input.bool , defval=true)
//ativavendasretorno = input(title="Ativar Vendas Retorno", type=input.bool , defval=true)


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                  COMPRA E VENDA                    //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

Tradenumber = strategy.closedtrades + 1
Batemeta = strategy.netprofit < meta

//COMPRA RETORNO
//longcondition2 = Validadia and Call_Forte2 and Batemeta


//strategy.entry("Comprar", strategy.long, tamanhodolote, when=longcondition2, comment="[Oper=" + tostring(Tradenumber) + "]win=" + tostring(strategy.wintrades) + " | Loss=" + tostring(strategy.losstrades))
//strategy.exit("Saida Compra", "Comprar", profit=gaintotal, loss=lossmaximo)
//if (CruzamentoFechaCallGG)
    //strategy.close(id="Comprar")
//if (EscapeFechaCall)
  // strategy.close(id="Comprar")   
   
    
//plotchar(longcondition2, char="C", location=location.bottom, color=color.lime, transp=0)
//alertcondition(longcondition2, "Comprar", "Compra Rápida!")

//VENDA RETORNO
Shortcondition2 = Validadia and Sell_Forte2 and Batemeta

strategy.entry("Vender", strategy.short, tamanhodolote, when=Shortcondition2)
strategy.exit("Fecha Venda", "Vender", profit=gaintotal, loss=lossmaximo)
//if (CruzamentoFechaSellGG)
   // strategy.close(id="Vender")
//if (EscapeFechaSell)
   // strategy.close(id="Comprar")  
//plotchar(CruzamentoFechaSellGG, char="Y", location=location.top, color=color.lime, transp=0) 

//plotchar(longcondition2, char="S", location=location.bottom, color=color.lime, transp=0)
//alertcondition(longcondition2, "Vender", "Venda Rápida!")

//fim do codigo

Lebih banyak