Estratégia de previsão de rota futura de Mike D


Data de criação: 2023-12-13 17:21:44 última modificação: 2023-12-13 17:21:44
cópia: 0 Cliques: 714
1
focar em
1621
Seguidores

Estratégia de previsão de rota futura de Mike D

Visão geral

A ideia central desta estratégia é realizar previsões de tendências de preços através da análise do movimento futuro do indicador McD. A estratégia aproveita ao máximo os sinais de negociação gerados pelo cruzamento entre a média rápida e a média lenta do indicador McD.

Princípio da estratégia

  1. Calcule a diferença do indicador de McD (valor histórico) e, com base nisso, julgue a subida e a descida da linha de McD e da linha de sinal.
  2. Para determinar a trajetória futura do indicador de McD, use o valor futuro do indicador de McD em um intervalo de tempo de 4 horas, para prever a tendência de preço, com a colocação de uma opção de compra.
  3. Faça mais quando o diferencial do indicador de McD é maior que 0 (representando o mercado de títulos) e se espera que continue a subir; Faça um vazio quando o diferencial do indicador de McD é menor que 0 (representando o mercado de títulos) e se espera que continue a cair.
  4. A estratégia combina o acompanhamento de tendências e a reversão de tendências, capturando as tendências e capturando o momento em que as tendências se revertem.

Análise de vantagens estratégicas

  1. O indicador de McD pode ser usado para avaliar a tendência do mercado e filtrar oscilações para capturar a tendência da linha longa.
  2. A previsão da tendência futura do indicador de McD permite a captação antecipada dos pontos de inflexão dos preços e a prospectiva da estratégia.
  3. Ao mesmo tempo, a combinação de seguimento de tendências e reversão de tendências, pode reverter a posição no momento certo durante o processo de acompanhamento de tendências, obtendo maiores lucros.
  4. Os parâmetros da estratégia são ajustáveis e podem ser otimizados para diferentes períodos de tempo e condições de mercado, aumentando a estabilidade da estratégia.

Análise de risco estratégico

  1. Dependendo da previsão do movimento futuro do indicador de McD, se a previsão não for correta, a negociação pode falhar.
  2. O controle de perdas individuais deve ser acompanhado de um stop loss. A configuração inadequada da amplitude de stop loss também pode afetar a eficácia da estratégia.
  3. O indicador McD pode perder uma oportunidade de uma rápida reversão de preços devido à sua atraso. Isso é uma preocupação para a performance estratégica em situações de alta volatilidade.
  4. Os custos de transação devem ser considerados.

Direção de otimização da estratégia

  1. Combinação com outros indicadores para fazer previsões, reduzindo a dependência de um único indicador de McD, aumentando a precisão das previsões. Por exemplo, examinar as mudanças no volume de negócios.
  2. Juntando algoritmos de aprendizagem de máquina, os modelos de treinamento preveem a tendência futura do indicador McD.
  3. Definição de parâmetros de otimização para encontrar a melhor combinação de parâmetros.
  4. Diferentes configurações de parâmetros são adequadas para diferentes ambientes de mercado, e os parâmetros de otimização automática do sistema de adaptação podem ser adicionados.

Resumir

Esta estratégia aproveita ao máximo a vantagem do indicador de McD para determinar a tendência e, ao mesmo tempo, adiciona uma análise preditiva do movimento futuro do indicador, para capturar os pontos de inflexão críticos com base na tendência. Em comparação com o simples acompanhamento de tendências, a aplicação desta estratégia é mais prospectiva e tem maior margem de lucro.

Código-fonte da estratégia
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 5m
basePeriod: 1m
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/
// © x11joe
strategy(title="MacD (Future Known or Unknown) Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//OPTIONAL:: Allow only entries in the long or short position
allowOnlyLong = input(title="Allow position ONLY in LONG",type=input.bool, defval=false)
allowOnlyShort = input(title="Allow position ONLY in SHORT",type=input.bool, defval=false)


strategy.risk.allow_entry_in(allowOnlyLong ? strategy.direction.long : allowOnlyShort ? strategy.direction.short : strategy.direction.all) // There will be no short entries, only exits from long.

// Create MacD inputs
fastLen = input(title="MacD Fast Length", type=input.integer, defval=12)
slowLen = input(title="MacD Slow Length", type=input.integer, defval=26)
sigLen  = input(title="MacD Signal Length", type=input.integer, defval=9)

// Get MACD values
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)
hist = macdLine - signalLine

useFuture = input(title="Use The Future?",type=input.bool,defval=true)

macDState(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_on)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

macDStateNonFuture(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_off)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"
// === INPUT BACKTEST RANGE END ===

//Get FUTURE or NON FUTURE data
macDState240=useFuture ? macDState("240") : macDStateNonFuture("240") //1 is green up, 2 if green down, 3 is red, 4 is red up

//Fill in the GAPS
if(macDState240==0)
    macDState240:=macDState240[1]

//Plot Positions
plot(close,color= macDState240==1 ? color.green : macDState240==2 ? color.purple : macDState240==3 ? color.red : color.yellow,linewidth=4,style=plot.style_histogram,transp=50)

if(useFuture)
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)
else
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))//If we are in a red macD trending downwards MacD or in a MacD getting out of Red going upward.
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)//If the state is going upwards from red but we are predicting back to red...
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)//If we are predicting the uptrend to end soon.