A estratégia usa um binário de duas médias móveis para determinar a tendência e emitir um sinal de compra e venda. Quando uma média móvel rápida atravessa uma média móvel lenta de baixo, um binário de ouro e um sinal de compra ocorre. Quando uma média móvel rápida atravessa uma média móvel lenta de cima para baixo, um binário de ouro e um sinal de venda ocorre.
A estratégia é composta por:
O valor do oscilante é calculado na forma de porcentagem do preço. O valor do oscilante é a porcentagem do preço menos um valor médio. O valor médio é calculado pela média, por exemplo, dos preços mais altos e mais baixos nos últimos 20 dias.
Calcule a média móvel do valor do oscilador, como a média móvel de 20 dias do casco.
Calcule o valor de atraso da média móvel, como um atraso de 12 dias.
Determine se a média móvel está acima ou abaixo da média móvel de atraso, com um sinal de bifurcação ou bifurcação.
A partir daí, os preços de compra e de venda são regulados.
Concretamente, a estratégia primeiro calcula o valor do oscilador do preço, depois a média móvel do oscilador, e depois o valor de atraso dessa média móvel.
Quando o oscilador atravessa a média móvel de atraso na média móvel, gera um sinal de golden fork, fazendo mais; quando o oscilador atravessa a média móvel de atraso abaixo da média móvel, gera um sinal de dead fork, fazendo vazio.
Dessa forma, é possível determinar a direção da negociação julgando a interseção de duas médias móveis.
A estratégia tem as seguintes vantagens:
O uso de médias móveis duplas para filtrar sinais falsos aumenta a confiabilidade do sinal.
Usando uma combinação de linha média rápida e lenta, para capturar a tendência intermédia. A linha média rápida é sensível às mudanças de preço, a linha média lenta tem atraso, a combinação pode ser usada para capturar a reversão da tendência intermédia ao mesmo tempo em que elimina o ruído de curto prazo.
O uso de osciladores pode destacar pontos de ruptura e gerar sinais de negociação mais claros.
Algoritmos e parâmetros de média móvel personalizáveis para diferentes cenários de mercado.
A lógica da estratégia é simples e clara, fácil de entender e implementar, adequada para quem está começando.
A estratégia também apresenta os seguintes riscos:
O cruzamento de duas médias móveis gera um atraso no sinal, podendo perder o melhor ponto de entrada.
As médias móveis duplas são propensas a gerar sinais errôneos na correção.
A tendência é forte ou fraca, não se sabe, e pode ter saído prematuramente no mercado de ativos.
PARAMETERS tem muitos parâmetros ajustáveis e não é fácil de otimizar para encontrar a melhor combinação de parâmetros.
Não há um mecanismo de parada de perdas, não há controle de perdas individuais.
A estratégia pode ser melhorada em vários aspectos:
Optimizar os tipos e parâmetros das médias móveis para testar a estabilidade de diferentes combinações em diferentes mercados.
Aumentar os indicadores de tendência, como o ADX, para evitar a abertura de negociações desnecessárias devido a sinais errados.
Adicionar estratégias de stop-loss, como stop-loss móvel ou stop-loss percentual, para controlar a perda individual.
Combinado com outros indicadores, como a energia do volume de negociação, o RSI, etc., eleva a qualidade do sinal de negociação.
Otimizar automaticamente os parâmetros usando métodos de aprendizagem de máquina para obter uma configuração de parâmetros mais estável.
Considere a flexibilização apropriada das condições de entrada para reduzir a possibilidade de falta de bilhetes.
A estratégia de dupla média móvel, através de uma combinação de correspondência rápida e lenta, capta o ponto de inflexão da tendência média dos preços, enquanto elimina o ruído do mercado de curto prazo, para produzir um sinal de negociação. A estratégia é simples, fácil de implementar, fácil de entender e amigável para novatos. Mas também há desvantagens, como a produção de sinais errados e a incapacidade de determinar a força da tendência.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EvoCrypto
//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")
// INPUTS {
na_1 = input(false, title="────────────{ Oscillator }──────────────")
// Osc_Src = input(close, title="Oscillator Source ")
Example_Length = input(20, title="Example Length", minval=1)
Osc_Src = (highest(Example_Length) + lowest(Example_Length)) / 2
// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example
Osc_Format = input("Percent",title="Oscillator Format", options=["Percent", "Currency"])
na_2 = input(false, title="─────────────{ Average }──────────────")
Average_Type = input("Hull", title="Average Type", options=["Hull", "Sma", "Ema", "Wma"])
Length = input(50, title="Average Length", minval=1)
Lagg = input(12, title="Average Lagg", minval=1)
Display_MA = input(true, title="Display Average")
// }
// SETTINGS {
Osc_Sum =
Osc_Format == "Percent" ? (close - Osc_Src) / close * 100 :
Osc_Format == "Currency" ? (close - Osc_Src) : na
Osc_MA = Display_MA == false ? na:
Average_Type == "Hull"? hma(Osc_Sum, Length) :
Average_Type == "Sma" ? sma(Osc_Sum, Length) :
Average_Type == "Ema" ? ema(Osc_Sum, Length) :
Average_Type == "Wma" ? wma(Osc_Sum, Length) : na
Osc_MA_1 = Osc_MA[Lagg]
Cross_Up = crossover( Osc_MA, Osc_MA_1)
Cross_Down = crossunder(Osc_MA, Osc_MA_1)
Osc_Color = Osc_Sum > 0 ? color.new(#bbdefb, 70) : Osc_Sum < 0 ? color.new(#000000, 70) : na
Average_Color = Osc_MA > Osc_MA_1 ? color.new(#311b92, 100) : Osc_MA < Osc_MA_1 ? color.new(#b71c1c, 100) : na
// }
// PLOT {
plot(Osc_Sum, title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)
Plot_0 = plot(Osc_MA, title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1 = plot(Osc_MA_1, title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1, title="Average", color=Average_Color)
plotshape(Cross_Up ? Osc_MA_1 : na, title="Cross Up", color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na, title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }
// STRATEGY {
if (Cross_Up)
strategy.entry("Long", strategy.long)
if (Cross_Down)
strategy.entry("Short", strategy.short)
// }