Вопросы от "чайника" - страница 85

 
AUser:

Пытаюсь разобраться с сохранением данных в файл. Написал такой код:

 В файл сохраняется только последнее значение цены. Надо значение цен в столбик. В чем ошибся?

Посмотрите "особенности работы при указании флагов чтения и записи" в Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
 

Туплю конкретно)) Прислушавшись к совету ранее переписал код, хотя и не понимаю, зачем было так.. в любом случае ничего не изменилось. По идее ж это самая элементарная программа записи чего-то в файл, и так туплю..))

void OnInit()
{
double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileIsEnding(FILE);
FileWrite(FILE,BID);
}
void OnDeinit(const int reason)
{
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileClose(FILE);
}

 Напомню, пытаюсь написать программу сохранения тиков в файл. Сохраняет почему-то только последний тик.

 
AUser:

Туплю конкретно)) Прислушавшись к совету ранее переписал код, хотя и не понимаю, зачем было так.. в любом случае ничего не изменилось. По идее ж это самая элементарная программа записи чего-то в файл, и так туплю..))

 Напомню, пытаюсь написать программу сохранения тиков в файл. Сохраняет почему-то только последний тик.

Функция
FileIsEnding(FILE);

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

разберитесь с этим и наступит щастье. :)

 
AUser:

Туплю конкретно)) Прислушавшись к совету ранее переписал код, хотя и не понимаю, зачем было так.. в любом случае ничего не изменилось. По идее ж это самая элементарная программа записи чего-то в файл, и так туплю..))

 Напомню, пытаюсь написать программу сохранения тиков в файл. Сохраняет почему-то только последний тик.

примерно так надо

int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   FileWrite(FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294:

примерно так надо

Точно, спасибо))
 
ZahvatkiN:

Парни вот заметил что в MT4 перед открытием сделки можно было устновить уровень стоплос и тейкпрофит, но в MT5 этого нет или можно, но как-то по другому?

 
sergeev:

ZahvatkiN:

Парни вот заметил что в MT4 перед открытием сделки можно было устновить уровень стоплос и тейкпрофит, но в MT5 этого нет или можно, но как-то по другому?


Вот тут обсуждалось https://www.mql5.com/ru/forum/1111/page561
 

Приветы.Код.Рабочий ТФ М15.Переход в блок Открытий-Закрытий происходит на новом баре.

Если по причине  реквоты (к примеру) не произойдет открытие позиции,то повторно туда зайдет лишь на следующем баре.

И если критерии входа (смотрит OHLC предыдущего бара ) пропали то и позиция не откроется. 

Правильно понимаю? 

ЗЫ.Наверное имеет смысл на новой минутке заходить хотя бы .

void OnTick()
  {CopyTime (_Symbol,PERIOD_M15,0,1,time);
   if (lastbar==time[0]) return;
   lastbar=time[0];
   
  SearchForExit();
  SearchForEnter();
 
   return;
  }
 

 Коллеги, можете ли сказать навскидку, без бенчмаркинга, что быстрее: однократно осуществить CopyTime() всей истории или же каждый раз лишь на некоторых барах (коих сколько бы ни было, их всё равно меньше, чем Bars() всей истории) вызвать её и копировать в Arr значение времени всего одного - текущего - бара?

 Если не оглядываться на бенчмарк, а рассуждать логически, основываясь на знаниях, то как обоснуете свой ответ? ...Хотя я так понимаю, это уже в сторону C/C++...

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