помогите с проблемой записи в HST файл

 

Добрый день,

Помогите разобраться с проблемой экспорта котировок в HST файл. Вложен получаемый HST файл. МТ4 открывает файл, не ругаясь, но непрерывно показывает сообщение "ожидание обновления".

уже даже не знаю. что ещё перепроверить...

вот с++ код, который записывает данные в файл:

*.h:

struct MT4HistoryHeader             //148
{
   int               version;            // версия базы 4
   char              copyright[64];      // копирайт 64
   char              symbol[12];         // инструмент 12
   int               period;             // период инструмента 4
   int               digits;             // число знаков после запятой в инструменте 4
   time_t            timesign;           // временной отпечаток создания базы 4
   time_t            last_sync;          // время последней синхронизации 4
   int               unused[13];         // для будущего использования 4*13
};
#pragma pack(push,1)
struct MT4RateInfo                  //44
{
   time_t            ctm;               // текущее время в секундах 4
   double            open;              //8
   double            low;               //8
   double            high;              //8
   double            close;             //8
   double            vol;               //8
};
#pragma pack(pop)

*.cpp

bool TA::startMT4Feed(const char* _path, const char* _symbol, int _period, int _digits)
{
    strcpy(path2mt4, _path);
    MT4HSTFile.open(_path, ios::out|ios::binary);
    if ((MT4ExportEnabled = MT4HSTFile.is_open()))
    {
        MT4HistoryHeader header;
        header.version = 1;
        memset(header.copyright, 0, 64);
        sprintf(header.copyright, "Andrey Kashirin 2011");
        memset(header.symbol, 0, 12);
        sprintf(header.symbol, "%s", "Qefs");//_symbol);
        header.period = _period;
        header.digits = _digits;
        header.timesign = 0;
        header.last_sync = 0;
        for (int i=0; i<13; i++)
            header.unused[i]=0;
        MT4HSTFile.write((char*)(&header), sizeof(MT4HistoryHeader));
        MT4HSTFile.flush();//148
    }
    return MT4ExportEnabled;
}

void TA::pushCandle(Candles& _candles)
{
    if (MT4ExportEnabled)
    {
        MT4RateInfo singlecandle;
        int i =_candles.getSize()-1;
        while ((_candles[i].DateTime<lastsynced) && (i>0))
            i--;
        for (int j=i; j>0; j--)
        {
            singlecandle.ctm = (long)_candles[j].DateTime;
            singlecandle.open = _candles[j].Open;
            singlecandle.high = _candles[j].High;
            singlecandle.low = _candles[j].Low;
            singlecandle.close = _candles[j].Close;
            singlecandle.vol = _candles[j].Volume;
            MT4HSTFile.write((char*)(&singlecandle), sizeof(MT4RateInfo));
        }
        MT4HSTFile.flush();//3272 - 148 = 3124
        lastsynced = (unsigned long)_candles[0].DateTime;
    }
}
Файлы:
qefs1.zip  1 kb
 
В имени файла после имени инструмента должен идти период. Имя инструмента в имени файла должно совпадать с именем в заголовке файла.
 
Zhunko:
В имени файла после имени инструмента должен идти период. Имя инструмента в имени файла должно совпадать с именем в заголовке файла.

а разве у меня это не так?

"Qefs1.hst" - symbol=Qefs, period=M1

 

Даа, подстава там где не ждали))

struct MT4HistoryHeader             //148
{
   int               version;            // версия базы 4

эта красота должна быть ==400, видимо связано с версие MT(4)