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

 
igrok333:

Como posso ler a linha 8 de um arquivo?

A pergunta diz respeito às operações de arquivo

https://docs.mql4.com/ru/files


Tudo em mql é feito pela força bruta, como alguém me disse uma vez?


Você não pode fazer isso de outra forma?

Todos os tipos de dados têm um certo tamanho de memória ocupada em bytes. Assim, ao escrever o código, você pode usá-lo e mudar o ponteiro do arquivo para o número de bytes ocupados pelos dados de uma cadeia.

Se uma linha contém 4 valores do tipo duplo, ela leva 4*8 = 32 bytes. Assim, para ler a 9ª linha de arquivo, precisamos deslocar o ponteiro do arquivo para 256 bytes.

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

Se deslocado do final do arquivo, então o valor deve ser negativo.

Mas, não é assim tão fácil. Algum tempo atrás, lidei com esta questão e descobri que os arquivos .txt e .csv não funcionam corretamente com isto, mas os arquivos .bin não cometem erros. Talvez este problema já tenha sido resolvido e você possa ter sorte.

 
Alexey Viktorov:

Se houver 4 valores do tipo duplo

não estão todos os valores em uma cadeia de arquivos csv?


Eu tenho uma palavra para cada linha do arquivo.
Portanto, tenho valores de corda com um tamanho de 12 bytes.
Portanto, para chegar à linha 8, preciso deslocar o carro em 84 bytes.

bool  FileSeek(file_handle, 84, SEEK_SET);

Obrigado pela informação.

 
Como faço para percorrer todas as posições abertas em mql 5?
 
Roman Sharanov:
Como em mql 5 fazer um loop em todas as posições abertas?
este é o tópico do mql4
 
igrok333:
este é o tópico do mql4

Não, este tópico é tanto mql4 como mql5

 
Roni Iron:

Boa tarde!

Pergunta: como acelerar o testador no terminal?

Tenho-o usando apenas 1 linha de CPU de 4, e apenas 150mb de RAM. (ou seja, não usa toda a potência do meu PC).

Quais são as opções?

Se isso já foi discutido, desista dos links Por favor!

Se o MT4 desempenha um papel aqui apenas a freqüência da CPU. Utiliza um fio ? Você pode lançar simultaneamente 4 terminais MT4 com diferentes tarefas de teste ou otimização. Você terá a mesma carga de CPU que em um terminal.

 
Roman Sharanov:
Como posso passar por todas as posições abertas em mql5?

mql5 faz a distinção entre posições e ordens. Uma posição é o resultado de uma troca. E uma troca é o resultado do acionamento de uma ordem.

Primeiro de tudo, uma solicitação comercial é enviada ao servidor, e ou uma ordem pendente (se a solicitação fosse para definir uma) ou uma ordem de mercado (se a solicitação fosse para abrir uma posição) aparece.

Se a ordem de mercado for acionada (uma negociação ocorreu), uma posição aparece (ou uma posição existente é modificada) como resultado dessa negociação.

Em uma conta hedge, pode haver muitas posições separadas (inclusive multidirecionais), em uma conta netting pode haver apenas uma posição.

Assim, para percorrer todas as posições, você precisa organizar o loop pelo seu número - respectivamente, use PositionsTotal() em vez do habitual para mql4 OrdersTotal().

Se você quiser loopar todos os pedidos em mql5, então (em mql5) use o usual para mql4 OrdensTotal().

 
igrok333:

mas não estão todos os valores em cadeia de arquivo csv?


Eu tenho uma palavra para cada linha do arquivo.
Portanto, tenho valores de corda com um tamanho de 12 bytes.
Portanto, para chegar à linha 8, preciso deslocar o carro em 84 bytes.


Obrigado pela informação.

O arquivo de texto tem que ser lido apenas linha por linha. Não há outra maneira de calcular o número da linha. Portanto - sim, somente por leitura consecutiva em loop usando FileReadString.

 

Eu crio níveis Fibonacci no gráfico usando ObjectCreate(name,OBJ_FIBO, ...) e depois ObjectSetFiboDescription(name,0,"...") e defino a descrição dos níveis, mas os nomes devem ser afastados da borda direita. Acrescentei espaço em branco, mas ele não apenas afasta o texto, mas também cobre linhas. Além disso, se você acrescentar mais espaços, o texto deixa de se mover para trás.
Pergunta: Posso adicionar um símbolo "invisível" ao texto, para que ele não cubra a linha abaixo dele?


 
Maxim Khrolenko:

Eu crio níveis Fibonacci no gráfico usando ObjectCreate(name,OBJ_FIBO, ...) e depois ObjectSetFiboDescription(name,0,"...") e defino a descrição dos níveis, mas os nomes devem ser afastados da borda direita. Acrescentei espaço em branco, mas ele não apenas afasta o texto, mas também cobre linhas. Além disso, se você acrescentar mais espaços, o texto deixa de se mover para trás.
Pergunta: Posso adicionar um símbolo "invisível" ao texto, para que ele não cubra a linha abaixo dele?

tente pontos e um caractere com código 0