Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 154

 
nidves em primeiro lugar, fazer uma mensagem correta com o código, é muito difícil entendê-lo, e em segundo lugar, eu gostaria de ver a estrutura do arquivo de notícias, caso contrário não está claro quais dados são usados onde.
 

A primeira coisa que chama sua atenção é que você está usando o EA como um roteiro comum. Leia o manual para ver como eles são diferentes. É o roteiro, não o Expert Advisor, que é adequado para sua tarefa!

Em segundo lugar,por que você usa este projeto?

  for (count=1; count<=countstr; count++)
  {
   //----
   //----  
  if (count>=countstr) break;
  }

E a raiz do seu problema.

void CreatFile()
   {
    string Filepatch="Analyse news\\"+"Symbol"+"_"+IntegerToString(periodMT)+".csv";
    Comment("Creat a new file");
    int file=FileOpen(Filepatch, FILE_WRITE|FILE_CSV);
    FileWrite(file, "Symbol","Period","News","Data Time","Open","High","Low","Close");
    
    int  bar_index=iBarShift(symbolMT,periodMT,DateNews[count-1]); 
//Чему равен в этот момент count? 
//Для чего нужен был массив событий если в обработку попадает только одно событие?
//Функция iBarShift (так как вы используете) возвращает либо номер бара по времени либо ближайший номер бара если в истории есть пропуски 
//Внимательно почитайте описание 
    int  countBar=bar_index;
    
    for(count=1; count<=countstr; count++)
    {
    countBar--;
    
    FileWrite(file,symbolMT,periodMT,NameNews[count-1],DateNews[count-1],
    
    DoubleToStr(iOpen(symbolMT,periodMT,countBar))

    );
    }
    FileClose(file);
    ExpertRemove();
   }

Bem, a última coisa que você fez em um programa simples descreve o que você quer deste programa e vamos tentar escrever o roteiro passo a passo de forma agradável!

 
Vitaly Gorbunov:

A primeira coisa que chama sua atenção é que você está usando o EA como um roteiro comum. Leia o manual para ver como eles são diferentes. É o roteiro, não o Expert Advisor, que é adequado para sua tarefa!

Em segundo lugar,por que você usa este projeto?

E a raiz do seu problema.

E finalmente, você está fazendo muito barulho em um programa simples, descreva o que você quer deste programa e vamos tentar escrever o roteiro passo a passo!

Vitaly, obrigado por sua resposta!

1)Sobre o roteiro, eu o entendo, vou tentar.

2)Bem, tudo é simples, eu interrompo o loop for loop.

3) Quero criar um Expert Advisor ou um script que fará o download de citações para certos instrumentos + prazos, notícias específicas por data e hora específica.

O resultado final da redação do arquivo deve ser o seguinte

SímboloPeríodoNotíciasDataTimeAbertoAltoBaixoFechar
GBPUSD5Índice de preços ao consumidor ( CPI) dereferência do Canadá (m/m)26.01.2018 16:30:000.000000000.000000000.000000000.00000000
GBPUSD5Índice de preços ao consumidor (CPI) de referência do Canadá (m/m)21.12.2017 15:30:000.000000000.000000000.000000000.00000000
GBPUSD5Índice de preços ao consumidor (CPI) de referência do Canadá (m/m)17.11.2017 15:30:000.000000000.000000000.000000000.00000000
GBPUSD5Índice de preços ao consumidor (CPI) de referência do Canadá (m/m)20.10.2017 15:30:000.000000000.000000000.000000000.00000000

E assim por diante, diferentes instrumentos + prazos+notíciase datas.

Há mais uma nuança. Se os dados forem descarregados no período de 60 minutos, então as citações devem corresponder aos períodos de 16:00 e 15:00 horas.

Se o horário das notícias for 14:45, então as citações devem corresponder ao horário:

1 minuto - 14:45

5 minutos - 14:45

15 minutos - 14:45

30 minutos - 14:30

60 minutos - 14:00

Espero ter sido claro. Obrigado

 

Olhe novamente para este loop! A contagem de variáveis só é alterada pelo próprio para declaração, portanto, se for apenas supérflua neste loop.

Vamos agora definir como vamos processar os dados. Parece-me que seria mais lógico ler do arquivo de notícias os parâmetros das notícias, processar os dados e escrevê-los no arquivo de citações. Coletar uma série de notícias que depois têm que passar por uma série novamente para um registro não parece racional, além disso, muitas vezes, no processamento de conjuntos pode cometer muitos erros associados a índices.

 
Vitaly Gorbunov:

Olhe novamente para este loop! A contagem de variáveis só é alterada pelo próprio para declaração, portanto, se for apenas supérflua neste loop.

Vamos agora definir como vamos processar os dados. Parece-me que seria mais lógico ler do arquivo de notícias os parâmetros das notícias, processar os dados e escrevê-los no arquivo de citações. Coletar uma série de notícias, que depois, mais uma vez, passar por uma série para um registro não parece racional, também muito freqüentemente no processamento de matrizes pode cometer muitos erros associados a índices.

Quer dizer, criar arquivos com citações com antecedência e adicionar parâmetros de notícias ao arquivo?

 
nidves:

Você quer dizer criar os arquivos de cotação com antecedência e adicionar os parâmetros de notícias ao arquivo?

Você não me entende, nós lemos do arquivo de notícias, o processamos e imediatamente o escrevemos no arquivo de citações e assim por diante até que todo o arquivo de notícias seja processado!
 
Vitaly Gorbunov:
Você não me entende, nós lemos do arquivo de notícias, o processamos e imediatamente o escrevemos no arquivo de citações e assim por diante até que todo o arquivo de notícias seja processado!
É isso que estou tentando fazer, apenas através de matrizes. Como você escreveria este código?
 
nidves:
É isso que estou tentando fazer, apenas através de matrizes. Como você escreveria tal código?
Por que usar uma matriz onde ela não é necessária? Quanto mais simples for o código, menos erros você pode cometer!
 
Vitaly Gorbunov:
Por que eu deveria usar a matriz onde ela não é necessária? Quanto mais simples for o código, menos erros você pode cometer!

Estou aprendendo a trabalhar com arrays através deste código. Afinal de contas, a tarefa não é complicada em princípio.

OpenSymbol  [count-1]=iOpen(symbolMT,periodMT,numberBar);

As citações "abertas" já estão armazenadas na matriz acima. Portanto, preciso apenas extrair a citação da data de que preciso da matriz.

 
nidves:

Estou aprendendo a trabalhar com arrays através deste código. Afinal de contas, a tarefa não é complicada em princípio.

As citações "abertas" já estão armazenadas na matriz acima. Portanto, só preciso extrair a citação da data de que preciso desta matriz.

Vou agora para o verão e estarei lá na segunda-feira. Se você estiver interessado, me adicione como amigo e conversaremos sem lixo no fórum.
Razão: