Strategi Posisi Tambahan Dua-Jalan Dinamik

Penulis:ChaoZhang, Tarikh: 2023-11-27 11:33:11
Tag:

img

Ringkasan

Ini adalah strategi yang mengambil kedudukan dalam kedua-dua arah dengan menggunakan isyarat terobosan yang kuat dalam kedua-dua arah. Ia akan memilih arah untuk membuka kedudukan selepas dua candlesticks yang kuat berturut-turut muncul dalam arah yang sama, kemudian menetapkan stop profit dan stop loss untuk pengurusan risiko.

Prinsip Strategi

Strategi ini menilai arah pasaran berdasarkan isyarat dua candlestick yang kuat berturut-turut. Khususnya, ia mengira peratusan peningkatan / penurunan setiap candlestick. Apabila peratusan peningkatan / penurunan dua candlestick berturut-turut melebihi ambang yang ditetapkan oleh pengguna (seperti 6%), ia menentukan bahawa arahnya kuat, dan membuka kedudukan panjang / pendek di candlestick ketiga.

Keadaan panjang: Harga penutupan dua candlestick berturut-turut meningkat lebih daripada 6% berbanding dengan harga penutupan sebelumnya

Keadaan pendek: Harga penutupan dua candlestick berturut-turut jatuh lebih daripada 6% berbanding dengan harga penutupan sebelumnya

Selepas membuka kedudukan, ia akan menetapkan jarak stop profit dan stop loss untuk mengawal risiko. Jarak stop profit dimasukkan oleh pengguna, dan jarak stop loss adalah kelipatan (seperti 8 kali) harga pembukaan.

Strategi ini juga mempunyai beberapa fungsi tambahan untuk mengawal risiko, seperti hanya membenarkan untuk membuka kedudukan dalam tempoh masa tertentu, menetapkan jumlah kerugian maksimum, dll.

Analisis Kelebihan

Ini adalah strategi perdagangan dua arah yang agak stabil dan boleh dipercayai.

  1. Perdagangan dua arah boleh memperoleh keuntungan apabila pasaran naik dan turun, meningkatkan kestabilan.

  2. Menghakimi trend berdasarkan dua isyarat yang kuat dapat menapis bunyi bising dengan berkesan dan meningkatkan kualiti kedudukan yang dibuka.

  3. Tetapan stop profit dan stop loss adalah munasabah, yang bermanfaat untuk mengawal risiko dan mengehadkan kerugian.

  4. Fungsi tambahan adalah komprehensif, seperti kawalan masa, kawalan kerugian maksimum, dll. Mereka boleh mengawal risiko dengan sangat baik.

  5. Ia mudah untuk backtest dan mengoptimumkan strategi ini kerana logiknya mudah dan jelas.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Kami boleh menyesuaikan parameter isyarat pertama dengan betul untuk memastikan kualiti isyarat.

  2. Kemungkinan tiga candlestick super kuat berturut-turut adalah agak kecil, yang boleh membawa kepada peluang yang lebih sedikit untuk membuka kedudukan.

  3. Kelakuan tidak rasional yang disebabkan oleh peristiwa tiba-tiba boleh membawa kepada kerugian besar melebihi jarak stop loss.

  4. Untuk pelaksanaan perdagangan dua arah, kita perlu memberi perhatian kepada masalah peruntukan dana, jika tidak, ia boleh membawa kepada keuntungan tanpa berhenti kerugian.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Mengoptimumkan logik penghakiman isyarat pertama untuk meningkatkan kualiti isyarat.

  2. Mengoptimumkan piawaian berhenti keuntungan dan berhenti kerugian. Sesuaikan parameter berdasarkan pasaran yang berbeza untuk menjadikan nisbah risiko-balasan lebih munasabah. Jarak stop loss juga boleh ditetapkan sebagai stop loss dinamik.

  3. Tambah lebih banyak modul kawalan risiko. Sebagai contoh, kerugian harian maksimum, kerugian berturut-turut maksimum dan lain-lain untuk memastikan penggunaan dana yang cekap dan selamat.

  4. Mengoptimumkan nisbah peruntukan dana, untuk menjadikan peruntukan modal dagangan dua arah lebih munasabah, menghalang keuntungan tanpa menghentikan kerugian.

  5. Tetapkan kombinasi parameter yang berbeza untuk pengoptimuman backtesting ke arah pelbagai jenis perdagangan, untuk meningkatkan kesesuaian.

Ringkasan

Strategi ini adalah strategi kedudukan tambah dua arah yang agak kukuh. Ia mempunyai kualiti isyarat yang tinggi dan keupayaan kawalan risiko tertentu. Ia juga mempunyai ruang yang besar untuk pengoptimuman untuk meningkatkan kestabilan keuntungan. Strategi ini sesuai untuk pasaran trend jangka menengah dan panjang, dan juga dapat merebut peluang semasa penyatuan pasaran.


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