
Ý tưởng chính của chiến lược này là sau khi giá cổ phiếu dừng lại trong một thời gian ngắn rõ ràng, sau đó, dựa trên tình hình cân bằng được hình thành trong giai đoạn dừng chân, giá có thể đi theo hướng tiếp theo, do đó, thực hiện các hoạt động nhị phân tương ứng.
Chiến lược sử dụng chỉ số dao động Stochastic để xác định liệu giá cổ phiếu có bị thu hẹp hay không. Động cơ dao động Stochastic cho biết giá cổ phiếu đã được thu hẹp khi có sự biến động trong khu vực quá mua hoặc quá bán.
Khi chỉ số Stochastic oscillator dao động, hãy đánh giá điểm chuyển hướng theo hướng thực thể của đường K. Khi đường K đi từ âm sang dương được đánh giá là kết thúc của sự cân bằng, hãy làm nhiều; Khi đường K đi từ dương sang âm được đánh giá là kết thúc của sự cân bằng, hãy làm trống.
Hạn chế dừng lỗ sau khi thực hiện nhiều thời gian trống tùy theo điểm vào, sử dụng dừng lỗ di động.
Chiến lược này hỗ trợ cả hoạt động toàn kho và hoạt động chia kho. Thiết lập điểm dừng cố định khi toàn kho; thiết lập điểm dừng di động khi chia kho.
Chiến lược này cũng thiết lập thời gian giao dịch hàng ngày, chỉ giao dịch trong khoảng thời gian được thiết lập.
Sử dụng chỉ số Stochastic oscillator để đánh giá trạng thái dao động của giá cổ phiếu, bạn có thể đánh giá chính xác tổng hợp ngắn hạn của giá cổ phiếu.
Hoạt động tại các điểm chuyển đổi đường K sau động đất có thể cải thiện độ chính xác của hoạt động.
Sử dụng dừng chân di động, bạn có thể trailing điểm dừng chân theo giá cổ phiếu, và bạn có thể khóa nhiều lợi nhuận hơn.
Hỗ trợ cho các hoạt động toàn kho và phân kho, tùy theo sở thích rủi ro của bạn.
Đặt thời gian giao dịch để tránh các hoạt động sai lầm trong thời gian giá cổ phiếu dao động bất thường.
Chỉ số Stochastic Oscillator có khả năng phát ra tín hiệu sai, có thể bỏ lỡ điểm mua hoặc bán.
Đánh giá điểm xoay K không chính xác, có thể hoạt động ở điểm không xoay.
Điểm dừng di chuyển theo biến động của giá cổ phiếu, có thể bị phá vỡ.
Hoạt động phân vị có rủi ro cao, giá cổ phiếu đảo ngược có thể dẫn đến sự gia tăng Loss.
Cần điều chỉnh điểm dừng và độ di chuyển để phù hợp với các đặc điểm của các cổ phiếu khác nhau.
Cần tránh tác động đến chiến lược của biến động bất thường của giá cổ phiếu do các sự kiện lớn.
Tối ưu hóa các tham số của dao động Stochastic để xác định chính xác hơn các khoảng cân bằng.
Kết hợp với các chỉ số khác để xác nhận tín hiệu chuyển hướng đường K, tăng độ chính xác hoạt động.
Tối ưu hóa các thuật toán dừng lỗ di động để các điểm dừng lỗ có thể theo dõi giá cổ phiếu tốt hơn.
Thêm kiểm soát vị trí để tránh mất quá nhiều cổ phiếu.
Trong khi đó, các nhà đầu tư khác cũng có thể sử dụng các công cụ này để tăng giá cổ phiếu của họ.
Tối ưu hóa mô hình phân chia, theo dõi xu hướng lớn hơn.
Chiến lược dừng quay trở lại sử dụng chỉ số Stochastic oscillator để xác định đường ngắn và hoạt động tại điểm biến động giá sau khi rung. Chiến lược này có tỷ lệ thắng cao, có thể khóa lợi nhuận trong xu hướng. Tuy nhiên, Stochastic oscillator có khả năng phát ra tín hiệu giả, độ chính xác hoạt động cần được cải thiện hơn nữa.
/*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 )