
A estratégia de resposta de média móvel é uma estratégia de negociação de tendências muito simples. Sua idéia central é fazer mais quando a média móvel de curto prazo é inferior a uma determinada porcentagem da média móvel de longo prazo, e se equilibrar quando a média móvel de curto prazo atravessa a média móvel de longo prazo. A estratégia primeiro calcula uma média móvel de curto prazo e uma média móvel de longo prazo, e depois gera um sinal de negociação com base na relação entre as duas médias móveis.
A estratégia depende principalmente de duas médias móveis, uma média móvel de curto prazo e uma média móvel de longo prazo. O parâmetro da média móvel de curto prazo é o smallMAPeriod e o parâmetro da média móvel de longo prazo é o bigMAPeriod. A estratégia primeiro calcula as duas médias móveis e depois compara a relação de tamanho das duas médias móveis.
Quando a média móvel de curto prazo cai de cima para baixo abaixo da média móvel de longo prazo em uma determinada porcentagem (definida pelo parâmetro percentBelowToBuy), gera um sinal de compra, fazendo mais entrada no mercado. Quando a média móvel de curto prazo sobe posteriormente e sobe novamente atravessando a média móvel de longo prazo, gera um sinal de venda, equilibrando a posição.
A estratégia captura a oportunidade de retorno do valor médio entre a média móvel de curto prazo e a média móvel de longo prazo. Quando a média móvel de curto prazo é inferior a uma certa medida da média móvel de longo prazo, isso indica que o ativo pode estar abaixo do valor médio e deve ter a oportunidade de retornar ao valor médio.
A estratégia de resposta média móvel tem as seguintes vantagens:
A estratégia é simples. Parâmetros de otimização podem ser obtidos com bons resultados. Ao ajustar o parâmetro de média móvel e o parâmetro de porcentagem de concessão, pode ser feito um teste de retorno para diferentes ativos de mercado, como ações, divisas e criptomoedas, para selecionar o melhor conjunto de parâmetros.
A estratégia de resposta média móvel também tem alguns riscos:
O risco pode ser reduzido através das seguintes medidas:
A estratégia de resposta média móvel pode ser otimizada de várias maneiras:
A estratégia de resposta de média móvel, comparando a relação entre duas médias móveis de curto e longo prazo, capta oportunidades de retorno após o desvio de preços de curto prazo da tendência de longo prazo. A estratégia é simples, fácil de entender e implementar, e pode obter melhores resultados com a otimização de parâmetros. Mas também há menos sinais de negociação, é fácil de perder o risco de uma reversão de preço, e precisa testar e otimizar os parâmetros e as condições de filtragem para maximizar os ganhos da estratégia.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//
// @author Sunil Halai
//
// This very simple strategy is an implementation of PJ Sutherlands' Jaws Mean reversion algorithm. It simply buys when a small moving average period (e.g. 2) is below
// a longer moving average period (e.g. 5) by a certain percentage, and closes when the small period average crosses over the longer moving average.
//
// If you are going to use this, you may wish to apply this to a range of investment assets, as the amount signals is low. Alternatively you may wish to tweak the settings to provide more
// signals.
strategy("Jaws Mean Reversion [Strategy]", overlay = true)
//Strategy inputs
source = input(title = "Source", defval = close)
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 5)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 3)
//Strategy calculation
smallMA = sma(source, smallMAPeriod)
bigMA = sma(source, bigMAPeriod)
buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0]
if(crossunder(smallMA, buyMA))
strategy.entry("BUY", strategy.long)
if(crossover(smallMA, bigMA))
strategy.close("BUY")