Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 467

 
Sinceramente, no entiendo cómo utilizar la biblioteca normalmente en el terminal sin capacidad de búsqueda y ordenación... ¡¿Sólo desplazarse estúpidamente a través de cientos de líneas?!
 
Alena000:
Para ser sincero, no entiendo cómo utilizar la biblioteca en el terminal sin buscar y ordenar en absoluto... ¡¿Sólo desplazarse estúpidamente a través de cientos de líneas?!

La búsqueda está integrada en el MetaEditor (esquina superior derecha). Puede buscar ocurrencias por:

  • abrir el documento
  • a través de todos los archivos
  • MQL4/MQL5.community
La búsqueda está integrada en el propio terminal (esquina superior derecha). Desde el terminal, puede buscar en toda la comunidad MQL5.community (Artículos, Productos, Biblioteca, Señales, Foro, Blogs, Documentación).

 
¿alguien tiene alguna idea sobre la cuestión? ))
 
Maxim Dobrovolskii:
¿alguien tiene alguna idea sobre la cuestión? ))

Podría ayudar.

Archivos adjuntos:
Fractal.mq4  4 kb
 
Victor Nikolaev:

Podría ayudar.

Me gustaría entender y averiguar por qué mi variante no funciona. Creo que se trata de la combinación EA+indicador, pero lo que falla exactamente no está claro.
 
Maxim Dobrovolskii:
Me gustaría entender y averiguar por qué mi variante no funciona. Me parece que es por la combinación Asesor Experto+indicador, pero no sé a qué se debe exactamente.
Tal vez, el asunto es que en OnTick() se lee sólo el buffer cero, pero en OnDeinit() se leen tanto el cero como el primero?
 
Maxim Dobrovolskii:
Gracias, pero quiero entender y averiguar por qué mi versión no funciona. Creo que es por la combinación Asesor Experto+indicador.

¿Quieres que te demuestre que no hay mucho problema?

Sólo necesito el código del indicador. No me gusta copiarlo.

Tal vez cambie algo en su indicador (y hasta sé qué).

 
Alexey Viktorov:
¿Quizás el problema es que en OnTick() se lee sólo el buffer cero y en OnDeinit() tanto el buffer cero como el primero?
El Deinit es para mostrar que hay un valor en uno de los buffers.
 
Victor Nikolaev:

¿Quieres que te demuestre que no hay mucho problema?

Sólo necesito el código del indicador. No me gusta copiarlo.

Tal vez cambie algo en su indicador (y hasta sé qué).

//+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_label1  "Up"
#property  indicator_label2  "Down"
#property  indicator_type1   DRAW_ARROW
#property  indicator_type2   DRAW_ARROW
#property  indicator_style1  STYLE_SOLID
#property  indicator_style2  STYLE_SOLID
#property  indicator_width1  1
#property  indicator_width2  1
#property  indicator_color1 Red
#property  indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,ExtUpFractalsBuffer);
    SetIndexBuffer(1,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,217);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,218);
//----
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Modify_Fractal Up");
    SetIndexLabel(1,"Modify_Fractal Down");
//---- initialization done  
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int    i, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if(nCountedBars<=8) i=Bars-nCountedBars-4;
   if(nCountedBars>8)
     {
      nCountedBars--;
      i=Bars-nCountedBars-4;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
      //----Fractals up bFound=false;
      dCurrent=High[i];
      if(dCurrent>High[i+1] && dCurrent>High[i+2] && dCurrent>High[i+3] &&
         dCurrent>High[i-1] && dCurrent>High[i-2] && dCurrent>High[i-3] && 
         dCurrent>High[i-4] )
        {
         ExtUpFractalsBuffer[i]=NormalizeDouble(dCurrent + 1* Point,Digits);
        }
                           
      //----Fractals down
      dCurrent=Low[i];
      if(dCurrent<Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i+3] && 
         dCurrent<Low[i-1] && dCurrent<Low[i-2] && dCurrent<Low[i-3] && 
         dCurrent<Low[i-4])
        {
         ExtDownFractalsBuffer[i]=NormalizeDouble(dCurrent - 1* Point,Digits);
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


El código del indicador.
 
Maxim Dobrovolskii:
Deinit es para mostrar que hay un valor en un buffer.

Hay valor tanto en el búfer cero como en el primero. En M15 tenemos fractales en 5 y 21 barras ahora. Este guión

/********************Script program start function*******************/
void OnStart()
{
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 1, 5));
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 0, 21));
}/*******************************************************************/

encuentra e imprime todo correctamente. En consecuencia, el Asesor Experto encontrará que iCustom() funciona por igual en el script y en el Asesor Experto.

Razón de la queja: