miss.natasha:
Откройте скрипт PeriodConverter и рассмотрите как пример.
Появилась необходимость записать данные в hst файл, чтоб потом на основе этих данных построить автономный график.
Бьюсь второй день но ничего не получаеться.
В итоге при запуска графика получаю ошибку: HistoryBase: 196 errors in 'NZDCHF45'
Понимаю что- что то не так записала. Но как правильно записывать не знаю, мало информации. Кто знает - подскажите.
Vitalie Postolache:
Откройте скрипт PeriodConverter и рассмотрите как пример.
Открывала и рассматривала. Не помогло, я не очень опытный программист. Нигде нет информации как правильно записать в hst
Откройте скрипт PeriodConverter и рассмотрите как пример.
miss.natasha:
Открывала и рассматривала. Не помогло, я не очень опытный программист. Нигде нет информации как правильно записать в hst
Тогда просто попробуйте объяснить сначала себе, зачем вы внутри цикла структуру "MqlRates r" объявляете?
Открывала и рассматривала. Не помогло, я не очень опытный программист. Нигде нет информации как правильно записать в hst
Vitalie Postolache:
Тогда просто попробуйте объяснить сначала себе, зачем вы внутри цикла структуру объявляете?
А так нельзя? Структуру можно наверное и в цикле обявлять, компилятор вроде не возражал
Тогда просто попробуйте объяснить сначала себе, зачем вы внутри цикла структуру объявляете?
miss.natasha:
А так нельзя? Структуру можно наверное и в цикле обявлять, компилятор вроде не возражал
А так нельзя? Структуру можно наверное и в цикле обявлять, компилятор вроде не возражал
Понятно. Тогда просто делайте как в том скрипте, ничего не переиначивая.
А компилятор следит лишь за правописанием, вашу логику он не знает и не проверит никак.
Vitalie Postolache:
Мне не надо как в том скрипте, мне надо свои данные записать в hst.
Понятно. Тогда просто делайте как в том скрипте, ничего не переиначивая.
А компилятор следит лишь за правописанием, вашу логику он не знает и не проверит никак.
Может не подойдёт вовсе, но как вариант:
я иногда тоже рисую свои графики, пишу файл вида (самый простой вариант графика с нумерацией от нуля по оси х. А вообще можно хоть японские свечи рисовать):
я иногда тоже рисую свои графики, пишу файл вида (самый простой вариант графика с нумерацией от нуля по оси х. А вообще можно хоть японские свечи рисовать):
"График 1"
3\n5\n7\n1...
"График 2"
5\n2\n1\n8...
...
и скармливаю это хозяйство gnuplot:3\n5\n7\n1...
"График 2"
5\n2\n1\n8...
...
gnuplot> plot for [i=0:10] 'data_file' index i with line title columnheader
График готов. Простой открытый формат файлов без всякой ненужной шелухи.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Появилась необходимость записать данные в hst файл, чтоб потом на основе этих данных построить автономный график.
Бьюсь второй день но ничего не получаеться.
Код
//| hst.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
ulong last_fpos=0; //
int HandleHistory=-1;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string symbol=Symbol();
int per=Period()*9;
ResetLastError();
if(CreateHeader()==true)//если создали заголовок
{
HandleHistory=FileOpenHistory(symbol+(string)per+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(HandleHistory!=INVALID_HANDLE)
{
for(int i=199;i>0;i--)//заполняем данными
{
MqlRates r;
r.time=Time[i];//просто пытаюсь записать, это так для примера
r.open=Open[i];//просто пытаюсь записать, это так для примера
r.low=Low[i];
r.high=High[i];
r.close=Close[i];
r.tick_volume=(long)10;
r.spread=0;
r.real_volume=(long)10;
uint byteswritten=FileWriteStruct(HandleHistory,r);
Print("FileOpen OK ",byteswritten," ",Time[i]);
}
FileClose(HandleHistory);
// FileFlush(HandleHistory);
}
else Print("Операция FileOpen неудачна, ошибка ",GetLastError());
}
// long id=ChartOpen(symbol,per);
//Alert(id);
}
//+------------------------------------------------------------------+
bool CreateHeader()//создаем файл с историей hst(заголовок)
{
int file_version=401;
string c_copyright;
string c_symbol=Symbol();
int i_period=Period()*9;
int i_digits=Digits;
int i_unused[13];
//---
ResetLastError();
HandleHistory=FileOpenHistory(c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(HandleHistory<0)
{
Print("Error open ",c_symbol+(string)i_period,".hst file ",GetLastError());
return(false);
}
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
ArrayInitialize(i_unused,0);
//--- write history file header
FileWriteInteger(HandleHistory,file_version,LONG_VALUE);
FileWriteString(HandleHistory,c_copyright,64);
FileWriteString(HandleHistory,c_symbol,12);
FileWriteInteger(HandleHistory,i_period,LONG_VALUE);
FileWriteInteger(HandleHistory,i_digits,LONG_VALUE);
FileWriteInteger(HandleHistory,0,LONG_VALUE);
FileWriteInteger(HandleHistory,0,LONG_VALUE);
FileWriteArray(HandleHistory,i_unused,0,13);
return(true);
}
В результате выполнения создаеться файл с историей, но автономный график не создается.
Вот инфо по графику
Почему то пишуться данные 2003 года!
В итоге при запуска графика получаю ошибку: HistoryBase: 196 errors in 'NZDCHF45'
Понимаю что- что то не так записала. Но как правильно записывать не знаю, мало информации. Кто знает - подскажите.