www.ABC-Forex.ru :: успешный трейдинг и инвестирование
Обучение, выбор брокера, торговые системы, бонусы для торговли с нуля, конкурсы трейдеров на демо- и реальных счетах, бесплатный VPS-сервис, инвестирование - вклад в ПАММ-счета
|
||||
В своей работе тестер использует файл *.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)