
A estratégia combina o indicador de oscilação aleatório (Stochastic Oscillator) com a média móvel (Moving Average) para gerar um sinal de negociação observando a tendência de sobrevenda e sobrevenda do indicador aleatório e a tendência da média móvel. Quando o indicador aleatório produz um sinal de fechamento quando está na zona de sobrevenda e abaixo da linha de média móvel, e um sinal de fechamento quando está na zona de sobrevenda e acima da média móvel.
Calcule o indicador de oscilação aleatória, obtendo uma linha K e uma linha D. Os parâmetros são ajustáveis, incluindo o ciclo do indicador aleatório, o alinhamento do valor de K, o alinhamento do valor de D, as áreas de supercompra e supervenda.
Calcule a média móvel, usando o preço de fechamento por defeito, com um período ajustável.
Calcule um filtro de indicador aleatório. Quando a linha K mantém uma certa linha K abaixo de 50, um sinal de filtragem é gerado. O ciclo é ajustável.
Condições para gerar um sinal de múltiplas cabeças: um indicador aleatório cruzando para cima na zona de superalimento ou um indicador aleatório filtrando para cima na média móvel.
Condições para gerar um sinal de cabeceira vazia: indicador aleatório na região de overbought cruzado para baixo ou indicador aleatório sinal de filtro e média móvel para baixo.
Condição de posição de equilíbrio múltipla: atravessa a média móvel na linha K aleatória e a linha média gira para baixo.
Condição de equilíbrio a céu aberto: a média móvel passa por baixo da linha K aleatória e a média gira para cima.
A administração de posições usa a proporção de capital fixo, 10% por defeito. Ao mesmo tempo, o stop loss é definido, 2% por defeito.
A combinação das características de sobrecompra e sobrevenda com a de tendência permite que os investidores consigam capturar a queda da tendência.
Os filtros de indicadores aleatórios evitam a negociação frequente em situações de turbulência.
A configuração Stop Loss ajuda a controlar a retirada.
A estrutura do código é clara, os parâmetros são ajustáveis, para uma melhor otimização.
Os indicadores aleatórios têm um certo atraso, podendo perder os melhores pontos de compra e venda.
Na reviravolta da tendência, a precisão de rastreamento é fraca e a frequência de stop loss pode ser alta.
A administração de fundos de proporção fixa é mais retratada em casos de perdas contínuas.
A introdução de mais condições de filtragem, como o comportamento dos preços e outros indicadores auxiliares, aumentou a precisão do sinal.
Dividir os sinais de força e fraqueza, aumentando a posição quando surge um sinal de força.
Otimizar o julgamento dos pontos de inflexão da tendência, com o objetivo de capturar mais informações.
Para otimizar o gerenciamento de posições, pode-se considerar o ajuste de posições de ganhos e perdas flutuantes.
Experimente diferentes combinações de parâmetros para encontrar o melhor.
A estratégia baseia-se em um indicador de oscilação aleatória para julgar a tendência em combinação com a média móvel, ao mesmo tempo em que utiliza a função de filtragem do próprio indicador aleatório para produzir um sinal de negociação relativamente confiável. A estratégia tem uma concepção geral clara e é adequada para uso em situações de tendência.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc
//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)
// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")
// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")
// Capital inicial
capital = 5000
// Tamaño de posición (10% del capital)
positionSize = capital * 0.10
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")
// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)
// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)
// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]
// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]
// Estrategia
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))
// Cierre de posiciones
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")