Вопрос про маржу.

 

В статье https://www.mql5.com/ru/articles/113 подробно рассказывается про то как начисляется маржа, все понятно, но есть вопросы ... в частности - "зачем так сложно?" :)

НО здесь у меня вопрос другой - ОК, сколько замораживается понятно, но сколько возвращается? Вот вопрос?

Допустим мы продали 1 лот EURUSD - там по системе МТ5 маржа EUR, ок, пересчитали по текущему курсу к валюте счета - получили залог. Допустим 144.81. Через час КУПИЛИ также 1 лот EURUSD - причем НЕ ЗАКРЫЛИ позицию, а именно купили - взяли так же по формуле из статьи вычислили маржу получили скажем 148.23, ОК  но если мы купили , то встречная позиция закрывается и маржа возвращается. :)) То есть должно вернуться сколько? 144.81 - ОК наверное так и вернется - тогда эта цифра не соответствует тому что мы рассчитали.

Получается фигня .

Но вообще-то мне всегда казалось, что при нетто торговле все делается проще - ДЦ для символа  назначает маржу, причем в валюте счета - например 150 баксов за 1 лот по EURUSD  и все. Купили, продали , не важно - цифра одна.

Вот такие дела. :)

Функции для управления капиталом в экспертах
Функции для управления капиталом в экспертах
  • 2010.07.06
  • MetaQuotes Software Corp.
  • www.mql5.com
Разработка торговой стратегии, в первую очередь, заключается в поиске закономерностей для входа в рынок, выхода из рынка и правил удержания позиций. Если найденные закономерности удается формализовать в правила для автоматической торговли, то перед трейдером возникают вопросы по расчету объемов позиций, вычислению размера маржи и поддержанию безопасного уровня залоговых средств для обеспечения открытых позиций в автоматическом режиме. В этой статье мы напишем на MQL5 простые примеры для выполнения этих расчетов.
 
Опять ты. И опять со своей очередной фигней.
 
Academic:

Но вообще-то мне всегда казалось, что при нетто торговле все делается проще - ДЦ для символа  назначает маржу, причем в валюте счета - например 150 баксов за 1 лот по EURUSD  и все. Купили, продали , не важно - цифра одна.

Это так по честному бы было. :)  На практике же, как я понимаю, расчёт происходит по курсу валюты депозита отдельно  на моменты открытия и закрытия позиций. И, как я понимаю, это общепринятая практика.

// Я так понял, что [максимальная] погрешность 1% у hrenfx'а в самопальном тестере, как раз исходит из отказа от синхронного пересчёта прибыли через валюту депо (с целью увеличения быстродействия).

// Как я понял из твоего вопроса, ты тоже этого ни хрена не делаешь. И это правильно. :)

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 

Кстати, тестер автоматически моделирует ради точного расчета профитов на любом участке истории и все связанные валюты для пересчета в валюту депозита.

Это означает, что если выбрать тест на AUDCAD при долларовом депозите, то фоном будет моделироваться и USDCAD:

2011.04.13 23:55:52     127.0.0.1       login (build 425)
2011.04.13 23:55:52     Network 3788 bytes of group info loaded
2011.04.13 23:55:52     Network 3358 bytes of tester parameters loaded
2011.04.13 23:55:52     Network 2436 bytes of input parameters loaded
2011.04.13 23:55:52     Network 275 bytes of selected symbols loaded
2011.04.13 23:55:52     Tester  expert file added: Experts\Examples\Moving Average\Moving Average.ex5. 25872 bytes loaded
2011.04.13 23:55:52     Tester  initial deposit 10000.00 USD, leverage 1:100
2011.04.13 23:55:52     Tester  successfully initialized
2011.04.13 23:55:52     Network 37 Kb of total initialization data received
2011.04.13 23:55:52     TesterAgent     Intel Xeon  X5680 @ 3.33GHz, 24515 MB, PR191
2011.04.13 23:55:52     Symbols AUDCAD: symbol synchronized, 2904 bytes of symbol info received
2011.04.13 23:55:52     History AUDCAD: load 1147 Kb of history data to synchronize
2011.04.13 23:55:52     History AUDCAD: history synchronized from 2010.01.04 to 2011.04.12
2011.04.13 23:55:53     History AUDCAD: contains 367680 M1 records of beginning data from 2010.01.04 00:00 to 2010.12.31 22:58
2011.04.13 23:55:53     History AUDCAD,H1: history cache reserved for estimated 7988 bars
2011.04.13 23:55:53     History AUDCAD,H1: history begins from 2010.01.04 00:00
2011.04.13 23:55:53     Tester  AUDCAD,H1 (MetaQuotes-Demo): 1 minutes OHLC ticks generating. OnTick executed on the bar begin only
2011.04.13 23:55:53     Tester  AUDCAD,H1: testing of Experts\Examples\Moving Average\Moving Average.ex5 from 2011.01.01 00:00 to 2011.04.12 00:00 started with inputs:
2011.04.13 23:55:53     Tester    MaximumRisk=0.02
2011.04.13 23:55:53     Tester    DecreaseFactor=3.00
2011.04.13 23:55:53     Tester    MovingPeriod=12
2011.04.13 23:55:53     Tester    MovingShift=7
2011.04.13 23:55:53     Symbols AUDUSD: symbol to be synchronized
2011.04.13 23:55:53     Symbols AUDUSD: symbol synchronized, 2904 bytes of symbol info received
2011.04.13 23:55:54     History AUDUSD: load 1087 Kb of history data to synchronize
2011.04.13 23:55:54     History AUDUSD: history synchronized from 2010.01.04 to 2011.04.12
2011.04.13 23:55:54     Trade   2011.01.04 17:00:00   instant buy 0.20 AUDCAD at 1.00576 (1.00524 / 1.00576 / 1.00524)
2011.04.13 23:55:54     Symbols USDCAD: symbol to be synchronized
2011.04.13 23:55:54     Symbols USDCAD: symbol synchronized, 2904 bytes of symbol info received
2011.04.13 23:55:55     History USDCAD: load 2571 Kb of history data to synchronize
2011.04.13 23:55:55     History USDCAD: history synchronized from 2010.01.04 to 2011.04.12
2011.04.13 23:55:55     Trades  2011.01.04 17:00:00   deal #2 buy 0.20 AUDCAD at 1.00576 done (based on order #2)

Вкупе с историей спредов достигается точность и повторяемость тестов на истории.

Например, в МетаТрейдер 4 можно было на разных запусках даже при неизменных текущих спредах получить небольшую погрешность на пересчете профитов в валюту депозита у кроссов, но в МетаТрейдер 5 этого уже нет. Он очень чисто считает, хотя ради этого иногда приходится производить в два раза больше моделирование.

 
Renat:

Например, в МетаТрейдер 4 можно было на разных запусках даже при неизменных текущих спредах получить небольшую погрешность на пересчете профитов в валюту депозита у кроссов, но в МетаТрейдер 5 этого уже нет. Он очень чисто считает, хотя ради этого иногда приходится производить в два раза больше моделирование.

Вот, кстати, просто шикарной опцией, была бы возможность отключать пересчёт через валюту депозита.

С полным осознанием создания погрешностей вычисления прибыли/убытков. Зато с ускорением оптимизации более чем вдвое.

// И экономией памяти тоже.

 

Идея бродит : а нельзя ли в самом начале оптимизации из торгуемых валютных пар + валюта депозита, построить соответствующие выбранному плечу синтетики, такие, чтоб при оптимизации не было необходимости пересчитывать прибыль через валюту депозита.

// То бишь вынести валюту депозита за скобки.

Надо завтра с бумажками посидеть посоображать, чего там со спредами/свопами.

Первое впечатление, что задачка решаемая.  Тогда оптимизацию резко ускорить можно будет, причём без потери точности.


 
MetaDriver:

Идея бродит : а нельзя ли в самом начале оптимизации из торгуемых валютных пар + валюта депозита, построить соответствующие выбранному плечу синтетики, такие, чтоб при оптимизации не было необходимости пересчитывать прибыль через валюту депозита.

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

У нас мультивалютный тестер, поэтому нужно общее и универсальное решение.

 
Renat:

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

У нас мультивалютный тестер, поэтому нужно общее и универсальное решение.

Полностью согласен. Лучше пожертвовать быстродействием тестера но получить нормальную работу и универсальность.
 
MetaDriver:

Вот, кстати, просто шикарной опцией, была бы возможность отключать пересчёт через валюту депозита.

С полным осознанием создания погрешностей вычисления прибыли/убытков. Зато с ускорением оптимизации более чем вдвое.

// И экономией памяти тоже.

У меня... :)... - в не самопальном мультивалютном тестере МТ4,  все именно так и делается. Опций если мне память не изменяет только по настройкам - штук 20. Так что если есть интерес, то подождите пару месяцев - я сделаю пре-бетту, и выложу. Там на самом деле огромная работа. Но сейчас я делаю новую версию тестера, заточеенного под чистый С++ ( без МТ4-МТ5  вообще, в том - можно хоть на С++ хоть на МТ4 писать, получается DLL и она загружается как експерт. Вся библиотека МТ4 + можете просто компилировать МТ4-ые индикаторы и добавлять их в виде  библиотеки. Вообщем хрень классная и очень быстрая. Историю строит сама из тиков, тики можно получить из того же МТ4 тестера и все, а можно свои. ) Вообщем, мультивалютный тестер с МТ4 + таже стандартная либа, тестер  на 90% в открытом коде, так что всякие отчеты можно делать хоть вдоль хоть по поперек. Символы можно добавлять в тестирование прямо при прогоне, вообщем - не тестер а мечта. Подождите мне надо доделать просто то что сейчас я делаю. Не делайте самопалов, тот тестер по сути в открытом коде бедет - так что можно добавлять фичь по вкусу.

Но он не конкурет, как я уже писал МТ4- и МТ5 . Так как это не торговый терминал и даже в первую очередь не тестер, а оптимизатор. 


-

Да все считает и свопы и есть встроенная функция для синтетики.