Esta estratégia combina duas estratégias diferentes. A primeira estratégia gera sinais baseados no cruzamento duplo da média móvel dos preços das ações. A segunda estratégia é baseada no Awesome Oscillator dos Indicadores Williams. O sinal final leva a interseção dos dois sinais de estratégia para formar o sinal de negociação final.
A primeira estratégia gera um sinal de compra quando o fechamento de ontem é maior do que o fechamento do dia anterior e o oscilador estocástico rápido de 9 dias é menor do que a linha D lenta do oscilador estocástico de 3 dias.
A segunda estratégia calcula a diferença entre as flutuações de preços de 5 e 34 dias e calcula as médias móveis dessa diferença. Quando o valor atual está acima do período anterior, é um sinal de compra. Quando o valor atual está abaixo do período anterior, é um sinal de venda.
Os dois sinais de estratégia são combinados tomando sua interseção. Uma posição longa é tomada quando ambas as estratégias dão um sinal de compra. Uma posição curta é tomada quando ambas as estratégias dão um sinal de venda.
Esta estratégia combina as vantagens da estratégia de cruzamento de média móvel dupla e da estratégia do indicador de Williams. A estratégia de cruzamento de média móvel dupla pode capturar tendências de médio a longo prazo. A estratégia do indicador de Williams pode capturar oportunidades de negociação de curto prazo. A combinação das duas estratégias permite a captação de lucro e a prevenção de falhas.
Além disso, a utilização de múltiplos parâmetros de entrada permite a otimização para diferentes existências e condições de mercado, tornando a estratégia adaptável a uma gama mais ampla de ambientes de mercado.
Quando uma estratégia gera um sinal de compra enquanto a outra gera um sinal de venda, a estratégia combinada não pode produzir um sinal significativo, potencialmente perdendo oportunidades de negociação.
Além disso, os múltiplos parâmetros representam alguma dificuldade para a otimização.
Para reduzir os riscos, pode utilizar-se exclusivamente qualquer um dos sinais de estratégia, podendo igualmente investigar-se intervalos de parâmetros adequados para diferentes condições de mercado.
A estratégia pode ser reforçada em vários aspectos:
Avaliar a consistência do sinal entre as duas estratégias sob diferentes combinações de parâmetros para encontrar os parâmetros ideais para a correspondência do sinal.
Teste o desempenho em diferentes produtos, prazos para encontrar o melhor âmbito de aplicação.
Considere substituir o cruzamento da média móvel dupla por outros indicadores técnicos, como o KDJ, para diversificar a combinação de estratégias.
Incorporar mecanismos de stop loss para controlar os riscos, por exemplo, estabelecer paradas máximas de extracção.
Esta estratégia combina a estratégia de cruzamento de média móvel dupla e a estratégia do indicador de Williams para capturar tanto o rastreamento de tendências quanto os sinais de curto prazo. Através da otimização de parâmetros, ele pode se adaptar a uma ampla gama de condições de mercado. No entanto, a correspondência inconsistente de sinais e a otimização de parâmetros complexos continuam sendo seus desafios.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/06/2019 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // This indicator plots the oscillator as a histogram where blue denotes // periods suited for buying and red . for selling. If the current value // of AO (Awesome Oscillator) is above previous, the period is considered // suited for buying and the period is marked blue. If the AO value is not // above previous, the period is considered suited for selling and the // indicator marks it as red. // You can make changes in the property for set calculating strategy MA, EMA, WMA // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) => pos = 0 xSMA1_hl2 = sma(hl2, nLengthFast) xSMA2_hl2 = sma(hl2, nLengthSlow) xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2 xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast) nRes = xSMA1_SMA2 - xSMA_hl2 xResWMA = wma(nRes, nLengthWMA) xResMA = sma(nRes, nLengthMA) xResEMA = ema(nRes, nLengthEMA) xSignalSeries = iff(bShowWMA, xResWMA, iff(bShowMA, xResMA, iff(bShowEMA, xResEMA, na))) cClr = nRes > nRes[1] ? blue : red pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1, iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- nLengthSlow = input(34, minval=1, title="Length Slow") nLengthFast = input(5, minval=1, title="Length Fast") nLengthMA = input(15, minval=1, title="MA") nLengthEMA = input(15, minval=1, title="EMA") nLengthWMA = input(15, minval=1, title="WMA") bShowWMA = input(type=bool, defval=true, title="Show and trading WMA") bShowMA = input(type=bool, defval=false, title="Show and trading MA") bShowEMA = input(type=bool, defval=false, title="Show and trading EMA") reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1, iff(posReversal123 == -1 and posBillWilliamsAC == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? red: possig == 1 ? green : blue )