Скачать MetaTrader 5

Помогите, пожалуйста исправить ошбку.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MQL5 Cloud Network ускоряет расчеты. Попробуй сам!
Александр
23
Александр 2011.06.30 12:37 

Здравствуйте!

Не могу понять, что я не так сделал. На сайте нашел код:

int start()
  {
   int handle=FileOpen("firstfile.xlsx",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
   if (handle>0)
   {
    FileWrite(handle,Open[0],High[0],Low[0],Close[0]);
    FileClose(handle);
   }
   else
    Print("Ошибка 1");
   return(0);
  }


По идеи он должен при каждом тике записывать данные в EXCE (firstfile.xlsx)

Создал советника (скрин в приложении) запустил его, а ничего не пишется :(.

я еще ни разу не создавал советников, возможно ошибка чисто механическая?

Заранее всем спасибо!

chaika_sv
146
chaika_sv 2011.06.30 14:49  
sanches83:

возможно ошибка чисто механическая?

Перенесите код

handle=FileOpen("firstfile.xlsx",FILE_CSV|FILE_READ|FILE_WRITE,'\t');

в функцию Init().

А код

FileClose(handle);

перенесите в функцию deinit().

Незачем на каждом тике открывать-закрывать файл. При этом естественно переменная handle должна быть описана глобально.

В остальном, всё должно работать.

Виталий
340
Виталий 2011.06.30 19:44  
Всё должно писаться. Добавьте в конец FileFlush(), чтобы инфа скидывалась в файл на каждом тике. Но в чём сакральный смысл на каждом тике писать OHLC открытой свечи я так и не понял.
Александр
23
Александр 2011.06.30 21:26  
vitali_yv:
Всё должно писаться. Добавьте в конец FileFlush(), чтобы инфа скидывалась в файл на каждом тике. Но в чём сакральный смысл на каждом тике писать OHLC открытой свечи я так и не понял.

vitali_yv,а возможно ли писать OHLC последней закрытой свечи (за предыдущий период), в момент открытия новой свечи или сразу же после этого?
Виталий
340
Виталий 2011.06.30 22:35  

Можно.

int handle;
int init()
  {
   handle=FileOpen("firstfile.xlsx",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
   if(handle<1)
    {
     Alert("Ашыпка ",GetLastError());
    }
   return(0); 
  }
int deinit()
  {
   FileClose(handle);
   return(0);
  }
int start()
  {
   if (NevBar())
   {
    FileWrite(handle,Open[1],High[1],Low[1],Close[1]);
    FileFlush(handle);
   }
   return(0);
  }
bool NevBar() //(C) Vinin
   {
   static int PrevBar=0;
   if (PrevBar==Time[0]) return(false);
   PrevBar=Time[0];
   return(true);
   }
Александр
23
Александр 2011.07.01 21:29  

vitali_yv огромное спасибо, то что нужно!!


И если позволите еще вопрос, можно ли файл открывать так что бы он сначала удалял все старое содержимое и еще к OHLC добавить дату и время открытия свечи. Не сочтите за наглость ))

Виталий
340
Виталий 2011.07.01 21:54  
Сочту за наглость. Слева вверху есть две чудные ссылочки - Учебнег и Документация. Изучайте пожалуйста.
Александр
23
Александр 2011.07.01 22:27  
vitali_yv:
Сочту за наглость. Слева вверху есть две чудные ссылочки - Учебнег и Документация. Изучайте пожалуйста.

И правильно :)). Все вроде получилось. Еще раз спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий