Retração da média móvel dinâmica Estratégia Martin

Autora:ChaoZhang, Data: 2023-11-24 10:19:21
Tags:

img

Resumo

A estratégia Martin é uma estratégia de negociação frequente que combina crossovers de média móvel e sinais de pullback para gerar sinais de entrada e saída. A estratégia usa o crossover e a divergência de médias móveis simples de 3 dias e 8 dias para capturar tendências de curto prazo, e adota paradas e lucros para controlar riscos. Esta estratégia permite escolher direções de negociação de acordo com diferentes condições de mercado.

Estratégia lógica

A estratégia usa médias móveis simples de 3 dias e 8 dias e seus sinais de cruzamento. Um sinal longo é gerado quando o MA de 3 dias cruza acima do MA de 8 dias, e um sinal curto é gerado quando o MA de 3 dias cruza abaixo do MA de 8 dias.

Se não houver uma posição, a estratégia determinará a entrada com base em sinais de cruzamento. Após a entrada, o preço de stop loss e o preço de take profit serão calculados com base no último preço de fechamento, porcentagem de stop loss e porcentagem de take profit. Por exemplo, ao manter uma posição longa, o preço de stop loss é o último preço de fechamento menos a porcentagem de stop loss multiplicada pela MA de 8 dias; o preço de take profit é o último preço de fechamento mais a porcentagem de take profit multiplicada pela MA de 8 dias.

Se houver uma posição longa existente, quando o preço desencadear o take profit ou stop loss, se ocorrer um sinal de pullback da MA de 8 dias, a posição será fechada.

A estratégia também traça pontos de entrada e saída no gráfico. Por exemplo, uma entrada longa é traçada como um triângulo ascendente e uma saída longa como um triângulo descendente. Isso ajuda a julgar visualmente entradas e saídas.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Captura tendências de curto prazo utilizando sinais cruzados de média móvel, permitindo negociações frequentes.
  2. O mecanismo de stop loss pode controlar perdas individuais.
  3. A fixação do lucro pode bloquear lucros parciais.
  4. As direcções de negociação podem ser selecionadas para se adequarem a diferentes fases.
  5. Visualiza pontos de entrada e saída no gráfico para maior clareza.

Análise de riscos

Os principais riscos desta estratégia são:

  1. As estratégias de MA a curto prazo tendem a ser desfeitas.
  2. Possibilidade de atrasos nos sinais das médias móveis.
  3. As perdas consecutivas podem levar a perdas agravadas.
  4. A percentagem de stop loss pode ser demasiado frouxa ou demasiado apertada.

Os riscos podem ser reduzidos aumentando razoavelmente a percentagem de stop loss, otimizando os parâmetros de MA, introduzindo condições de filtragem adicionais, etc. Também é importante avaliar corretamente a tolerância pessoal e evitar o excesso de negociação.

Orientações de otimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Teste mais combinações de MA para encontrar parâmetros ideais.
  2. Adicionar outros indicadores como RSI, KD etc. para melhorar a qualidade do sinal.
  3. Ajustar a percentagem de stop loss de acordo com diferentes produtos e prazos.
  4. Adicionar o controlo do tamanho das posições, como quantidade fixa ou capital fixo.
  5. Adicionar regras de ordem de entrada.
  6. Otimizar e avaliar os níveis de stop loss ou take profit.

Resumo

A estratégia Martin é uma estratégia de negociação de curto prazo. Captura tendências de curto prazo formadas por cruzamento de médias móveis e gerencia riscos com paradas e lucros adequados. A natureza freqüente da negociação lhe dá oportunidades de lucro, bem como riscos.


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
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/
// © blackcat1402
//@version=5
strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5)

// Define input variables
takeProfit = input(1.03, title='Take Profit')
stopLoss = input(0.95, title='Stop Loss')
inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode')

//The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'.
strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all)

// Define strategy logic
entryPrice = 0.0
stopPrice = 0.0
takeProfitPrice = 0.0
stopLossPrice = 0.0

// Define SMA crossover and crossunder signals
sma3 = ta.sma(close, 3)
sma8 = ta.sma(close, 8)
plot(sma3, color=color.yellow)
plot(sma8, color=color.fuchsia)
crossoverSignal = ta.crossover(sma3, sma8)
crossunderSignal = ta.crossunder(sma3, sma8)
crossoverState = sma3 > sma8
crossunderState = sma3 < sma8

if strategy.position_size == 0
    if crossoverState
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss * sma8[1]
        takeProfitPrice := close + takeProfit * sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice
    if crossunderState
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size > 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossunderState
        strategy.close('Buy')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss *  sma8[1]
        takeProfitPrice := close + takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size < 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossoverState
        strategy.close('Sell')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

// Plot entry and exit points
plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)
plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)



Mais.