Chiến lược gọi ký quỹ hai chiều năng động


Ngày tạo: 2023-11-27 11:33:11 sửa đổi lần cuối: 2023-11-27 11:33:11
sao chép: 1 Số nhấp chuột: 609
1
tập trung vào
1617
Người theo dõi

Chiến lược gọi ký quỹ hai chiều năng động

Tổng quan

Đây là một chiến lược sử dụng tín hiệu phá vỡ mạnh mẽ hai chiều của thị trường để mở vị trí hai chiều. Nó sẽ chọn hướng mở vị trí sau khi xuất hiện hai đường K mạnh mẽ đồng chiều, sau đó thiết lập dừng lỗ và quản lý rủi ro.

Nguyên tắc chiến lược

Chiến lược này dựa trên hai tín hiệu K-line mạnh để xác định hướng thị trường. Cụ thể, nó sẽ tính toán xu hướng tăng/tăng của mỗi K-line và xác định hướng đó là hướng mạnh sau khi hai K-line liên tiếp tăng/tăng vượt ngưỡng mà người dùng đã đặt (ví dụ: 6%).

Ghi chú: Giá đóng cửa hai đường K liên tiếp tăng hơn 6% so với ngày trước Điều kiện mở cửa: Giá đóng cửa hai đường K liên tiếp giảm hơn 6% so với giá đóng cửa ngày trước

Sau khi mở vị trí, bạn sẽ thiết lập khoảng cách dừng để kiểm soát rủi ro. Khoảng cách dừng được nhập bởi người dùng, khoảng cách dừng là một số nhân của giá mở vị trí (ví dụ: 8 lần).

Chiến lược này cũng có một số tính năng phụ để kiểm soát rủi ro, chẳng hạn như chỉ mở vị trí trong một khoảng thời gian nhất định, đặt số tiền lỗ tối đa.

Phân tích lợi thế

Đây là một chiến lược giao dịch hai chiều ổn định và đáng tin cậy. Các lợi thế chính là:

  1. Sử dụng giao dịch hai chiều, bạn có thể kiếm được lợi nhuận khi thị trường tăng và giảm, tăng sự ổn định.

  2. Dựa trên hai tín hiệu mạnh để đánh giá xu hướng, nó có thể lọc tiếng ồn hiệu quả, chất lượng vị trí được nhập cao hơn.

  3. Cài đặt Stop Loss hợp lý, có lợi cho việc kiểm soát rủi ro, hạn chế lỗ.

  4. Các tính năng phụ trợ được cải thiện, chẳng hạn như kiểm soát thời gian, kiểm soát lỗ tối đa, và các tính năng khác, có thể kiểm soát rủi ro tốt.

  5. Dễ xác minh và tối ưu hóa trên thực tế, logic chiến lược đơn giản và rõ ràng.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Khi thị trường biến động, có thể xảy ra stopwords 损失. 您可以适当调整第一个信号判断参数,以确保信号质量.

  2. Tỷ lệ gặp phải ba đường K siêu mạnh là nhỏ hơn, cơ hội mở vị trí có thể ít hơn. Các tham số có thể được điều chỉnh thích hợp, nhưng cần cân bằng chất lượng tín hiệu.

  3. Hành động không hợp lý của sự kiện đột ngột có thể dẫn đến tổn thất lớn vượt quá khoảng cách dừng lỗ. Điều này cần được kiểm soát mức tổn thất tối đa hỗ trợ để giải quyết.

  4. Khi thực hiện giao dịch hai chiều, hãy chú ý đến vấn đề quản lý tiền. Nếu phân phối tiền không đồng đều có thể dẫn đến tài khoản chỉ thua lỗ.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:

  1. Tối ưu hóa logic phán đoán của tín hiệu đầu tiên, cải thiện chất lượng tín hiệu. Bạn có thể xem xét thêm các yếu tố khác, chẳng hạn như thay đổi khối lượng giao dịch, tỷ lệ biến động.

  2. Tối ưu hóa tiêu chuẩn dừng lỗ. Các tham số có thể được điều chỉnh theo các thị trường khác nhau, làm cho lỗ hổng hợp lý hơn. Khoảng cách dừng lỗ cũng có thể được đặt thành dừng động.

  3. Thêm thêm các mô-đun kiểm soát rủi ro. Ví dụ như lỗ tối đa trong một ngày, lỗ liên tục tối đa. Bảo đảm sử dụng an toàn và hiệu quả vốn.

  4. Tối ưu hóa tỷ lệ sử dụng vốn. Phân phối quỹ giao dịch nhiều không gian hợp lý hơn, ngăn chặn chỉ kiếm tiền.

  5. Tối ưu hóa phản hồi và cải thiện khả năng thích ứng cho các loại giao dịch khác nhau bằng cách đặt các tham số khác nhau.

Tóm tắt

Chiến lược này là một chiến lược bù đắp hai chiều ổn định hơn. Nó có chất lượng tín hiệu cao và có khả năng kiểm soát rủi ro nhất định.

Mã nguồn chiến lược
/*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