Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 254

 
Alexey Kozitsyn:
Através de um arquivo, por exemplo...

se não for muito incômodo, um pouco mais de detalhe.

 
виталик:

Se você não se importa, um pouco mais de detalhe.

Para puxar as citações, use as funções de cópia:

https://www.mql5.com/ru/docs/series

Então https://www.mql5.com/ru/docs/files é um link para operações de arquivo.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Boa noite, estou fazendo um padrão de "trilhos", mas não consigo colocá-lo para trabalhar.... você consegue ver o que está errado? Obrigado de antemão.
Arquivos anexados:
jzogyr2.mq4  6 kb
 
sviter-pro:
Boa noite, estou fazendo um padrão de "trilhos", mas não consigo colocá-lo para trabalhar.... você consegue ver o que está errado? Obrigado de antemão.

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

E estas condições nunca serão cumpridas

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

Boa tarde! A tarefa é a seguinte - preciso determinar quantos bares haverá antes das próximas 01.00 horas. Já o fiz até agora com um loop, mas talvez seja mais correto fazê-lo de alguma forma com o iBarShift? Talvez seja mais correto fazer isso de maneira diferente?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

Boa tarde! A tarefa é esta - preciso determinar quantos bares haverá antes das próximas 01.00 horas. Já o fiz até agora com um loop, mas talvez seja mais correto fazê-lo de alguma forma com o iBarShift? Talvez seja mais corretamente feito de uma maneira completamente diferente?

Para uma transição mais indolor para o mql5 no futuro, seria melhor usar funções que são usadas em ambos os idiomas. Para pesquisar o número de barras é melhor usar

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

Na verdade, iBarShift() fará o trabalho melhor que o ciclo.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Para uma transição mais indolor para o mql5 no futuro, é melhor usar as funções usadas em ambos os idiomas. Para pesquisar o número de barras é melhor usar

O iBarShift() pode lidar com esta tarefa melhor que o ciclo.

Sim, mas o problema está em encontrar a 01.00 horas mais próxima. Como você vai encontrá-lo?
int iBarShift(
símbolo de corda,// símbolo
intprazo, // período
data/horatempo, // tempo ?????????
bool exact=false // mode
);
 
Nauris Zukas:
Sim, mas o problema é encontrar a 01.00 horas mais próxima. Como você determina isso?
int iBarShift(
símbolo de corda,// símbolo
intprazo, // período
data/horatempo, // tempo ?????????
bool exact=false // mode
);

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta para iniciantes sobre MQL4, ajuda e discussão sobre algoritmos e códigos

Alexey Viktorov, 2017.07.27 13:54

Se você quiser tornar a migração futura para o mql5 o mais indolor possível, use as funções disponíveis em ambos os idiomas. Para pesquisar o número de barras é melhor usar

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

Em princípio, iBarShift() pode lidar melhor com esta tarefa do que um loop.

Retornará o número de barras entre o tempo especificado e o tempo atual, se o tempo atual da barra for especificado como tempo_de_parada.

O único problema é que eu nunca encho minha célula de memória com coisas desnecessárias como o valor obtido, dado uma barra com o tempo especificado, ou menos por 1. Eu apenas verifico todas as vezes.

 
Alexey Viktorov:

Retorna o número de barras entre o tempo especificado e o tempo atual, se o tempo atual da barra for especificado como tempo_de_parada.

O único problema é que eu nunca entupo minha célula de memória com coisas desnecessárias como o valor a que será igual, incluindo a barra com o tempo especificado ou menos por 1. Eu apenas verifico todas as vezes.

Todos eu entendo isso, mas tento entrar na questão. Como você encontra o tempo especificado - no meu caso você precisa encontrar a 01.00 horas mais próxima. Como você anota isso?
data hora_de_início, // a partir de que data ???

 
Nauris Zukas:

Todos eu entendo isso, mas tento entrar na questão. Como você encontra o tempo especificado - no meu caso você tem que encontrar a 01.00 horas mais próxima. Como você anota isso?
data hora_de_início, // a partir de que data ???

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
No momento atual, 17:08 mostra 33. Isto é, o número do bar com horário 01:00 será 32.
Razão: