Сравнил Свопы тестера MQ и по алгоритму от fxsaber. Почти полностью совпадают. В алгоритме от fxsaber за выходные дни 25 дек и 1 янв берутся свопы, как за рабочий день. Тестер MQ за эти дни своп не берет. Не знаю какой вариант правильнее.
И еще в тестере MQ нашлась непонятная ситуация:
N
Ticket
Magic
OpenTime
CloseTime
LengthTime
TurnOver
Symbol
Type
Lots
OpenPrice
StopLoss
TakeProfit
ClosePrice
Commission
Swap
233
465
100000231
2016.11.28 14:36:36.502
2016.11.30 13:16:45.241
1d 22:40:08.739
212 501.00
EURUSD
buy
1.00
1.05853
1.06648
-2.80 (-2.80)
Сделка с 28 по 30 ноября прошедшая 2 ролловера (пн-ср) взяла 4 свопа вместо 2-х. Для воспроизведения можете открыть и закрыть эту сделку по времени. Могу предположить что *3 своп перенесся с дня благодарения 24 ноября, но там была сделка с 15 по 25 ноября, своп за нее взялся правильно (а не с -2 свопа).
И еще С 11 по 15 сентября 2017 (пн-пт) прошло 4 дня. Т.к. был проход через четверг, то должно быть 1+1+3+1=6 свопов. Но взято почему то 8.
Опять хитроумные формулы не справились (((( У fxsaber-a тоже хитроумная, но видно, что она считает правильнее, может у него скопировать? Но она выходные не учитывает. А может просто в цикле, с даты открытия по дату закрытия пройтись, и начислить за каждый день недели нужный своп ( 1+1+3+1=6 )? Учесть выходные, если надо. Так надежность 100%-ная будет. И не надо голову ломать с формулой без циклов. Уже год ломаете... и 3 или 4 попытки исправления было и вот опять надо.
Баг. Функция CharArrayToString(buffer, 0, WHOLE_ARRAY, CP_UTF8) не убирает начальный BOM из потока utf-8, то есть полученная строка начинается с символов 0xEF,0xFF,0xBF (если они были в файле), которые, кстати говоря, не убираются функциями StringTrimLeft/StringTrimRight и это сказывается на работоспособности дальнейшего парсинга. BOM является техническим флагом о кодировке, а не частью информации, переведенной в 2-байтовую строку, для которой BOM - это уже нонсенс.
Опять хитроумные формулы не справились (((( У fxsaber-a тоже хитроумная, но видно, что она считает правильнее, может у него скопировать? Но она выходные не учитывает.
Вроде, и не должна.
А может просто в цикле, с даты открытия по дату закрытия пройтись, и начислить за каждый день недели нужный своп ( 1+1+3+1=6 )? Учесть выходные, если надо. Так надежность 100%-ная будет. И не надо голову ломать с формулой без циклов.
Свопы в Тестере начисляются (должны) во время жизни позиции, а не по ее закрытии. Как и в реальности происходит. Если какая-то закрытая позиция получила неправильный своп, надо смотреть, как это происходило во время жизни этой позиции.
template<typename T>
void Func(T &a[], T v)
{
}
voidOnStart()
{
staticconstushort ctrl[] = {'{', '}', '[', ']'};
string str = "a";
Func(ctrl, str[0]); // <-- template parameter ambiguous, could be 'ushort' or 'ushort'
}
Могли бы все-таки и подсказать, что дело в модификаторе const, который во втором параметре неявно затесывается в T. Но справедливости ради, оператор строка[] тоже возвращает const, т.к. строку через него нельзя править. Так что в любом случае неувязочка.
Если за праздники должны браться свопы, значит это тоже баг MQ. Тогда вот примеры, когда тестер MQ не взял свопы: Рождество:
MQ
141
281
100000139
2015.12.23 17:58:35.000
2015.12.28 00:29:23.000
4d 06:30:48.000
218 543.00
EURUSD
buy
1.00
1.08839
1.09704
-2.10 (-2.10)
Среда - понедельник. Должно быть 3+1+1 = 5 свопов. MQ взяло 3 свопа.
По fxsaber формуле
141
141
100000139
2015.12.23 17:58:35.000
2015.12.28 00:29:23.000
4d 06:30:48.000
218 543.00
EURUSD
buy
1.00
1.08839
1.09704
-3.50 (-3.50)
Взято 5 свопов, т.е. правильно.
Ну там вообще куча несовпадений в декабре-январе. Проще GIF анимацией показать:
Но до этого целый год было точное совпадение свопов. И потом еще год до 2016.11.28 совпадает.
Даже если бы расчет свопов был правильным, это не имеет значения, поскольку нет истории свопов. Поэтому используются свопы на момент запуска бэктеста, а не реальные свопы на момент истории. Поэтому результаты свопов Тестера НИКОГДА не соответствуют действительности.
Даже если бы расчет свопов был правильным, это не имеет значения, поскольку нет истории свопов. Поэтому используются свопы на момент запуска бэктеста, а не реальные свопы на момент истории. Поэтому результаты свопов Тестера НИКОГДА не соответствуют действительности.
Предлагаете пользоваться программой, которая неточные данные еще и неверно складывает? Простейшие 1+1+3+1 не могут сложить.... 1-й класс школы! Если в примитивных вычислениях заблудились (как в 3-х соснах), как можно доверять, что в более сложных все в порядке? А то, что история свопов не сохраняется, я в курсе. Пускай складывает последние свопы, но правильно!
Сравнил Свопы тестера MQ и по алгоритму от fxsaber.
Почти полностью совпадают.
В алгоритме от fxsaber за выходные дни 25 дек и 1 янв берутся свопы, как за рабочий день. Тестер MQ за эти дни своп не берет. Не знаю какой вариант правильнее.
И еще в тестере MQ нашлась непонятная ситуация:

Сделка с 28 по 30 ноября прошедшая 2 ролловера (пн-ср) взяла 4 свопа вместо 2-х.
Для воспроизведения можете открыть и закрыть эту сделку по времени.
Могу предположить что *3 своп перенесся с дня благодарения 24 ноября, но там была сделка с 15 по 25 ноября, своп за нее взялся правильно (а не с -2 свопа).
И еще

С 11 по 15 сентября 2017 (пн-пт) прошло 4 дня. Т.к. был проход через четверг, то должно быть 1+1+3+1=6 свопов. Но взято почему то 8.
Опять хитроумные формулы не справились (((( У fxsaber-a тоже хитроумная, но видно, что она считает правильнее, может у него скопировать? Но она выходные не учитывает.
А может просто в цикле, с даты открытия по дату закрытия пройтись, и начислить за каждый день недели нужный своп ( 1+1+3+1=6 )? Учесть выходные, если надо. Так надежность 100%-ная будет. И не надо голову ломать с формулой без циклов. Уже год ломаете... и 3 или 4 попытки исправления было и вот опять надо.
Опять хитроумные формулы не справились (((( У fxsaber-a тоже хитроумная, но видно, что она считает правильнее, может у него скопировать? Но она выходные не учитывает.
Вроде, и не должна.
А может просто в цикле, с даты открытия по дату закрытия пройтись, и начислить за каждый день недели нужный своп ( 1+1+3+1=6 )? Учесть выходные, если надо. Так надежность 100%-ная будет. И не надо голову ломать с формулой без циклов.
Свопы в Тестере начисляются (должны) во время жизни позиции, а не по ее закрытии. Как и в реальности происходит. Если какая-то закрытая позиция получила неправильный своп, надо смотреть, как это происходило во время жизни этой позиции.
Вроде, и не должна.
Если за праздники должны браться свопы, значит это тоже баг MQ.

Тогда вот примеры, когда тестер MQ не взял свопы:
Рождество:
MQ
Среда - понедельник. Должно быть 3+1+1 = 5 свопов.
MQ взяло 3 свопа.
По fxsaber формуле
Взято 5 свопов, т.е. правильно.
Ну там вообще куча несовпадений в декабре-январе. Проще GIF анимацией показать:

Но до этого целый год было точное совпадение свопов. И потом еще год до 2016.11.28 совпадает.
Рождество:
Надеюсь, в Тестере не отслеживаются праздники, т.к. это доп. тормоза из-за ерунды полной.
Начисляются ли в реале свопы на Рождество - надо анализировать историю реала.
Надеюсь, в Тестере не отслеживаются праздники, т.к. это доп. тормоза из-за ерунды полной.
Начисляются ли в реале свопы на Рождество - надо анализировать историю реала.
Вводит в ступор сообщение об ошибке:
Могли бы все-таки и подсказать, что дело в модификаторе const, который во втором параметре неявно затесывается в T. Но справедливости ради, оператор строка[] тоже возвращает const, т.к. строку через него нельзя править. Так что в любом случае неувязочка.
Если за праздники должны браться свопы, значит это тоже баг MQ.
Тогда вот примеры, когда тестер MQ не взял свопы:
Рождество:
MQ
Среда - понедельник. Должно быть 3+1+1 = 5 свопов.
MQ взяло 3 свопа.
По fxsaber формуле
Взято 5 свопов, т.е. правильно.
Ну там вообще куча несовпадений в декабре-январе. Проще GIF анимацией показать:
Но до этого целый год было точное совпадение свопов. И потом еще год до 2016.11.28 совпадает.
Даже если бы расчет свопов был правильным, это не имеет значения, поскольку нет истории свопов. Поэтому используются свопы на момент запуска бэктеста, а не реальные свопы на момент истории. Поэтому результаты свопов Тестера НИКОГДА не соответствуют действительности.
Даже если бы расчет свопов был правильным, это не имеет значения, поскольку нет истории свопов. Поэтому используются свопы на момент запуска бэктеста, а не реальные свопы на момент истории. Поэтому результаты свопов Тестера НИКОГДА не соответствуют действительности.
А то, что история свопов не сохраняется, я в курсе. Пускай складывает последние свопы, но правильно!