
A estratégia é baseada em um cálculo de diferença k entre o ROC e o SMA, em seguida, a k é adicionado a um certo comprimento, com base no valor positivo e negativo da soma de adição como base para o julgamento de fazer mais curto prazo. A estratégia é uma estratégia de negociação de curta linha.
A estratégia primeiro calcula a média SMA e o indicador de ROC com a duração de l, e depois calcula o diferencial k entre o preço de encerramento atual e o SMA. Em seguida, calcula a acumulação e a soma de dias s de k. Quando a soma é maior que 0 e menor que 0, a soma é baixa.
O código diz o seguinte:
Mediano SMA de comprimento l a
Calcule o indicador de ROC de comprimento l r
Calcule a diferença entre o preço de fechamento atual e a linha média do SMA k = close - a
A soma de k em s dias é sum.
Se sum>0, faça mais; se sum, faça um espaço.
Condições de posição equilibrada: sum < 0 para posições excedentárias; sum < 0 para posições equilibradas
A chave para esta estratégia é calcular a soma e o agregado de k, usando a soma positiva e negativa como sinal de negociação. Quando o preço está subindo no período mais recente de k> 0, então faça mais; Quando o preço está caindo no período mais recente de k < 0, então faça zero.
Esta é uma estratégia de negociação de linha curta mais simples e prática, com as seguintes vantagens:
O conjunto de indicadores utilizados é simples, fácil de entender e de implementar.
Filtração de variações de indicadores permite encontrar oportunidades de negociação mais precisas.
A acumulação dos valores de diferença permite uma captura mais precisa das tendências das linhas curtas.
Os parâmetros l e s podem ser ajustados de acordo com o mercado, adaptando-se a diferentes ciclos.
A estratégia é clara, o processo é simples, fácil de modificar e de otimizar.
A eficiência do uso dos fundos permite a realização de transações frequentes e de curta duração.
A estratégia também apresenta alguns riscos, incluindo:
A transação em linha curta é muito arriscada e pode levar a perdas.
A configuração inadequada dos parâmetros pode levar a negociações excessivamente frequentes ou a oportunidades perdidas.
A falta de capacidade para lidar com a reversão da tendência e o risco de perda maior ao ultrapassar o stop loss.
Os parâmetros precisam ser monitorados e ajustados com frequência, dependendo mais da experiência dos traders.
A frequência das transações pode aumentar os custos e os pontos de deslizamento das transações, afetando os lucros.
As soluções para os riscos incluem:
Ajustar os parâmetros de forma apropriada para reduzir a frequência de transações.
Combinado com indicadores de tendência, identifica uma reversão de tendência.
Optimizar a estratégia de stop loss e controlar as perdas individuais.
Adição de módulos de otimização de parâmetros de automação, reduzindo a dependência da experiência do comerciante.
Otimizar módulos de encomenda e reduzir custos de transação.
A estratégia pode ser melhorada em alguns aspectos:
Otimização de métodos de cálculo de parâmetros para tornar os parâmetros mais adaptáveis. Pode-se considerar o uso de algoritmos genéticos, métodos de otimização dinâmica de parâmetros, como a cadeia de Markov.
Combinando mais indicadores e condições de filtragem, melhorar a qualidade do sinal de negociação.
Melhorar as estratégias de stop loss, como a introdução de stop loss móvel, stop loss médio, etc., para controlar perdas únicas.
Optimizar as estratégias de gestão de fundos, tais como a gestão de pontos de risco, distribuição de fundos em proporções fixas, etc., para controlar o risco global.
Otimização do módulo de pedidos, uso de algoritmos como rastreamento de tendências e controle de pontos de deslizamento, reduzindo os custos de transação.
Adição de módulos de otimização de feedback automático para avaliar rapidamente o impacto de diferentes parâmetros na estratégia.
Adicionar módulos de avaliação de indicadores quantitativos, avaliar a qualidade do sinal de negociação e melhorar a estabilidade da estratégia.
Com essas melhorias, a estratégia pode ser transformada em um sistema de negociação de linha curta mais abrangente, inteligente, estável e controlado.
Em geral, a estratégia gera sinais de negociação por meio de um simples cálculo de indicadores, é clara e fácil de implementar e pertence à típica estratégia de negociação de linha curta. Com a otimização adicional de parâmetros, stop loss, gerenciamento de fundos, etc., pode reduzir o risco e aumentar a estabilidade, tornando-a uma das estratégias de negociação quantitativa que vale a pena usar.
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)
l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc = iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
strategy.entry("Long", strategy.long, oca_name="Long", comment="Long")
else
strategy.cancel(id="Long")
if sum<0
strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0
//shortCondition = sum<0
//exitshort = sum>0
//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)
//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)