Индикаторы: OandaX OrderBook Chart - страница 11

 
IronBird72:
Да я бы и рад :) Использовать ваш Download Manager. Вот только с импортом сохраняемых им файлов, разобраться бы...  :)

Ратио вы можете получать напрямую из индикатора Ratio History, с гистограммами все сложней.

Э‌тот код выложен именно для того чтобы показать механизм работы с гистограммами.

Е‌сли вам нужен экспорт в матлаб, вы можете взять индикатор за базу и пересохранять данные в удобном для вас формате

 
Да, это выход. Спасибо. Надо только с МТ4 разобраться , поскольку я его не знаю...
 

Доброго времени суток.
Установил у себя MT4 от Альпари (или это МТ5, черт их разберет. В панели запуска написано "Alpari Limited MT4", а потом, когда терминал запускается,  делаю "Справка --> О программе" - получаю окошко "MetaTrader 5". ) Ладно, пускай его. 
Пытался устанавливать OandaX Download Manager BETA - не установился. А установился OandaX 5 Download Manager BETA. Возможно, как раз потому, что у меня всё таки МТ5, а не 4...
Отлично. История закачалась, в папке получил множество бинарных файлов. 
Далее, если можно, такой вот вопрос - какова структура записи\чтения данных в такой файл?
Дело в том, что из НЕОТКОМПИЛИРОВАННЫХ (чтоб посмотреть, как читать эти файлы) - нашел только OandaX OrderBook Chart. Все остальные продукты - только уже скомпилированные (возможно, плохо искал? Поправьте пожалуста, если так).
Там , в OandaX OrderBook Chart - подсмотрел такую последовательность:

bool LoadOrderBookForTimestamp(const string& instrument, const datetime timestamp, OrderBookStruct& orderbook)
{
  string file_path = GetHistoryPath(kOrderBookPath) + kDirSeparator +
                     GenerateInstrumentPathFromTimestamp(instrument, timestamp);
  bool result = false;
  
  if (FileIsExist(file_path))
  {
    int file_handle = FileOpen(file_path, FILE_READ|FILE_BIN);
    
    if (file_handle != INVALID_HANDLE)
    {
      ResetLastError();
      orderbook.rate = FileReadFloat(file_handle);
      
      if (!GetLastError())
      {
        uint count = FileReadArray(file_handle, orderbook.price_points);      
        
        if (count)
        {
          orderbook.timestamp = (int)timestamp;
          result = true;
        }
        else
        {
          // Error
        }
      }
      else
      {
        // Error      
      }      
      FileClose(file_handle);
    }
    else
    {
      // ERROR("Error in FileOpen, file: " + file_path, GetLastError());
    }
  }
  return result;
}


‌то есть, файл открывается, затем читается из него 1 переменная rate, затем массив (некоторой длинны) структур price_points. Я правильно понял "организацию" такого бинарного файла? И если да, то - справедлива ли она до сих пор (насколько я понимаю, OandaX 5 Download Manager BETA - гораздо более поздний продукт)?
Спасибо.

‌P.S. Я не знаю MQL, поэтому прошу не пинать за возможно пионерские вопросы и терминологию.

 
IronBird72:

Дело в том, что из НЕОТКОМПИЛИРОВАННЫХ (чтоб посмотреть, как читать эти файлы) - нашел только OandaX OrderBook Chart. Все остальные продукты - только уже скомпилированные (возможно, плохо искал? Поправьте пожалуста, если так).

Да, все так. Хотя нет, есть еще в блоге открытый интерес для бука, обертка вокруг Ratio History, в исходниках.

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

‌то есть, файл открывается, затем читается из него 1 переменная rate, затем массив (некоторой длинны) структур price_points. Я правильно понял "организацию" такого бинарного файла?

Д‌а, кроме этого потом проводится нормализация, заполнение дыр и т.д. возможно вам это будет полезно. Ну и следует помнить что файлы располагаются не линейно, а в иерархии папок, чтобы ускорить поиск нужной даты.

И если да, то - справедлива ли она до сих пор (насколько я понимаю, OandaX 5 Download Manager BETA - гораздо более поздний продукт)?

Н‌ет ) это тот же Download Manager BETA только скомпилированный под 5ку, практически весь код кроссплатформенный.

В‌смысле формат хранения файлов меняться уже не будет.

 
Andrei Trukhanovich:


Д‌а, кроме этого потом проводится нормализация, заполнение дыр и т.д. возможно вам это будет полезно.


Да, это интересно. В смысле, на текущей стадии - теоретически. Просто было бы любопытно обсудить, вкратце. Нормализация - это понятно. А вот "заполнение дыр" - что имеется в виду? Дыры в "временной последовательности"  (т.е. искусственная генерация недостающих "временных отпечатков" ("бинарного файла")) - или же дыры в ценах, в рамках текущего "отпечатка"("бинарного файла")? В первом случае - я примерно процесс представляю. Во втором - нет (по какому принципу это может производиться?). Если не трудно, объясните (без деталей, просто, для понимания, о чем речь).

 
IronBird72:

Если не трудно, объясните (без деталей, просто, для понимания, о чем речь).

Если вкратце, я беру сырые данные

1‌. нахожу шаг гистограммы

2‌. заполняю отсутствующие столбцы нулями (их нет в сырых данных)

3‌. нормализую (выравниваю) цены

4‌. разбиваю данные на 4 массива (по квадрантам) и делаю так, чтобы у попарных массивов были одинаковые ценовой максимум и минимум (т. е. опять же добиваю нулями).

5‌. если в настройках есть показывать разницу или сумму, считаю разницу и сумму.

В‌се это есть в коде в классе BaseHistogram.

С‌ нормализованными данными без пропусков гораздо проще работать.

Д‌ыры во времени я не латаю.

 
Andrei Trukhanovich:

Если вкратце, я беру сырые данные

1‌. нахожу шаг гистограммы

2‌. заполняю отсутствующие столбцы нулями (их нет в сырых данных)

3‌. нормализую (выравниваю) цены

4‌. разбиваю данные на 4 массива (по квадрантам) и делаю так, чтобы у попарных массивов были одинаковые ценовой максимум и минимум (т. е. опять же добиваю нулями).

5‌. если в настройках есть показывать разницу или сумму, считаю разницу и сумму.

В‌се это есть в коде в классе BaseHistogram.

С‌ нормализованными данными без пропусков гораздо проще работать.

Д‌ыры во времени я не латаю.


Это всё происходит, насколько я понял, именно в Download Manager-е. Тоесть, те файлы, с которыми я буду работать, вот так вот УЖЕ обработаны (как вы написали выше)? Правильно?

Вообще, я уже давно и "в несколько заходов" пытался работать со стаканом. Однако, стакан этот, не был "реальным", а я пытался его сам генерировать (в меру скромных представлений о поведении толпы). Результат был фактически нулевой. А вот теперь, интересно опробовать всё это на "реальных" данных так сказать...
 

IronBird72:
Это всё происходит, насколько я понял, именно в Download Manager-е.

Н‌ет, менеджер не работает напрямую с данными, он просто правильно складывает бинарные данные с сервера.

Тоесть, те файлы, с которыми я буду работать, вот так вот УЖЕ обработаны (как вы написали выше)? Правильно?

Нет, обработка именно в индикаторе, я написал выше где искать

Вообще, я уже давно и "в несколько заходов" пытался работать со стаканом. Однако, стакан этот, не был "реальным", а я пытался его сам генерировать (в меру скромных представлений о поведении толпы). Результат был фактически нулевой. А вот теперь, интересно опробовать всё это на "реальных" данных так сказать...

Это тоже не совсем реальный стакан ) потому что слепками раз в 20 минут, хотя огромный плюс то что стопы видно. хотите гиперреальный стакан, сходите на криптовалютную биржу.
 
и как его теперь двигать влево-вправо?)
 
Сергей:
и как его теперь двигать влево-вправо?)

В этой версии никак. Можете дописать.

Я вообще использую картинки и никаких неудобств не ощущаю.