Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 654

 
pako:

O número de barras do fractal inferior é conhecido

A partir dele, procurar no laço o primeiro alto correspondente ao baixo do fractal conhecido

Isto pode ser feito, mas eu faria o inverso. Isto é, primeiro encontra o alto da vela anterior (formada), e depois o último fractal para baixo. Se forem os mesmos, ponha um ponto.
 
Alexey Kozitsyn:
Poderíamos fazer isso, mas eu faria o contrário. Ou seja, primeiro encontramos o alto da vela anterior (formada), e depois o último fractal para baixo. Se coincidirem, colocamos um ponto.

Não compreendo. Pensei que era isso que estávamos a fazer no estado em que nos encontrávamos.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
Como se deve escrevê-lo?
 
Vladimir Karputov:
Introduza LOGIN e PASSWORD da MQL5.community.
Onde há exactamente uma linha
Arquivos anexados:
 
Ласло Подобедов:
Onde existe exactamente uma linha?
Desculpe, confundiu-se com o terminal. Claro que só precisa de entrar no LOGIN da MQL5.community.
 
Vladimir Karputov:
Desculpe, confundiu-se com o terminal. Claro que só precisa de entrar no LOGIN da MQL5.community.
Obrigado, mas não está a mostrar sinais de vida...talvez eu tenha feito algo de errado?
Arquivos anexados:
 
mila.com:

Não compreendo. Pensei que era isso que estávamos a fazer no estado em que nos encontrávamos.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
Como é que se escreve?

Fácil... fazer isto...

#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ó contando com histórias.
 
Ласло Подобедов:
Obrigado, mas não está a mostrar sinais de vida...talvez eu tenha feito algo de errado?
Pode haver várias possibilidades:
  1. Tem um sistema operativo de 32 bits. Nesse caso, não está autorizado a ir.
  2. O tempo é curto - são necessários dois minutos para se juntar à nuvem.
  3. Possíveis portas fechadas por firewall - necessidade de olhar para os registos dos agentes.
 
Vladimir Karputov:
Várias opções são possíveis:
  1. Tem um sistema operativo de 32 bits. Nesse caso, não está autorizado a ir.
  2. O tempo é curto - são necessários dois minutos para se juntar à nuvem.
  3. Possivelmente, as portas estão bloqueadas por firewall - é necessário consultar os registos dos agentes.
bem o sistema é x64 porque tenho 8gb de RAM e o sistema operativo ganhou 10, ok obrigado eu desabilitei a firewall agora vou tentar novamente!
 
Ласло Подобедов:
Bem, o sistema é x64, porque tenho 8GB de RAM, e o sistema ganha 10, ok obrigado desligou a firewall agora tente novamente!
Sabe como descobrir a porta TCP que acabei de descarregar o metatester separadamente ...
 
mila.com:

Não compreendo. Pensei que era isso que estávamos a fazer no estado em que nos encontrávamos.

if( High[i+1]==Low[isFractalDn()])//максимум первой свечи равен первому фракталу Dn
Como é que se escreve?
Veja na caixa.