Erros, bugs, perguntas - página 395

 

O OnInit funciona de forma estranha no indicador. Se o terminal for iniciado após longa inactividade (várias horas), EventSetTimer retorna falso, erro 4102. Se eu reiniciar o terminal ou apenas mudar o prazo, ele começa a funcionar. Como lutar contra isso?

 
AlexeyFX:

O OnInit funciona de forma estranha no indicador. Se o terminal for iniciado após longa inactividade (várias horas), EventSetTimer retorna falso, erro 4102. Se eu reiniciar o terminal ou apenas mudar o prazo, ele começa a funcionar. Como lutar contra isso?

Múltiplas tentativas de definir o temporizador (por exemplo, em loop) desde ERR_CHART_NO_REPLY(4102) é possível, especialmente na subida do terminal.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 

Pergunta para os criadores. Anteriormente, nas propriedades do indicador no menu "Aplicar a", para além de tudo o resto listado, podia-se seleccionar "dados do primeiro indicador". Agora não é possível fazer isto:

É removido por alguma razão?

 
Pode por favor dizer-me como a função FileReadString() move o ponteiro do ficheiro quando lê a partir do ficheiro .csv ? Quando leio um carácter, o ponteiro é deslocado 142 caracteres para a direita - para além do fim do ficheiro. Se for necessário, posso explicar o código.
Документация по MQL5: Файловые операции / FileReadString
Документация по MQL5: Файловые операции / FileReadString
  • www.mql5.com
Файловые операции / FileReadString - Документация по MQL5
 
molotkovsm:
Por favor, diga-me como FileReadString() move o ponteiro do ficheiro quando lê a partir de um ficheiro .csv

Ao ler qualquer ficheiro com qualquer função, o ponteiro é movido para o número de bytes lidos.

 
sergeev:

ao ler qualquer ficheiro com qualquer função, o ponteiro move-se pelo número de bytes lidos.


Então diz-me o que estou a fazer mal, o ponteiro é deslocado mal, aqui está o código

void OnStart()
  {
int file_handle;
int value1;
int value2;
   file_handle=FileOpen("file01.csv", FILE_READ|FILE_CSV);
   value1=StringToInteger(FileReadString(file_handle));
   Print(value1,"     ",FileTell(file_handle));
   value2=StringToInteger(FileReadString(file_handle));
   Print(value2,"     ",FileTell(file_handle));
   FileClose(file_handle);
  }

As seguintes linhas aparecem no diário de bordo

2011.05.24 21:44:06 read_test (EURUSD,M1) 1 142

2011.05.24 21:44:06 read_test (EURUSD,M1) 0 286

ficheiro01.csv conteúdo do ficheiro:

1;2;3;5;1.41299999;1.41250002;1.41199994;1.41149998;2011.05.24 17:23;5


 
adicionar FILE_ANSI
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
sergeev:

adicionar FILE_ANSI

acrescentado:

file_handle=FileOpen("file01.csv", FILE_READ|FILE_CSV|FILE_ANSI);

o resultado mudou, mas ainda não é aquele que se espera - a segunda linha apenas mudou

2011.05.24 22:01:32 read_test (EURUSD,M1) 1 142
2011.05.24 22:01:32 read_test (EURUSD,M1) 0 288


 
molotkovsm:

acrescentado:

o resultado mudou, mas ainda não é o que parece - a segunda linha apenas mudou


Não definiu odelimitador . O padrão é 't'.

e está à procura de ';'.

 
sergeev:

Não foi definido um delimitador. O delimitador por defeito é '\t'.

e vejo que precisa de ';'.

Adicionado o delimitador, sem FILE_ANSI parece funcionar, obrigado pela ajuda.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5