Discussão do artigo "Como desenvolver um sistema de negociação baseado no indicador Fractais"

 

Novo artigo Como desenvolver um sistema de negociação baseado no indicador Fractais foi publicado:

Aqui está um novo artigo da nossa série sobre como projetar um sistema de negociação com base nos indicadores técnicos mais populares. Nós aprenderemos um novo indicador que é o indicador Fractais e aprenderemos como desenvolver um sistema de negociação baseado nele para ser executado na plataforma MetaTrader 5.

1. Fractais de alta e baixa

    Com base nessa estratégia, nós precisamos criar um sistema de negociação que possa ser usado para retornar as máximas e mínimas do indicador Fractais como um comentário no gráfico, verificando continuamente os valores fracUpvalue e fracDownValue. Se o fracUp for maior que zero ou não tiver um valor vazio e o fracDown tiver um valor vazio, nós precisamos que o sistema de negociação retorne um sinal no gráfico como um comentário com o seguinte valor:

      • Fractais de alta em torno de: n

    No outro caso, se o fracDown for maior que zero ou não tiver valor vazio e o fracUp tiver um valor vazio, nós precisamos que o sistema de negociação retorne um sinal no gráfico como um comentário com o seguinte valor:

      • Fractais de baixa em torno de: n

    A seguir está o projeto desta estratégia:

    Esquema dos Fractais de alta e baixa

    Autor: Mohamed Abdelmaaboud

     


    Agradecimentos ao autor. Tudo está muito bem explicado nos artigos. Eu mesmo não excluo - que o código em sinais fractais e Ma levará para completá-lo com outra coisa - por exemplo, a velocidade de carrapatos para seu robô scalper de ações. E em ticks pode fazer tudo em tudo - e talvez em m1. Você também pode usar a média puramente em rebotes de fractais e arrastar no primeiro ts aqui também algo para terminar. Em geral, respeito o autor pelos artigos úteis sobre esses tópicos!
     

    Por favor, responda às perguntas.

    1. Por que você usa o valor do Fractal na segunda barra fechada? Ela ainda não está formada. Acho que você deveria usar o valor da terceira barra fechada:

       CopyBuffer(fracDef,UPPER_LINE,3,1,fracUpArray);
       CopyBuffer(fracDef,LOWER_LINE,3,1,fracDownArray);

    2. Por que você os chama de sistemas de negociação? Eles não fazem negociações. Apenas fazem comentários sobre o gráfico.

     
    Ivan Titov Fractal na segunda barra fechada? Ela ainda não está formada. Acho que você deveria usar o valor da terceira barra fechada:

    2. Por que você os chama de sistemas de negociação? Eles não fazem negociações. Apenas fazem comentários no gráfico.

    A vela atual é 0, a anterior é 1 e a terceira é 2, não 3.

    Os sistemas de negociação, conforme programados, baseiam-se em etapas sistemáticas e lógicas para ajudá-lo a negociar, mesmo que sejam comentários. Você pode adicionar o envio de ordens se as tiver testado e considerado úteis para você.

     
    Mohamed Abdelmaaboud #:

    A vela atual é 0, a anterior é 1 e a terceira é 2 e não 3.

    O terceiro candle fechado é 3. O candle atual (0) ainda não está fechado, e usá-lo pode gerar muitas entradas falsas, especialmente quando foi aberto recentemente.

     

    Olá, tomei a liberdade de implementar seu exemplo "Fractals_with_Alligator" nas funções fornecidas para essa finalidade (declaração/definição). Por favor, corrija-me se eu estivererrado😊

    //criação de matrizes
    double   fracUpArray[];
    double   fracDownArray[];
    MqlRates priceArray[];
    double   jawsArray[];
    double   teethArray[];
    double   lipsArray[];
    // init
    int      fracDef;
    int      Data;
    int      alligatorDef;
    //obter valores
    double   fracUpValue;
    double   fracDownValue;
    double   closingPrice;
    double   jawsValue;
    double   teethValue;
    double   lipsValue;
    //criação de variáveis bool para receber sinais de compra e venda ao mesmo tempo
    bool     isBuy;
    bool     isSell;
    
    int OnInit() {
    //criação de variáveis bool para receber sinais de compra e venda ao mesmo tempo
       isBuy    = false;
       isSell   = false;
    
       ArraySetAsSeries(fracUpArray, true);
       ArraySetAsSeries(fracDownArray, true);
       ArraySetAsSeries(jawsArray, true);
       ArraySetAsSeries(teethArray, true);
       ArraySetAsSeries(lipsArray, true);
    
       fracDef        =  iFractals(_Symbol, _Period);
       Data           =  CopyRates(_Symbol, _Period, 0, 3, priceArray);
       alligatorDef   =  iAlligator(_Symbol, _Period, 13, 8, 8, 5, 5, 3, MODE_SMMA,PRICE_MEDIAN);
    
    
       return(INIT_SUCCEEDED);
    }
    
    void OnTick() {
    
       CopyBuffer(fracDef, UPPER_LINE, 2, 1, fracUpArray);
       CopyBuffer(fracDef, LOWER_LINE, 2, 1, fracDownArray);
       CopyBuffer(alligatorDef, 0, 0, 3, jawsArray);
       CopyBuffer(alligatorDef, 1, 0, 3, teethArray);
       CopyBuffer(alligatorDef, 2, 0, 3, lipsArray);
    
    //obter valores
       fracUpValue    = NormalizeDouble(fracUpArray[0], 5);
       fracDownValue  = NormalizeDouble(fracDownArray[0], 5);
       closingPrice   = priceArray[0].close;
       jawsValue      = NormalizeDouble(jawsArray[0], 5);
       teethValue     = NormalizeDouble(teethArray[0], 5);
       lipsValue      = NormalizeDouble(lipsArray[0], 5);
    
    //condições da estratégia e comentários sobre o gráfico
    //em caso de compra
       if(lipsValue>teethValue && lipsValue > jawsValue && teethValue > jawsValue
          && closingPrice > teethValue && fracDownValue != EMPTY_VALUE) {
          Comment("Buy", "\n",
                  "jawsValue = ", jawsValue, "\n",
                  "teethValue = ", teethValue, "\n",
                  "lipsValue = ", lipsValue, "\n",
                  "Fractals Low around: ", fracDownValue);
          isBuy = true;
       } // fim do if
    //em caso de venda
       if(lipsValue < teethValue && lipsValue < jawsValue && teethValue < jawsValue
          && closingPrice < teethValue && fracUpValue != EMPTY_VALUE) {
          Comment("Sell", "\n",
                  "jawsValue = ", jawsValue, "\n",
                  "teethValue = ", teethValue, "\n",
                  "lipsValue = ", lipsValue, "\n",
                  "Fractals High around: ", fracUpValue);
          isSell = true;
       } // fim do if
    }
    
    void OnDeinit(const int reason) {
       EventKillTimer();
       ObjectsDeleteAll(0,0,-1);
    
       IndicatorRelease(fracDef);
       IndicatorRelease(Data);
       IndicatorRelease(alligatorDef);
       
       ArrayFree(fracUpArray);
       ArrayFree(fracDownArray);
       ArrayFree(jawsArray);
       ArrayFree(teethArray);
       ArrayFree(lipsArray);
    
       Comment("");
    }
     

    Olá, obrigado por esse artigo tão claro... Estou recebendo um erro no meu código fractal (2024.11.10 17:42:12.121 _24 Dev 3 EA Strat1 (EURUSD,H1) _24 Dev 3 EA Strat1.mq5:void OnDeinit(const int):OnDeinit:48 Error Code:INDICATOR_DATA_NOT_FOUND ).

    Ao executar seu código, recebo o mesmo erro.


    Você pode me ajudar? Tentei várias combinações diferentes.


    Agradeço o apoio.

    Jay

     
    Gostaria de saber se é realmente lucrativo aplicar esse seu sistema?
     
    litianjun #Gostaria de saber se é realmente lucrativo aplicar esse seu sistema?
    É importante confirmar novamente que você deve testar qualquer estratégia antes de usá-la em sua conta real, pois não há nada adequado para todas as pessoas.
    Por favor, leia o artigo com as instruções, baixe e faça seus próprios testes do sistema e decida, por si só, sobre usá-lo ou não. Esse tipo de garantia que você está solicitando não pode ser dada.
     
    litianjun #:
    Gostaria de saber se é realmente lucrativo aplicar esse seu sistema?
    Implementei fractais/aligantes (usando seus códigos) e minha experiência é que há muitos sinais falsos. O problema geral com os fractais é que estamos 2 velas à frente do sinal do fractal. Estou combinando-o com o RSI (70/30) e outros indicadores para ver se consigo encontrar entradas de boa qualidade.
     
    Sau-boon Lim #:
    Implementei fractais/aligantes (usando seus códigos) e minha experiência é que há muitos sinais falsos. O problema geral com os fractais é que estamos 2 velas à frente do sinal do fractal. Estou combinando-o com o RSI (70/30) e outros indicadores para ver se consigo encontrar entradas de boa qualidade.
    Fractais do Bill Williams é um bom meio de operar tanto rompimento quanto reversão (que não é a estratégia original do Bill). Entretanto, dizer que o metatrader implementa fielmente eu não concordo por conta que em caso de empate nenhuma vela a mais é colocada para analise. Na estrategia do Bill Williams ele comenta que se alguma antecessora ou sucessora das duas pedidas empatarem uma nova vela tem que ser analisada. Além disso, logo nas primeiras páginas do livro "Trading Chaos" tem numa sessão (acredito antes do índice até, é tipo umas cartas de leitores que ele esta se fazendo propaganda) que um dos leitores agradece a dica de um rsi2 pra uma maior precisão, coisa que nos capítulos ele não aborda.