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

 
tvv:

Eu não entendo. Esta opção indica a localização do arquivo -MetaQuotesTerminalCommon. Sem esta opção não poderei agarrar o arquivo que foi gerado no testador. Sem esta opção o arquivo será pesquisado em MQL4\Files - e não poderei colocar o arquivo do testador lá.

Foi a ausência desta bandeira que eu apontei.

 
Alexey Viktorov:

Foi a ausência desta bandeira que eu apontei.

Obrigado por sua ajuda - é apenas uma gralha - eu conheço esta bandeira. O problema não está resolvido - o arquivo não quer abrir em modo de leitura compartilhada - mesmo sem usar o testador. Enquanto este arquivo estiver aberto pelo indicador - o roteiro não pode abri-lo. O bloco de notas, por outro lado, o abre sem nenhum problema.

 
tvv:

Obrigado pela ajuda - é apenas uma gralha - eu conheço essa bandeira. O problema não está resolvido - o arquivo não quer abrir em modo de leitura compartilhada - mesmo sem usar o testador. Desde que este arquivo seja aberto pelo indicador - o roteiro não pode abri-lo. O bloco de notas, por outro lado, o abre sem nenhum problema.

Tente forçar dados para o disco periodicamente através de FileFlush().


hmmm: outra coisa que eu não percebi de imediato

tvv:

ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
O arquivo no script é aberto da seguinte forma: ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ);
Por favor, aponte meu erro.

É estranho que se leia. Deve haver uma bandeira FILE_CSV.
FileFlush - Файловые операции - Справочник MQL4
FileFlush - Файловые операции - Справочник MQL4
  • docs.mql4.com
При выполнении операции записи в файл физически данные могут оказаться в нем только через некоторое время. Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush(). Если не использовать функцию, то часть данных, еще не попавших на диск, принудительно записывается туда только при закрытии файла функцией...
 
Alexey Viktorov:

Tente periodicamente forçar os dados para o disco com FileFlush().


Dica: Outra coisa que notei há algum tempo

É estranho que se leia. Deve haver uma bandeira FILE_CSV.

.CSV é uma extensão de arquivo - você pode usar qualquer extensão - eu a escolhi para que você possa procurá-la no Bloco de Notas. Aqui está um artigo interessante - https://www.mql5.com/ru/articles/2720. Meu código obedece às regras descritas ali - mas não consigo ler o arquivo de forma programática. no modo FILE_SHARE_READ. Para o arquivo EURUSD20.HST com extensão .HST - a bandeira deve ser FILE.BIN, de modo que em MT 4 arquivos podem ser abertos off-line.

Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Функции для работы с файлами есть почти во всех языках программирования, и MQL5 в этом смысле — не исключение. Хотя при программировании советников и индикаторов на MQL5 работать с использованием файлов приходится не всегда, (а скорее даже — очень редко), но тем не менее, каждый экспертописатель рано или поздно с этим сталкивается. Диапазон...
 
tvv:

.CSV é uma extensão de arquivo - pode ser qualquer coisa - eu a escolhi para poder procurá-la no Notepad. Aqui está um artigo interessante - https://www.mql5.com/ru/articles/2720. Meu código obedece às regras descritas ali - mas não consigo ler o arquivo de forma programática. no modo FILE_SHARE_READ. Para o arquivo EURUSD20.HST com extensão .HST - a bandeira deve ser FILE.BIN, de modo que em MT 4 arquivos podem ser abertos off-line.

Eu tentei trabalhar não no testador, mas apenas em um gráfico normal (EURUSD M1) - eu corro o indicador que gera o TF M20.

Para abrir o arquivo:

ExtHandle= FileOpen("EURUSD20.csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ).

O arquivo aparecerá então na pasta MQL4\Files. Depois executamos o roteiro em um gráfico regular (EURUSD M5) que copia o conteúdo de EURUSD20.csv para EURUSD20.HST. O arquivo EURUSD20.HST é gerado na pasta do histórico no mesmo diretório da MQL4.

O código do roteiro:

ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) ler arquivo;

ExtHandleW=FileOpenHistory("EURUSD20.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);

Tudo funciona somente quando eu removo o indicador do gráfico M1. Ou seja, eu não tenho o modo de leitura de compartilhamento de arquivos funcionando.

 

Olá! Qual é a falha do metatrader no gráfico do eurodólar? Uma vela diária para domingo 9.10.2011 apareceu, no gráfico de horas há apenas uma hora 23:00 para essa data. Isto provavelmente se deve à mudança dos relógios para a hora de inverno. Como consertá-lo? Antes não existia tal vela.

 
tvv: Tudo funciona somente quando eu removo o indicador do gráfico M1. Ou seja, eu não li o modo de arquivo dividido funcionando.

O problema é resolvido da seguinte forma: O programa que escreve o arquivo deve fechar FileClose após cada operação de gravação, liberando assim o arquivo para que outro programa possa ler. Isto porque os dados são escritos primeiro no buffer e não estão fisicamente presentes no arquivo por algum tempo. O fechamento do arquivo libera o buffer para o arquivo. Antes do próximo escrito

   // Открытие или создание файла и перемещение указателя в конец
   Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " "); // еще COMMON  SHARE...
   FileSeek(Файл, 0, SEEK_END);

o arquivo é reaberto e o ponteiro é movido para o final do

 

Olá! Você pode me dizer se é correto dizer que o número de pontos obtidos será o mesmo nas duas expressões? É realmente importante para mim!

"Цена закрытия последнего закрытого ордера"-Ask>=30*Point

Ask-"Цена закрытия последнего закрытого ордера">=30*Point //Если цена Выше

Mais precisamente, os pontos não podem ser negativos???? Ou ainda.....))

 

Boa noite.

Eu comecei a estudar o mql5 e tenho algumas perguntas, portanto, por favor, ajude-me.

A tarefa é colocar os valores dos últimos n castiçais em uma matriz e ordenar a matriz escolhendo apenas os castiçais imbatíveis.

Eu escrevi a função:

double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
   {
      double high=0;
      int k=0;
      int s=0;
      ArraySetAsSeries(High,true);
         if(CopyHigh(Symbol(),Period(),0,NumCand,High)==-1)
               {
               Print("Не удалось скопировать значения цен High! Код ошибки = ",GetLastError());
               }  
               
      
       for(int x=NumCand-1; x==0; x--)
            {
            if(IsStopped())
            break;
                  for (int j = NumCand-x-1; j == 0; j--) 
                  {
                  if (High[j+1] > High[j])
                     {
                     // Если хай не побит записываем в массив
                     temp[k] = High[j+1];
                     k++;
                     }   
                   }
            }
      s=sizeof(temp);               
      high=temp[index];
      return(high);
   } 

Ele gera umamatriz de errosfora do alcance.

 high=temp[index];

Tanto quanto eu entendi, este erro é causado pelo endereçamento de uma célula inexistente da matriz.

Mas eu não consegui encontrar o erro da mudança, por favor, informe onde fiz asneira, ou talvez haja uma classificação mais elegante.

 
WhiteBerkut:

Boa noite.

Eu comecei a estudar o mql5 e tenho algumas perguntas, portanto, por favor, ajude-me.

A tarefa é colocar os valores dos últimos n castiçais em uma matriz e ordenar a matriz escolhendo apenas os castiçais imbatíveis.

Eu escrevi a função:

Ele gera umamatriz de errosfora do alcance.

Tanto quanto eu entendi, este erro é causado pelo endereçamento de uma célula inexistente da matriz.

Mas eu não consegui encontrar o erro da mudança, por favor, informe onde fiz asneira, ou talvez haja uma classificação mais elegante.

Compare o valor do índice com a dimensão da matriz. Observe que os elementos da matriz são numerados a partir de zero, e o número da última é 1 a menos do que a dimensão do índice. E NumCand é igual a quê?