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)