Скачать MetaTrader 5

Причина неадекватности результатов прогона в тестере на разных счетах...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Sharov
3415
Andrey Sharov 2010.11.19 14:27 

С подачи участника чемпионата 2010 blef (https://championship.mql5.com/2010/ru/users/blef/discussion) попробовал запустить своего чемпионатного эксперта на Alpari-Demo. Кардинальное изменение поведения эксперта (или тестера???) не укладываются у меня в голове...

Да, выяснился глюк в настройке сервера Альпари, который сейчас всегда выдаёт AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) равным нулю и не изменяет AccountInfoDouble(ACCOUNT_FREEMARGIN), значение которого всегда равно величине баланса. Это могло бы объяснить различия в поведении при непосредственной работе эксперта на счёте, но не в тестере...

Анализ кода эксперта показывает, что превысить объём позиции в 0.1 лота (в который он упирается на чемпионате) он мог только в случае, если OrderCalcMargin(ORDER_TYPE_BUY,m_smb,lot,last_tick.ask,marginreq) при тестировании возвращает true и при этом величина требуемой маржи меньше, чем AccountInfoDouble(ACCOUNT_FREEMARGIN), а AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) должен быть меньше 90 (это ляп в коде эксперта). Встаёт вопрос, как и откуда ТЕСТЕР получает значения упомянутых функций - ведь они должны меняться динамически независимо от того, каково их значение на "родительском счёте", откуда, по идее, должны браться только котировки. Не бомбардирует же он сервер запросами, значит, вычисляет сам. Как при этом получаются нули?!

На картинке свойства сравниваемых счетов (незначительные отклонения в цифрах на части, относящейся к MetaQuotes (средства и далее вправо) - побочный эффект редактирования картинки в 2 захода).

Build 355.

PS. Или существуют ещё какие-то свойства счёта, которые не описаны в документации, но учитываются тестером?

Oleg Tsarkov
1296
Oleg Tsarkov 2010.11.21 13:38  

может не в тему, но на днях столкнулся с интересной ситуацией:

случайно сделал ошибку в эксперте типа if (_Symbol=="USDSCHF") {тра ля ля.....}

лищняя буква в названии пары, естественно такой советник не должен делать ни одной сделки, и при проверке в реальности так и оказалось, а вот в тестере при оптимизации "быстрая(генетический алгоритм)" советник начал давать результаты, конечно всякую дурь, что меня и насторожило и я начал вглядываться в код. Короче дело темное...


Andrey Sharov
3415
Andrey Sharov 2010.11.24 19:06  

Проверил: действительно при подключении к AlpariDemo в тестере (билд 355, 358) после вызова OrderCalcMargin(ORDER_TYPE_BUY,m_smb,lot,last_tick.ask,marginreq) значение

marginreq равно нулю, AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) равно нулю.

Поясните тупому, откуда тестер берет эти значения?

PS. Неудачно назвал тему. Как поменять что-то не найду. Следовало бы "В чём причина ... ?"

 

Andrey Sharov
3415
Andrey Sharov 2010.11.25 23:11  

Никто не хочет опровергнуть моё заблуждение, что для расчёта требуемой маржи достаточно знать символ, тип ордера, объём, плечо, котировку и валюту счёта?

 

Vladimir Batrudinov
4928
Vladimir Batrudinov 2010.11.26 04:23  
Ashes:

Проверил: действительно при подключении к AlpariDemo в тестере (билд 355, 358) после вызова OrderCalcMargin(ORDER_TYPE_BUY,m_smb,lot,last_tick.ask,marginreq) значение

marginreq равно нулю, AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) равно нулю.

Поясните тупому, откуда тестер берет эти значения?

PS. Неудачно назвал тему. Как поменять что-то не найду. Следовало бы "В чём причина ... ?"

Ashes:

Никто не хочет опровергнуть моё заблуждение, что для расчёта требуемой маржи достаточно знать символ, тип ордера, объём, плечо, котировку и валюту счёта?

Всю инфу по счету тестер естественно берет из данных по этому счету, все необходимые данные по символу тестер берет из настроек символа.

Данная инфа запрашивается тестером у терминала перед началом тестирования.

Andrey Sharov
3415
Andrey Sharov 2010.11.26 10:37  
Interesting:

Всю инфу по счету тестер естественно берет из данных по этому счету, все необходимые данные по символу тестер берет из настроек символа.

Данная инфа запрашивается тестером у терминала перед началом тестирования. 

Ну, плечо в тестере никак не связано с исходным счётом.

Можете назвать параметр счёта или символа, который приводит к нулевому значению маржи?

Документация по MQL5: Торговые функции / OrderCalcMargin
Документация по MQL5: Торговые функции / OrderCalcMargin
  • www.mql5.com
Торговые функции / OrderCalcMargin - Документация по MQL5
Vladimir Batrudinov
4928
Vladimir Batrudinov 2010.11.26 11:05  
Ashes:

Ну, плечо в тестере никак не связано с исходным счётом.

Можете назвать параметр счёта или символа, который приводит к нулевому значению маржи?

Раньше было привязано, потом форумчане упросили изменить такой порядок (разработчики пошли нам на встречу).

На счет параметров  нужно уточнить. Как я понимаю это: лаверидж - пдечо торгового счета (вроде были проблемы с ним на чемпионате), price - цена открытия (Ask или Bid), volume - объем сделки (в лотах).

Если расчет проводится самостоятельно скорей всего придется контролировать и другие параметры участвующие в расчете..

Alexander Laur
7782
Alexander Laur 2010.11.26 12:04  
Ashes:

Никто не хочет опровергнуть моё заблуждение, что для расчёта требуемой маржи достаточно знать символ, тип ордера, объём, плечо, котировку и валюту счёта?

 

   https://www.mql5.com/ru/articles/113 - хорошая статья. В ней показаны расчеты маржи для прямых, обратных и кроссовых валют. В ней Вы найдете ответ на свой вопрос.
Функции для управления капиталом в экспертах
Функции для управления капиталом в экспертах
  • 2010.07.06
  • MetaQuotes Software Corp.
  • www.mql5.com
Разработка торговой стратегии, в первую очередь, заключается в поиске закономерностей для входа в рынок, выхода из рынка и правил удержания позиций. Если найденные закономерности удается формализовать в правила для автоматической торговли, то перед трейдером возникают вопросы по расчету объемов позиций, вычислению размера маржи и поддержанию безопасного уровня залоговых средств для обеспечения открытых позиций в автоматическом режиме. В этой статье мы напишем на MQL5 простые примеры для выполнения этих расчетов.
Andrey Sharov
3415
Andrey Sharov 2010.11.26 18:57  
papaklass:
   https://www.mql5.com/ru/articles/113 - хорошая статья. В ней показаны расчеты маржи для прямых, обратных и кроссовых валют. В ней Вы найдете ответ на свой вопрос.

Поставлю вопрос по другому: почему одна и та же СТАНДАРТНАЯ  функция расчета маржи (см.выше) на одном счёте в тестере выдаёт некое разумное значение, а на другом - на том же инструменте, на том же периоде - 0?

Из справки MQ5 :

[quote]

OrderCalcMargin 

 ...

margin

 [out]  Переменная, в которую будет записан необходимый размер маржи в случае успешного выполнения функции. Вычисление производится как если бы на текущем счете не было отложенных ордеров и открытых позиций. Значение маржи зависит от многих факторов и может меняться при изменении рыночного окружения.

[/quote]

Что это за таинственные "многие факторы", так фатально влияющие на результат?

Vladimir Batrudinov
4928
Vladimir Batrudinov 2010.11.26 19:03  
Ashes:

Поставлю вопрос по другому: почему одна и та же СТАНДАРТНАЯ  функция расчета маржи (см.выше) на одном счёте в тестере выдаёт некое разумное значение, а на другом - на том же инструменте, на том же периоде - 0?

Из справки MQ5 :

[quote]

OrderCalcMargin 

 ...

margin

 [out]  Переменная, в которую будет записан необходимый размер маржи в случае успешного выполнения функции. Вычисление производится как если бы на текущем счете не было отложенных ордеров и открытых позиций. Значение маржи зависит от многих факторов и может меняться при изменении рыночного окружения.

[/quote]

Что это за таинственные "многие факторы", так фатально влияющие на результат?

Проще на мой взгяд нарыть формулу расчета маржи для стандартных лотов и обсчитать все самостоятельно (с анализам всех вводных), после чего сравнить результат с OrderCalcMargin.

Если я не ошибаюсь из параметров счета (тестера) берется только плечо и валюта депозита, остальное относится к свойствам символа. При этом цена открытия (Ask и Bid), плечо и объем сделки точно могут давать 0 на выходе.

Для примера можно посмотреть калькулятор а Альпари. Там если не ошибаюсь объем лота и плечо выбирается самостоятельно, а все остальное подставляется по данным из торгового окружения по выбранному символу.

PS

Кстати, разработчикам.

Распишите плиз в справке оптимальную формулу расчета мархи и пример самостоятельного расчета плиз добавьте.

Andrey Sharov
3415
Andrey Sharov 2010.11.26 19:25  
Interesting:

Проще на мой взгяд нарыть формулу расчета маржи для стандартных лотов и обсчитать все самостоятельно (с анализам всех вводных), после чего сравнить результат с OrderCalcMargin.

Если я не ошибаюсь из параметров счета (тестера) берется только плечо, остальное относится к свойствам символа. При этом цена открытия (Ask и Bid), плечо и объем сделки точно могут давать 0 на выходе.

Сразу после вызова OrderCalcMargin. Alpari-Demo - Демо-счет

2010.11.26 19:57:20 Core 2 2010.10.04 23:59:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36735 mreq=0
2010.11.26 19:57:20 Core 2 2010.10.04 23:58:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36737 mreq=0
2010.11.26 19:57:20 Core 2 2010.10.04 23:57:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36735 mreq=0
2010.11.26 19:57:20 Core 2 2010.10.04 23:56:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36741 mreq=0
2010.11.26 19:57:20 Core 2 2010.10.04 23:55:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36729 mreq=0

 

MetaQuotes-Demo - Конкурсный счёт - Инвестор

2010.11.26 19:48:13 Core 2 2010.10.04 23:59:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.3675 mreq=136.75
2010.11.26 19:48:13 Core 2 2010.10.04 23:58:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36753 mreq=136.75
2010.11.26 19:48:13 Core 2 2010.10.04 23:57:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.3675 mreq=136.75
2010.11.26 19:48:13 Core 2 2010.10.04 23:56:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36757 mreq=136.76
2010.11.26 19:48:13 Core 2 2010.10.04 23:55:00   ORDER_TYPE_BUY=0 m_smb=EURUSD lot=0.1last_tick.ask=1.36744 mreq=136.74

???

Добавил кусочки журнала для сравнения

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий