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

 
pako:

El número de barra del fractal inferior es conocido

A partir de ella, busca en el bucle el primer máximo correspondiente al mínimo del fractal conocido

Esto se puede hacer, pero yo haría lo contrario. Es decir, primero encontrar el máximo de la vela anterior (formada), y luego el último fractal hacia abajo. Si son iguales, pon un punto.
 
Alexey Kozitsyn:
Podríamos hacerlo, pero yo haría lo contrario. Es decir, primero encontramos el máximo de la vela anterior (formada), y luego el último fractal hacia abajo. Si coinciden, ponemos un punto.

No lo entiendo. Pensé que eso era lo que hacíamos en la condición.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
¿Cómo se debe escribir?
 
Vladimir Karputov:
Introduzca el LOGIN y el PASSWORD de MQL5.community.
¿Dónde hay exactamente una línea
Archivos adjuntos:
 
Ласло Подобедов:
¿Dónde hay exactamente una línea?
Lo siento, me confundí con el terminal. Por supuesto, sólo tienes que introducir el LOGIN de MQL5.community.
 
Vladimir Karputov:
Lo siento, me confundí con el terminal. Por supuesto, sólo tienes que introducir el LOGIN de MQL5.community.
Gracias, pero no da señales de vida... ¿tal vez hice algo mal?
Archivos adjuntos:
 
mila.com:

No lo entiendo. Pensé que eso era lo que hacíamos en la condición.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
¿Cómo se escribe?

Fácil... hacer esto...

#property copyright "Tapochun"
#property link      "https://www.mql5.com/ru/users/tapochun"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
//---
#property indicator_type1 DRAW_ARROW
#property indicator_width1 5
#property indicator_color1 clrAqua
#property indicator_type2 DRAW_ARROW
#property indicator_width2 5
#property indicator_color2 clrRed
//+------------------------------------------------------------------+
//| Глобальные переменные                                                                                                                       |
//+------------------------------------------------------------------+
double bufSell[];
double bufBuy[];
//+------------------------------------------------------------------+
//| Входные параметры                                                                                                                           |
//+------------------------------------------------------------------+
input int inpNum=50;    // Количество свечей для поиска последнего фрактала
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,bufBuy);
   SetIndexBuffer(1,bufSell);
   SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexEmptyValue(1,EMPTY_VALUE);
   SetIndexArrow(0,225);
   SetIndexArrow(1,226);
   IndicatorDigits(_Digits);
//---
   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[])
  {
   if(rates_total<=0 || prev_calculated<0)
      return( 0 );
//---
   if(prev_calculated>0) // Если не первый расчет индикатора
     {

     }
   else                         // Если первый расчет индикатора
     {
      ArrayInitialize(bufBuy,EMPTY_VALUE);
      ArrayInitialize(bufSell,EMPTY_VALUE);
      //---
      for(int i=1; i<rates_total-7; i++)
        {
         CheckBuyArrow(low[i],i,i+4,rates_total-3,time);
         CheckSellArrow(high[i],i,i+4,rates_total-3,time);
        }
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckBuyArrow(const double price,
                   const int index,
                   const int first,
                   int last,
                   const datetime &time[]
                   )
  {
   last=(first+inpNum-1<last) ? first+inpNum-1 : last;
   double iPrice;
//---
   for(int i=first; i<=last; i++)
     {
      iPrice=iFractals(_Symbol,_Period,MODE_UPPER,i);
      if(iPrice!=EMPTY_VALUE)
        {
         if(price==iPrice)
           {
            bufBuy[index]=iPrice-10*_Point;
            Print(__FUNCTION__,": "+TimeToString(time[index])+" - "+TimeToString(time[i]));
           }
         return;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckSellArrow(const double price,
                    const int index,
                    const int first,
                    int last,
                    const datetime &time[]
                    )
  {
   last=(first+inpNum-1<last) ? first+inpNum-1 : last;
   double iPrice;
//---
   for(int i=first; i<=last; i++)
     {
      iPrice=iFractals(_Symbol,_Period,MODE_LOWER,i);
      if(iPrice!=EMPTY_VALUE)
        {
         if(price==iPrice)
           {
            bufSell[index]=iPrice+10*_Point;
            Print(__FUNCTION__,": "+TimeToString(time[index])+" - "+TimeToString(time[i]));
           }
         return;
        }
     }
  }
//+------------------------------------------------------------------+
Sólo cuenta con historias.
 
Ласло Подобедов:
Gracias, pero no da señales de vida... ¿tal vez hice algo mal?
Podría haber varias posibilidades:
  1. Tiene un sistema operativo de 32 bits. En ese caso no se le permite ir.
  2. El tiempo es corto: se tarda dos minutos en unirse a la nube.
  3. Posibles puertos cerrados por el cortafuegos - hay que mirar los registros del agente.
 
Vladimir Karputov:
Hay varias opciones posibles:
  1. Tiene un sistema operativo de 32 bits. En ese caso no se le permite ir.
  2. No ha pasado mucho tiempo: se tarda dos minutos en unirse a la nube.
  3. Posiblemente los puertos estén bloqueados por el firewall - hay que mirar los registros del agente.
¡bueno el sistema es x64 porque tengo 8gb de RAM y el sistema operativo es win 10, ok gracias desconecté el firewall ahora lo volveré a intentar !
 
Ласло Подобедов:
¡Bueno el sistema es x64, porque tengo 8GB de RAM, y el sistema win 10, ok gracias desconectado el firewall ahora intente de nuevo !
¿Sabes cómo averiguar el puerto TCP Acabo de descargar el metatester por separado ...
 
mila.com:

No lo entiendo. Pensé que eso era lo que hacíamos en la condición.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
¿Cómo se escribe?
Mira en la caja.