Бэктестинг с тиковыми данными - страница 3

 

BTW - скрипт в вашем прикрепленном .rar файле. Это точно такой же скрипт, как и тот, который вы разместили (вырезали и вставили) на форуме ранее?

 
mikey:

BTW - скрипт в вашем прикрепленном .rar файле. Это точно такой же скрипт, как и тот, который вы разместили (вырезали и вставили) на форуме ранее?

Да. Пост - это вырезка и вставка из файла...


Что касается этого:

Одна вещь - не большая драма - но последняя строка выходного файла выглядит так:

2004.02.23,08:34,,,,,1

Скрипт предполагает , что в конце последней строки файл закончится. В вашем случае файл, вероятно, имел символ новой строки в конце последней строки, поэтому цикл не обнаружил "конец файла" и продолжил обработку последней строки, которая на самом деле была пустой... Есть много способов решить эту проблему, например, вы можете добавить условие, что переменная 'sclose' не пуста перед записью:

if (sclose != "")     // make sure close price exists in last line processed
   FileWrite(trg_handle,output);
 

Спасибо, приятель. Один маленький вопрос по поводу стоимости свопа в тестере стратегий. Это добавляется в конце или по ходу дела. Я думаю, что она может быть добавлена по ходу дела: Я заметил, что для некоторых сделок: например, если тейк-профит (TP) находится на уровне 100, когда он закрывается с TP, то прибыль +100 не возвращается, а вместо этого возвращается TP меньшего размера, например. +80. Может ли это быть связано с расходами на своп, добавленными к этой сделке (чтобы учесть дни, когда она держалась на ночь - и, конечно, при таком методе у нас больше "ночей", чем должно быть). (Стоимость свопа не будет слишком большой для моей ночной сделки, поскольку я торгую лотами 0,1, но тогда из-за фактора многих ночей она увеличивается).

Он все еще работает. Единственное, что я могу сказать, это то, что результаты очень сильно отличаются от M1. Так что, если это действительно так - это определенно стоило сделать. Это дает мне гораздо больше идей.

 
mikey:

Спасибо. Один небольшой вопрос по поводу стоимости свопа в тестере стратегий. Она добавляется в конце или по ходу дела. [...]

Он добавляется точно так же, как и на реальном/демонстрационном счете. Из статьи "Тестирование возможностей и лимитов в MetaTrader 4":

Моделируются все свопы, маржинальные требования, экспирации, GTC-ордера.

Обратите внимание, что значение свопа берется со счета, к которому вы подключены в данный момент, когда вы нажимаете "Start" в тестере.

 

Новое препятствие. Когда я загружаю в History center тиковые данные за 3 месяца (обработанные, как мы уже выяснили в этой теме - чтобы каждый тик имел свой собственный бар M1) - вроде бы все в порядке, но только что увидел это в журнале:

Historybase: недостаточно памяти '#CLX01' [8412861 баров]
Обработчик памяти: не может выделить 370166236 байт памяти

Значит ли это, что он не загрузил все данные?

 
mikey:

Новое препятствие. Когда я загружаю в History center тиковые данные за 3 месяца (обработанные, как мы уже выяснили в этой теме - чтобы у каждого тика был свой бар M1) - вроде бы все нормально, но только что в журнале увидел следующее:

Historybase: недостаточно памяти '#CLX01' [8412861 бар]
Memory handler: cannot allocate 370166236 bytes of memory.

Значит ли это, что он не загрузил все данные?

Это может быть потому, что вы превысили лимит в 2 ГБ. После нажатия кнопки "Start" тестер создает файл FXT, содержащий тики для теста (в вашем случае это 1 тик на бар). Этот файл создается в папке '\MetaTrader 4\tester\history'. Откройте эту папку и проверьте, имеет ли размер последнего созданного файла около ~2 ГБ. Если да, то вы достигли лимита тестера. Нет никакого решения для этого, кроме как тестировать на более коротких периодах времени...


Я не уверен, что причина именно в этом, возможно, дело в чем-то другом...

 

Тестер все еще работает, когда я проверял размер. Значит, может увеличиться?

Но в любом случае, на данный момент размер составляет всего 412 МБ. Что, я полагаю, намного меньше 2 ГБ?

 

BTW - журнал, в котором находится это сообщение об ошибке, находится НЕ в тестере стратегий, а в другом журнале (тот, что для счета).

 

Я начинаю немного расстраиваться. Справедливо - я начинаю что-то новое, и поэтому обязательно будут проблемы.

Но НЕ СВЯЗАННОЕ С ЭТОЙ ТЕМОЙ - я только что заметил, что на стандартной стратегии metatrader, запущенной с правильными данными M1 (так что не связано с тем, о чем мы говорим в этой теме) в течение 3 месяцев я получил данные по нефти. И я заметил, что тестер стратегии просто перестал открывать какие-либо сделки примерно через 2 недели. В коде - всякий раз, когда нет открытой сделки, должна открываться новая сделка (никогда не было проблем с этим в прямом тестировании). Но тестер стратегии работает нормально в течение 2 недель, открывая сделки, а затем не открывает ни одной сделки в течение 2,5 месяцев (несмотря на прибыль в 5000 долларов)! Кроме того, получаемые результаты настолько далеки от результатов моего форвард-тестирования. В мой разум начинают закрадываться сомнения относительно движка тестера стратегий metatatrader и его валидности и использования.

(данные все загружаются в тестер нормально, потому что для диапазона дат в отчете - правильный диапазон)

Моя мечта/цель: Я надеялся, что если предоставить тестеру стратегий хорошие исторические данные (особенно если вы можете получить тиковые данные), то вы получите хорошее представление о том, как ваша стратегия действительно торговала бы в течение этой истории (проскальзывание, дисперсия спреда и т.д. приняты). Но теперь я задаюсь вопросом, достижимо ли это. Может ли движок стратегии действительно обеспечить это. ДОСТИЖИМА ЛИ ЭТА ЦЕЛЬ В METATRADER? Кто-нибудь, дайте мне надежду!

 
mikey:

BTW - журнал, в котором находится это сообщение об ошибке, находится НЕ в тестере стратегий, а в другом журнале (тот, что для счета).

Ну, тогда это, вероятно, не связано с тестером (вы можете увидеть его журналы в папке 'MetaTrader 4\tester\logs'), но я не могу быть уверен.
Причина обращения: