CSV2FXT: генерация HST и FXT файлов из тиковых котировок

Тема в разделе "Скрипты", создана пользователем loopsider, 1 Май 2016.

  1. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.669
    Симпатии:
    4.315
    Баллы:
    435
    Пол:
    Мужской
    Широко известный скрипт от Birt'а для тестирования с 99% качеством моделирования.
    На входе имеем файл тиковой истории в текстовом формате (csv), на выходе получаем hst файлы котировок всех таймфреймов и fxt файл котировок для тестера.
    Входной файл имеет примерно такой вид:
    Скрипт весьма сообразительный, распознает форматы тиковых котировок от большинства известных источников и даже на автомате распознает их GMT сдвиг.
    Котировки на выходе имеют по умолчанию значение GMT0. В настройках скрипта можно выставить желаемый GMTсдвиг и переход на летнее время если надо.

    Внимание: скрипт поддерживает генерацию котировок с реальным спредом, но использовать этот реальный спред может только Birt'овский Tick Data Suite. Во всех других случаях эту опцию включать не следует.

    Использование:
    1. Скачиваем тиковые котировки.
    2. Кладем файл котировок в папку MQL4/Files каталога данных МТ терминала. Файл для, скажем, EURUSD лучше назвать EURUSD.csv. Если название другое, его надо будет указать в настройках скипта.
    3. Перетаскиваем скрипт на график той пары и того таймфрейма, для которого хотим создать FXT файл.
    4. В конце работы скрипт спросит хотим ли мы перенести сгенерированные файлы котировок по местам. Можно согласиться (и тогда скрипт перепишет текущую историю терминала на сгенерированную) или отклонить (сгенерированные файлы останутся в MQL4/Files).

    Настройки:
    В большинстве случаев настройки по умолчанию можно не менять. Раньше надо было выставить желаемый спред, но теперь все меняется прямо в тестере стратегий.
    Описание настроек от автора (англ.):
    • CSV2FXT version – this is a parameter that is only meant to give you a quick indication of what version you have installed. Changing it has no effect.
    • CSV filename – you can leave this blank if the file is named just like the symbol and has a CSV extension (e.g. EURUSD.csv); otherwise, just type the file name.
    • Create HST files – this setting must be true in order to create the HST files that you need for your backtest. You can set it to false if you already generated HST files for the symbol with the same GMT/DST settings and you’re just generating an FXT for a different timeframe. You must create new HST files every time you change the GMT or DST.
      Note: Enabling this setting will create HST files for the whole time span of your tick data file regardless of the time range selected.
    • Spread – the fixed spread of your resulting FXT file, expressed in pips (2.3 will result in a 2.3 pips spread). Leaving it set to the default of 0.0 will make the converter use the current spread of your broker. Please pay attention to the fact that many brokers are widening their spreads during the weekends.
      If you intend to use real spread (the variable spread in your CSV), you can leave this parameter set to 0.0.
      Note: starting from MT4 builds 8xx, the Spread field in the MT4 backtesting pane overrides the spread configured for the FXT unless the FXT is using real spread (see below).
    • Start date and End date – these fields control the time span of the FXT file. You can leave these fields set to their default values (1907.01.01), in which case the converter will just use the whole time range available in the CSV file.
    • Use real (variable) spread – as its name suggests, enabling this parameter will make your resulting FXT use the real (variable) spread from your CSV file.
      The Tick Data Suite will autodetect whether your FXT is using real spread or not so there’s nothing to worry about if you’re using that.
      Note: this parameter makes MT4 disregard the spread configured in the MT4 backtesting UI and use the spread stored in the CSV file in the form of different ask and bid prices.
    • Spread padding – if using real spread, you can pad it by a given number of pips – if you want to pad it by 0.8 pips, just specify 0.8 here.
    • Minimum spread – if any spread is encountered that is lower than the value specified for this parameter, it will be adjusted to this value. This is only applied when using real spread.
    • Commission in pips – if you want your FXT to have a commission, you can configure the desired value here. The figure is round-trip and it is expressed in pips.
      Note: Metaquotes has broken this feature starting from MT4 builds 845 and above. If you need pips commission, I recommend using MT4 build 842 or earlier; alternatively, based on the currency of your backtest you can simply use a money commission that works out to the same amount.
    • Commission in account currency – as an alternative to having the commission in pips, you can also set the commission in money. The value is expressed in base account currency per lot round-trip. If you fill this in, any value specified for Commission in pips will be disregarded.
    • Leverage – changes the leverage of your FXT.
    • FXT GMT offset – if you want your FXT to have a GMT offset other than 0, specify it here.
    • FXT DST setting – the DST setting of your resulting FXT – simply select the DST setting that you would like the file to have. Note that the US DST setting calculates the DST according to the regulations that were applied starting with 2007.
    • CSV GMT offset – the GMT offset of the data in your CSV file. The conversion script is able to autodetect the formats of several free tick data providers and apply the correct setting here, so it’s probably safe to leave it set to “autodetect”. If you get a message in the experts log about the script not being able to identify your tick data source, you can set the CSV GMT offset here manually.
    • CSV DST setting – the DST setting of your CSV. Should be safe to leave it to “autodetect”. Otherwise, use the same guidelines as for the FXT DST setting.
    • Time shift – Enabling this parameter will shift all the generated data 28 years in the past. This is intended for use with EAs that are suspect of having hardcoded days for the purpose of cheating backtesting. The reason behind the 28 year shift is that the calendar is identical when it comes to the days of the week and leap years. This is not a foolproof method and some EAs may have legitimate reasons to yield different results when backtested with a shifted time.
    • Price multiplication factor – All the prices will be multiplied by this value. It’s typically safe to leave this parameter set to 1.0 – don’t change that if you’re converting Forex data. Some brokers use an adapted value for CFDs, indices, metals and so on – instead of the normal price (for instance 12.3456) they will have a value multiplied by a certain value (for example 1234.56); in these cases you have to figure out the multiplier by looking at the chart prices versus the CSV prices.
    • Create M1 FXT, Create M5 FXT, Create M15 FXT, Create M30 FXT, Create H1 FXT, Create H4 FXT, Create D1 FXT, Create W1 FXT, Create MN FXT – These parameters are meant to allow you to create multiple FXT files in a single run. By default, the script will create the FXT for the timeframe of the chart you are running it on, no matter if the parameter for that specific timeframe is enabled or not. Only enable these parameters if you actually need the FXT for a different timeframe.
     

    Вложения:

    Max5813, ZIMA 76, Pythoha и 3 другим нравится это.
  2. Diviner

    Diviner Новичок - ARGOLab.net -

    Регистрация:
    14 Август 2016
    Сообщения:
    6
    Симпатии:
    6
    Баллы:
    3
    Пол:
    Мужской
    Я на Forex с:
    2014
    Неврубаюсь какой GTM и DTS в скрипте CSV2FX вывставлять? Я так понимаю что скрипт их на автомате из котировок высчитывает или я ошибаюсь? Или надо самому по брокеру, от которого котировки, выставлять? Чтото запутался....
     
  3. Diviner

    Diviner Новичок - ARGOLab.net -

    Регистрация:
    14 Август 2016
    Сообщения:
    6
    Симпатии:
    6
    Баллы:
    3
    Пол:
    Мужской
    Я на Forex с:
    2014
    Оставил как стоит в скрипте на авто. Потом прогнал советник который определяет сам на автомате GTM. Получил разные показатели. По делу должен быть GTM +3, а опрделил как GTM +2.
     
  4. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.669
    Симпатии:
    4.315
    Баллы:
    435
    Пол:
    Мужской
    Высчитать сдвиг котировок на автомате надежно весьма нетривиальная задача. Скрипт знает некоторые источники котировок и для них сдвиги выставляет сам. Альпари он, конечно, не знает.
    Вариантов 2 - или выставлять руками правильные значения
    или выставить везде нули и тогда - я думаю - скрипт не будет никуда сдвигать тиковые данные.
     
  5. Юрок

    Юрок Интересующийся

    Регистрация:
    18 Февраль 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    21
    Пол:
    Мужской
    Я на Forex с:
    2014
    х.з... у меня криво ставится, со смещением.. Альпари демо
    причём такая фигня не на всех ТФ, и не на всём периоде
    перепробовал GMT и переход на летнее время разные настройки - ни фига..
    заметил при прогоне совы со старым сетом, результаты другие были..
     

    Вложения:

  6. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.669
    Симпатии:
    4.315
    Баллы:
    435
    Пол:
    Мужской
    Скрипт делает то, что вы указываете ему в настройках.
    Я заморачивался и проверял для FxOpen - из тиковых котировок получались те же бары, что шли с сервера. Только на выходных еще бары получались, пришлось руками скрипт патчить, чтобы он их не строил.
     
    Сергей Иванов нравится это.
  7. Юрок

    Юрок Интересующийся

    Регистрация:
    18 Февраль 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    21
    Пол:
    Мужской
    Я на Forex с:
    2014
    В том и дело, что часть баров тащит на выходные..
    а как с этим бороться, к сожалению, мне невдомёк..
     
  8. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.669
    Симпатии:
    4.315
    Баллы:
    435
    Пол:
    Мужской
    В вам надо с этим бороться? В большинстве случаев лишние котировки на выходных ни на что не влияют.
     
    Сергей Иванов нравится это.
  9. Юрок

    Юрок Интересующийся

    Регистрация:
    18 Февраль 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    21
    Пол:
    Мужской
    Я на Forex с:
    2014
    дык, в моём случае, котировки не лишние.. у меня как выходит:
    в пятницу торговля заканчивается (судя по барам) в 22/23-00, а оставшиеся бары переносятся на воскресенье..
    ну, хрен с ним, было бы какое-то понимание, что я туплю в настройках, ан нет, повторюсь, не на всём периоде такой косяк..
    и, к примеру, на М30 этого нет, на М1, М5, М15 и Н1 есть - вот это в тупик загоняет..
    к тому же я себя не считаю "уверенным пользователем ПК", потому для меня это кирдык полнейший..
     
  10. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.669
    Симпатии:
    4.315
    Баллы:
    435
    Пол:
    Мужской
    Что-то странное вы делаете.
    Я бы на вашем месте котировки вообще никуда не сдвигал - главное знать смещение котировок, а какое оно неважно. Если у вас тики от Дукаса, то у них время GMT+0.
     

.

Поделиться этой страницей

translate