Discusión sobre el artículo "Aprendiendo a diseñar un sistema de trading con Fractals"

 

Artículo publicado Aprendiendo a diseñar un sistema de trading con Fractals:

Bienvenidos a un nuevo artículo de nuestra serie destinada a la creación de sistemas comerciales basados en indicadores técnicos populares. Hoy analizaremos otra herramienta técnica, el indicador Fractals, y desarrollaremos sistemas comerciales basados en este para operar en el terminal MetaTrader 5.

1. Máximos y mínimos de los fractales

    Para esta estrategia, crearemos un sistema comercial que retornará los máximos y mínimos del indicador Fractals como un comentario en el gráfico. Para hacer esto, se monitorearán los valores de fracUp y fracDown. Si el valor de fracUp es mayor que cero, o si su valor no está vacío y fracDown está vacío, el sistema comercial retornará la señal como un comentario en el gráfico con los siguientes valores:

      • Máximo de Fractals: n

    De lo contrario, si el valor de fracDown es mayor que cero o si su valor no está vacío y fracUp está vacío, el sistema comercial retornará una señal bajista como un comentario en el gráfico con los siguientes valores:

      • Mínimo de Fractals: n

    El esquema de esta estrategia se muestra en la siguiente figura:

    Esquema de la estrategia máximos y mínimos de Fractals

    Autor: Mohamed Abdelmaaboud

     


    Gracias al autor. Todo está muy bien explicado en los artículos. Yo mismo no excluyo - que el código de señales fractales y Ma se llevará a completar con algo más - por ejemplo, la velocidad de las garrapatas de su robot scalper acciones. Y en garrapatas puede hacer todo en absoluto - y tal vez en m1. También puede a la media puramente en los rebotes de los fractales y de arrastre en la primera ts aquí también algo para terminar. ¡En general, respeto el autor de artículos útiles sobre estos temas!
     

    Por favor, responda a las preguntas.

    1. ¿Por qué usas el valor del Fractal en la 2ª barra cerrada? Todavía no se ha formado. Creo que deberías usar el valor de la 3ª barra cerrada:

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

    2. ¿Por qué los llamas sistemas de trading? No hacen operaciones. Sólo comentarios sobre el gráfico.

     
    Ivan Titov del Fractal en la 2ª barra cerrada? Todavía no se ha formado. Creo que deberías usar el valor de la 3ª barra cerrada:

    2. ¿Por qué los llamas sistemas de trading? No hacen operaciones. Sólo comentarios sobre el gráfico.

    La vela actual es 0, la anterior es 1, y la tercera es 2 no 3.

    Los sistemas de trading tal y como están programados se basan en pasos sistemáticos y lógicos para ayudarte a operar aunque sean comentarios, Puedes añadir órdenes de envío si los has probado y te han resultado útiles.

     
    Mohamed Abdelmaaboud #:

    La vela actual es 0, la anterior es 1, y la tercera es 2 no 3.

    La tercera vela cerrada es 3. La vela actual (0) no está cerrada todavía, y su uso podría dar muchas entradas falsas, especialmente cuando se ha abierto recientemente.

     

    Hola, me he tomado la libertad de implementar tu ejemplo "Fractales_con_Alligator" en las funciones previstas para ello (declaración/definición). Por favor, corrígeme si meequivoco😊.

    //crear matrices
    double   fracUpArray[];
    double   fracDownArray[];
    MqlRates priceArray[];
    double   jawsArray[];
    double   teethArray[];
    double   lipsArray[];
    // init
    int      fracDef;
    int      Data;
    int      alligatorDef;
    //obtener valores
    double   fracUpValue;
    double   fracDownValue;
    double   closingPrice;
    double   jawsValue;
    double   teethValue;
    double   lipsValue;
    //crear variables bool para enviar señales de compra y venta al mismo tiempo
    bool     isBuy;
    bool     isSell;
    
    int OnInit() {
    //crear variables bool para enviar señales de compra y venta al mismo tiempo
       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);
    
    //obtener 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);
    
    //condiciones de la estrategia y comentario sobre el gráfico
    //en 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;
       } // fin si
    //en caso de venta
       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;
       } // fin si
    }
    
    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("");
    }
     

    Hola , gracias por un artículo tan claro ... me sale un error en mi 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 Código de error:INDICATOR_DATA_NOT_FOUND ) .

    Cuando ejecuto tu código obtengo el mismo error.


    Por favor, ¿puede ayudarme? He probado muchas combinaciones diferentes.


    Gracias por su ayuda.

    Jay

     
    Me gustaría saber si es realmente rentable aplicar este sistema vuestro?
     
    litianjun # Me gustaría saber si es realmente rentable aplicar este sistema suyo?
    Es importante confirmar de nuevo que debe probar cualquier estrategia antes de utilizarla en su cuenta real, ya que no hay nada adecuado para todos.
    Por favor, lee el artículo con las instrucciones, descárgalo y haz tus propias pruebas del sistema y decide por ti mismo si usarlo o no. El tipo de garantía que usted está pidiendo no se puede dar.
     
    litianjun #:
    Me gustaría saber si es realmente rentable aplicar este sistema suyo?
    He aplicado fractales/aligator (usando sus códigos) y mi experiencia es que hay muchas señales falsas. El problema general con los fractales es que estamos 2 velas por delante de la señal del fractal. Lo estoy emparejando con RSI (70/30) y otros indicadores para ver si puedo encontrar entradas de buena calidad.
     
    Sau-boon Lim #:
    He implementado fractales / aligátores (utilizando sus códigos) y mi experiencia es que hay muchas señales falsas. El problema general con los fractales es que estamos 2 velas por delante de la señal fractal. Lo estoy combinando con el RSI (70/30) y otros indicadores para ver si puedo encontrar entradas de buena calidad.
    Los Fractales de Bill Williams son una buena forma de operar tanto rupturas como retrocesos (que no es la estrategia original de Bill). Sin embargo, decir que metatrader la implementa fielmente no estoy de acuerdo porque en caso de empate no se colocan velas adicionales para su análisis. En la estrategia de Bill Williams comenta que si alguna predecesora o sucesora de las dos órdenes empata, se debe analizar una nueva vela. Además, en las primeras páginas del libro "Trading Chaos" hay un apartado (creo que está antes del índice, es como unas cartas de lectores que está anunciando) donde uno de los lectores le agradece el consejo del rsi2 para mayor precisión, algo que no menciona en los capítulos.