
A EintSimple Pullback Strategy é uma estratégia de entrada de retorno baseada no cruzamento de duas médias móveis. A estratégia usa primeiro as médias móveis de curto e longo prazo, gerando um sinal de compra quando a média móvel de curto prazo quebra a média móvel de longo prazo.
Após a entrada, se o preço voltar a cair abaixo da média móvel de curto prazo, o BTC exibirá um sinal de saída. Além disso, a estratégia também estabelece um stop-loss de saída, que também sairá da posição se atingir a porcentagem de perda de parada definida a partir do ponto máximo de retirada.
A estratégia baseia-se principalmente no cruzamento do ouro das médias móveis duplas para determinar o momento de entrada. Concretamente, é necessário atender simultaneamente às seguintes condições para abrir mais posições:
A estratégia é executada em tempo real quando os requisitos acima são cumpridos.
O julgamento do sinal de saída baseia-se em duas condições, uma é que o preço caiu novamente abaixo da média móvel de curto prazo, e a outra é a porcentagem de stop loss definida a partir do ponto máximo de retração. As condições de saída específicas são as seguintes:
A estratégia elimina todos os cartões que cumprem qualquer um dos critérios de desativação.
O uso de médias móveis duplas cruzadas e combinadas com o julgamento de preços de fechamento físico pode filtrar efetivamente as brechas falsas.
A entrada de retorno é adotada após a curva de curto prazo do preço das ações.
O sistema de retenção de perdas permite a retirada máxima.
A estratégia de cruzamento de duas médias móveis é propensa a produzir vários sinais de negociação, podendo acompanhar os altos e baixos.
A configuração incorreta dos parâmetros da média móvel pode causar uma curva muito lisa ou muito sensível.
A configuração de parada de prejuízos é muito flexível e aumenta os prejuízos.
Teste combinações de variáveis de média móvel de longo prazo de diferentes comprimentos para encontrar o parâmetro ideal.
Teste comparativo sobre a eficácia do cruzamento de médias móveis usando preços de fechamento e preços típicos.
Teste filtros como volume de transação ou indicadores de volatilidade.
Otimizar o padrão de recuperação do stop loss para encontrar a melhor configuração.
EintSimple Pullback Strategy é uma estratégia de retorno de média móvel binária simples e prática. Utiliza eficazmente a função indicativa da média móvel e, ao mesmo tempo, combina o julgamento de preços de fechamento de ativos para filtrar os falsos sinais. Embora a estratégia seja suscetível a problemas de negociação freqüente e busca de alta e baixa, pode ser aperfeiçoada ainda mais com a otimização de parâmetros e a adição de filtros.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy",
overlay=true,
initial_capital=50000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100)// 100% of balance invested on each trade
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2 = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)
// Check filter(s)
f_dateFilter = true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.fuchsia)