Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1134

 
Народ, ну помогите по парам. Как добавить, если нет в общем списке МТ?
 
Valeriy Yastremskiy:

FILE_SHARE_READ

128

Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ

Не заменяет. А вообще лучше не открывать и закрывать на каждом тике файл

Он разрешает совместный доступ к разрешенному чтению, а не разрешает чтение с совместным доступом
Спасибо. Заработало! Мне жалко компуктер каждый тик закрывать файл поэтому я закрытие файла поместил в OnDeinit.
 
HeAic:
Чем заменить функцию Sleep(500) в индикаторе?

Если очень нужно, то сделайте свою паузу подсчитывающую время тиков процессора в милисекундах. Пауза-то будет, но ждать будет весь поток.

 
  int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
  datetime time=TimeLocal();
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  FileClose(fileHandle);
  }
void OnTick()
  {
  FileWrite(fileHandle,"Время=",TimeLocal());
  }
Зачем объявлять переменную "time" если она не используется в "FileWrite"? Если не объявлять:
int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
datetime TimeLocal();
то компилятор ругается, а смысл?
 
ascerdfg:
Зачем объявлять переменную "time" если она не используется в "FileWrite"? Если не объявлять: то компилятор ругается, а смысл?
datetime TimeLocal();

ЭТО ЧТО?????

Может убрать эту строчку совсем и посмотреть?

 
Valeriy Yastremskiy:

ЭТО ЧТО?????

Может убрать эту строчку совсем и посмотреть?

В хэлпе так написано: https://www.mql5.com/ru/docs/dateandtime/timelocal

Вызов без параметров

datetime  TimeLocal();

Документация по MQL5: Дата и время / TimeLocal
Документация по MQL5: Дата и время / TimeLocal
  • www.mql5.com
Дата и время / TimeLocal - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ascerdfg:

В хэлпе так написано: https://www.mql5.com/ru/docs/dateandtime/timelocal

Вызов без параметров

datetime  TimeLocal();

FileOpen

Функция открывает файл с указанным именем и указанными флагами.

int  FileOpen(
   string  file_name,           // имя файла
   int     open_flags,          // комбинация флагов
   short   delimiter='\t',      // разделитель
   uint    codepage=CP_ACP      // кодовая страница
   );

А файлопен так написан. Это не пример, как писать в программе, а указание типа возвращаемого значения.

 qqq.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                                  https:// |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
 int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
//  datetime time=TimeLocal();
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  FileClose(fileHandle);
  }
void OnTick()
  {
  FileWrite(fileHandle,"Время=",TimeLocal());
  }
'qqq.mq4'       qqq.mq4 1       1
0 errors, 0 warnings, 202 msec elapsed          1       1
Переменной time имеет смысл присвоить локальное время компьютера в онинит и это будет время начала работы эксперта))) 
 
Спасибо!
 
double a=20.43;
double b=20.56;
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
  Print(a-b);
  }
Результат пишет -0,1299999999999999. Почему?
 
ascerdfg:
Результат пишет -0,1299999999999999. Почему?

Особенности хранения вещественных чисел в памяти компьютера.

Для вывода с нужной точностью используйте DoubleToString()

А вообще, вам бы азы поучить, а уже потом пытаться писать программы.

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Вещественные типы (или типы с плавающей точкой) представляют значения, имеющие дробную часть. В языке MQL5 есть два типа для чисел с плавающей точкой. Способ представления вещественных чисел в машинной памяти определен стандартом IEEE 754 и не зависит от платформ, операционных систем и языков программирования. Константы с плавающей точкой...
Причина обращения: