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

 

boa tarde a todos, preciso de uma dica sobre como traduzir o código de MT4 para MT5...


função no MT4 - devolve Verdadeiro ou Falso usando MA.


input int                 MinDist          = 30;            // Мин. пройденное расстояние( отклонение от средней линии в  тиках)
input int                 OpenDev          = 16;         // Отклонение для входа ( отклонение от средней линии в  тиках)
//*********************************************************************************************
bool SignalBuy()  
  {
   double MA0 = iMA(Symbol(), 0, PeriodMA, ShiftMA, MethodMA, PriceMA, 0);
   if(Bid <= MA0+OpenDev*Point)
     {
      if(High[0]-MA0 >= MinDist*Point)
         return(true);
      for(int i=1; i<=Bars-1; i++)
        {
         double MA = iMA(Symbol(), 0, PeriodMA, ShiftMA, MethodMA, PriceMA, i);
         if(Low[i] <= MA+OpenDev*Point)
            return(false);
         if(High[i]-MA >= MinDist*Point)
            return(true);
        }
     }
   return(false);
  }
//*********************************************************************************************

necessidade de o transferir para o MT5

O problema está nas séries temporais Baixo[i] e Alto[i] , não percebo como convertê-los.

 
Milhail Novgorodcev:

boa tarde a todos, preciso de uma dica sobre como traduzir o código de MT4 para MT5...


função no MT4 - devolve Verdadeiro ou Falso usando MA.


necessidade de o transferir para o MT5

O problema está nas séries temporais Baixo[i] e Alto[i] , não entendo como convertê-los.

Tem de criar uma só vez o manípulo indicador. Isto é feito no OnInit. Exemplo de criação:iMA

2. Primeiro ponto de fixação 1.

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
//|                                                     Demo_iMA.mq5 | //|                        Copyright 2011, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Перечисление способов создания хэндла                            |  Creation             type=Call_iMA;                ...
 
Vladimir Karputov:

1. o manípulo indicador DEVE ser criado uma vez. Isto é feito no OnInit. Exemplo de criação:iMA

2. Primeiro item correcto 1.

Aqui está o que se obtém:

int MA0;                                  // variable for storing the handle of the iMA indicator

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  
MA0 = iMA(o_symbol.Name(), Period(), PeriodMA, ShiftMA, MethodMA, PriceMA);
  
  //--- if the handle is not created
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early
      return(INIT_FAILED);
     }
//---
 
Milhail Novgorodcev:

é o que eu tenho:

Agora diga-me, porque precisa de um ciclo tão grande - através de todas as barras?

      for(int i=1; i<=Bars-1; i++)
        {

É muito irracional.


Descreva a lógica nas suas próprias palavras.

 
Vladimir Karputov:

Agora diga-me, porque precisa de um ciclo tão grande - através de todas as barras?

É muito irracional.


Descreva a lógica nas suas próprias palavras.

A condição - o preço afasta-se da linha média noMinDist(30 pips). Se acontecer, então quando volta à linha média e atingeOpenDev( 10 pips) - há um sinal para abrir uma ordem de compra. (É sempre Comprar no topo da linha média)

 
Milhail Novgorodcev:

A condição é que o preço se afaste da linha média naMinDist (30 pips), se acontecer, então quando o preço voltar à linha média e atingirOpenDev (10 pips) - há um sinal para abrir uma ordem de compra. (É sempre Comprar no topo da linha média)

Quando devemos verificar 'MinDist(30 pips)' e 'OpenDev(10 pips)' - a cada tique ou apenas no momento da abertura de um novo bar?

 

Qual é a razão para abrir uma posição imediatamente após o início da EA?

As condições para a abertura de uma posição não estão preenchidas, mas a posição é aberta

 if(
      (MovingAverage1[0]<MovingAverage2[0]) &&
      (MovingAverage1[1]>MovingAverage2[1])
   )
     {
      if(PositionsTotal()==0)
         trade.Sell(0.1);
     }

   if(
      (MovingAverage1[0]>MovingAverage2[0]) &&
      (MovingAverage1[1]<MovingAverage2[1])
   )
     {
      if(PositionsTotal()==1)
         trade.PositionClose(_Symbol);
        }

 
Pineapple88:

Qual é a razão para abrir uma posição imediatamente após o início da EA?

As condições para a abertura de uma posição não estão preenchidas, mas a posição é aberta

Onde e como são obtidos os valores das médias? Conseguiu-os de todo? Se os valores são normalmente obtidos, notou a indexação na matriz de médias?

 
Alexey Viktorov:

Onde e como são obtidos os valores médios? São de todo obtidos? Se estes valores forem obtidos normalmente, notou a indexação nas matrizes de médias?

Aqui está o código

 {

   double MovingAverage1[], MovingAverage2[]; //задаем два массиса для МА

   int MovingAverageIndic1 = iMA(_Symbol,0,20,0,MODE_EMA,PRICE_CLOSE);
   int MovingAverageIndic2 = iMA(_Symbol,0,200,0,MODE_EMA,PRICE_CLOSE);

   ArraySetAsSeries(MovingAverage1,true);
   ArraySetAsSeries(MovingAverage2,true);

   CopyBuffer(MovingAverageIndic1,0,0,3,MovingAverage1);
   CopyBuffer(MovingAverageIndic2,0,0,3,MovingAverage2);

   if(
      (MovingAverage1[0]<MovingAverage2[0]) &&
      (MovingAverage1[1]>MovingAverage2[1])
   )
     {
      if(PositionsTotal()==0)
         trade.Sell(0.1);
     }

   if(
      (MovingAverage1[0]>MovingAverage2[0]) &&
      (MovingAverage1[1]<MovingAverage2[1])
   )
     {
      if(PositionsTotal()==1)
         trade.PositionClose(_Symbol);
     }

  }
 
Pineapple88:

Aqui está o código

O manípulo do indicador DEVE ser criado uma vez. Isto é feito no OnInit. Exemplo de criação:iMA

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
//|                                                     Demo_iMA.mq5 | //|                        Copyright 2011, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Перечисление способов создания хэндла                            |  Creation             type=Call_iMA;                ...
Razão: