Esta estratégia pertence ao tipo de estratégia de scalping, com o objetivo de abrir e fechar posições com frequência para lucrar com pequenos ganhos, limitando os riscos de queda.
A estratégia utiliza 4 médias móveis - 9, 50, 100 e 200 períodos.
As regras específicas de negociação são:
Esta combinação identifica situações em que o preço está em tendência de baixa a curto prazo, mas pode ocorrer uma reversão.
A regra de saída é quando 9 MA cruza acima de 200 MA. Uma meta de lucro próximo é usada para bloquear pequenos ganhos frequentes para lucros estáveis.
Os riscos podem ser reduzidos:
A estratégia pode ser melhorada:
Optimização das combinações de MA
Testar mais períodos de MA para uma melhor detecção da reversão.
Aumento dos níveis de lucro
Permitir uma distância TP mais larga para mais lucros de tendência.
Adição de outros indicadores
Tal como KDJ, MACD para confirmação para reduzir negócios inválidos.
Optimização do dimensionamento da posição
Posições de tamanho dinâmico baseadas em TP e SL específicos.
Adição de regras de reentrada
Considere reentrar após TP se a tendência continuar.
Esta estratégia de scalping identifica possíveis reversões de curto prazo com combinações de MA para lucros pequenos frequentes. Isso controla efetivamente perdas e riscos individuais, tornando-o adequado para o crescimento de pequenas contas. No entanto, existem limitações como pequena faixa de lucro e negociações excessivas. Melhorias podem ser feitas por meio de ajuste de parâmetros, ajuste de TP, adição de filtros, etc., para expandir os lucros mantendo seus pontos fortes, tornando a estratégia mais robusta e eficiente. Também é importante aprender continuamente outras estratégias mais avançadas.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy(shorttitle='Moving Average Scalper (by Coinrule)',title='Moving Average Scalper', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 10, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2019, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //MA inputs and calculations movingaverage_signal = sma(close, input(9)) movingaverage_fast = sma(close, input(50)) movingaverage_slow = sma(close, input(200)) movingaverage_mid= sma(close, input(100)) //Entry bullish = crossover(movingaverage_signal, movingaverage_fast) strategy.entry(id="long", long = true, when = bullish and movingaverage_fast < movingaverage_mid and movingaverage_mid < movingaverage_slow and window()) //Exit bearish = crossover(movingaverage_signal, movingaverage_slow) Stop_loss= ((input (2))/100) Take_profit= ((input (8))/100) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = bearish) // close < longStopPrice or close > longTakeProfit and window()) //PLOT plot(movingaverage_signal, color=color.black, linewidth=2 ) plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=2) plot(movingaverage_mid, color=color.blue, linewidth=2)