www.ABC-Forex.ru :: успешный трейдинг и инвестирование

Обучение, выбор брокера, торговые системы, бонусы для торговли с нуля, конкурсы трейдеров на демо- и реальных счетах, бесплатный VPS-сервис, инвестирование - вклад в ПАММ-счета



СОДЕРЖАНИЕ



Тестирование стратегий — Файлы истории формата FXT

Назад     Вперед

Файлы истории формата FXT

В своей работе тестер использует файл *.FXT со сгенерированной последовательностью баров. Каждая запись сгенерированной последовательности представляет собой состояние бара на тот или иной момент времени в пределах одного бара. Проводя моделирование баров, тестер берет из этого файла новые бары и обновляет текущий бар либо добавляет новый, если он только начал формироваться.

Можно отказаться от стандартного моделирования баров и использовать свой файл данных при тестировании/оптимизации. Для этого необходимо отключить галочку "Пересчитать" и поместить необходимый FXT-файл в каталог /TESTER/HISTORY. Имя файла должно иметь формат "[название финансового инструмента][период в минутах]_[тип моделирования (0 — по всем тикам, 1 — по контрольным точкам, 2 — по ценам открытия)].FXT" (без пробелов). Например, "EURUSD1440_1.FXT", где "EURUSD" — финансовый инструмент, "1440" — период D1 (1440 минут, 24 часа), "1" — моделирование по контрольным точкам.

Ниже приведено краткое описание формата. Файл начинается с заголовка:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct TestHistoryHeader
  {
   int               version;
   char              copyright[64];      // копирайт
   char              symbol[12];
   int               period;
   int               model;              // для какого режима тестирования сгенерирована последовательность
   int               bars;               // количество баров в истории
   time_t            fromdate;
   time_t            todate;
   double            modelquality;       // качество генерации
   //---- общие параметры
   char              currency[12];       // валютная база
   int               spread;
   int               digits;
   double            point;
   int               lot_min;            // минимальный размер лота
   int               lot_max;            // максимальный размер лота
   int               lot_step;
   int               stops_level;        // величина отступа стопов
   int               gtc_pendings;       // указание закрывать отложенные ордера в конце дня
   //---- параметры расчёта профитов
   double            contract_size;      // величина контракта
   double            tick_value;         // цена одного пункта
   double            tick_size;          // размер одного пункта
   int               profit_mode;        // тип расчёта профитов { PROFIT_CALC_FOREX, PROFIT_CALC_CFD, PROFIT_CALC_FUTURES }
   //---- расчёты свопов
   int               swap_enable;        // разрешение взятия свопа
   int               swap_type;          // тип свопа            { SWAP_BY_POINTS, SWAP_BY_DOLLARS, SWAP_BY_INTEREST }
   double            swap_long;
   double            swap_short;         // величина овернайт свопа
   int               swap_rollover3days; // день тройных свопов
   //---- расчёт маржи
   int               leverage;           // плечо
   int               free_margin_mode;   // тип расчетов свободной маржи   { MARGIN_DONT_USE, MARGIN_USE_ALL, MARGIN_USE_PROFIT, MARGIN_USE_LOSS }
   int               margin_mode;        // тип расчетов маржи             { MARGIN_CALC_FOREX,MARGIN_CALC_CFD,MARGIN_CALC_FUTURES,MARGIN_CALC_CFDINDEX };
   int               margin_stopout;     // уровень стопаута
   double            margin_initial;     // маржевые требования
   double            margin_maintenance; // обязательные маржевые требования
   double            margin_hedged;      // маржевые требования на хеджируемых позициях
   double            margin_divider;     // делитель маржи
   char              margin_currency[12];// валюта маржевых требований
   //---- расчёт комиссии
   double            comm_base;          // базовая комиссия
   int               comm_type;          // тип базовой комиссии { COMM_TYPE_MONEY, COMM_TYPE_PIPS, COMM_TYPE_PERCENT }
   int               comm_lots;          // за лот или сделку    { COMMISSION_PER_LOT, COMMISSION_PER_DEAL }
   //----
   int               from_bar;           // номер бара fromdate
   int               to_bar;             // номер бара todate
   int               start_period[6];    // номер бара, с которого началось моделирование меньшего периода
   //----
   int               reserved[64];
  };

После этого идет массив сгенерированных баров:

#pragma pack(push,1)
struct TestHistory
  {
   time_t            otm;                // время бара
   double            open;               // значения OHLCV
   double            low;
   double            high;
   double            close;
   double            volume;
   time_t            ctm;                // текущее рабочее время внутри бара
   int               flag;               // флаг запуска эксперта (0-бар модифицируем, а эксперта не запускаем)
  };
#pragma pack(pop)

Используются технологии uCoz