Оценка маржинальных требований в MQL5 - страница 7

 
Vladimir:

Вы же понимаете, что дело не в коде, тут умеющих пересчитывать - все. Но Вы ведь добавили в список особенностей еще и волатильность, влияние которой выявили фактически. Дальше в лес, больше дров. Как ее-то учитывать? Дело видится совсем безнадежным...

Вообще не понимаю о чем Вы

Это же все описывается в торговых условиях, собственно в правилах торговли

Явление обыденное по существу

Соответственно расчет разный

Но вопрос же решаемый

Как учитывать - предыдущий пост.
 
Renat Akhtyamov:

Вообще не понимаю о чем Вы

Это же все описывается в торговых условиях, собственно в правилах торговли

Явление обыденное по существу

Соответственно расчет разный

Но вопрос же решаемый

Попробую объяснить. Алгоритм такой: ведется наблюдение за несколькими десятками символов в нескольких десятках ДЦ. С каким-то шагом делаются оценки, назову их для простоты ожидаемой прибыльностью сделки на отнимаемую ей маржу. Она разная для каждой пары (символ, ДЦ). В том числе не только на момент открытия сделки. Чтобы выбрать те символ и ДЦ, где будем открывать сделку, требуется сравнить этот показатель. Для этого выбора необходима оценка плеча, в каких границах оно будет в ожидаемый период до закрытия сделки. Ведь придется эту сумму резервировать.

Это программа-максимум. Пока что я даже не знаю, можно ли брать за основу оценки требуемой маржи OrderCalcMargin(). Пусть это лишь маржа для текущего момента. Вы сказали, что с изменением волатильности плечо меняется. Значит, придется собирать статистику - в каких диапазонах меняется в каждом из ДЦ по каждому символу. Или же удастся обнаружить приемлемые диапазоны этих колебаний. Хуже всего будет, если выяснится, что плечо меняется непредсказуемым образом...

Мой вопрос "учитываются ли в функциях OrderCheck() или OrderCalcMargin() указанные в спецификации особенности кредитного плеча" - начальный в этом подходе.
 
Vladimir:

Попробую объяснить. Алгоритм такой: ведется наблюдение за несколькими десятками символов в нескольких десятках ДЦ. С каким-то шагом делаются оценки, назову их для простоты ожидаемой прибыльностью сделки на отнимаемую ей маржу. Она разная для каждой пары (символ, ДЦ). В том числе не только на момент открытия сделки. Чтобы выбрать те символ и ДЦ, где будем открывать сделку, требуется сравнить этот показатель. Для этого выбора необходима оценка плеча, в каких границах оно будет в ожидаемый период до закрытия сделки. Ведь придется эту сумму резервировать.

Это программа-максимум. Пока что я даже не знаю, можно ли брать за основу оценки требуемой маржи OrderCalcMargin(). Пусть это лишь маржа для текущего момента. Вы сказали, что с изменением волатильности плечо меняется. Значит, придется собирать статистику - в каких диапазонах меняется в каждом из ДЦ по каждому символу. Или же удастся обнаружить приемлемые диапазоны этих колебаний. Хуже всего будет, если выяснится, что плечо меняется непредсказуемым образом...

Последний раз пишу:

прочитайте торговые условия у конкретного ДЦ и никакой статистики Вам не нужно будет.

 
Renat Akhtyamov:

Последний раз пишу:

читайте торговые условия у конкретного ДЦ и никакой статистики Вам не нужно будет.

//Мой вопрос "учитываются ли в функциях OrderCheck() или OrderCalcMargin() указанные в спецификации особенности кредитного плеча" - начальный в этом подходе.

текущие

Вы ни разу не видели, когда приходит письмо на почту с уведомлением о снижении плеча, и факторов может быть много, это не только на выборы в странах. Так-же может письмо и не придти - плечо меняют на "лету" на своё усмотрение, могут со 100 установить 20, и всего на несколько часов

 
Vitaly Muzichenko:

Вы ни разу не видели, когда приходит письмо на почту с уведомлением о снижении плеча, и факторов может быть много, это не только на выборы в странах. Так-же может письмо и не придти - плечо меняют на "лету" на своё усмотрение, могут со 100 установить 20, и всего на несколько часов

Виталий, я написал уже алгоритм отслеживания на предыдущей, сам таким пользовался, ибо плечо имел 1:2000

В торговых условиях конкретно указывают пределы изменения плеча, условия, время, при каких условиях вообще не меняют и прочее

На лету тоже меняют, поэтому и отслеживал

 
Vladimir:.
Мой вопрос "учитываются ли в функциях OrderCheck() или OrderCalcMargin() указанные в спецификации особенности кредитного плеча" - начальный в этом подходе.

Простите, Вашими словами:

" дело не в коде, тут умеющих пересчитывать - все"

Скорее всего Вы и себя приписали ко всем.

Считайте и все будет
 

   А может быть, нет в терминале нужных сведений?
   Стал проверять, всякий ли раз терминал отправляет запрос на сервер, или же он проверяет достаточность средств. Из нескольких ДЦ на MT5 нашел лишь один, который в случае нехватки средств протоколирует запросы в две строки, указывая два момента времени. Может быть, потому, что из MT5 это терминал один подключен к реальному счету, остальные MT5 у меня демо. Журнал для 6 ручных попыток открытия сделки:

2018.07.03 04:59:35.231 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 04:59:35.331 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:00:51.667 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 05:00:51.747 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:00:55.001 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 05:00:55.091 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:01:00.008 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:00.091 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
2018.07.03 05:01:02.911 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:03.007 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
2018.07.03 05:01:05.952 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:06.035 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
  
   Промежутки времени между строкой с получением запроса и строкой с ответом No money сервер показал такие (в миллисекундах):  100 80 90 83 96 87.
   При этом показываемый в терминале пинг до сервера 73.56 мс. Зачем терминалу ждать 80 и больше мс, прежде чем решить, что средств недостаточно? Очень похоже, что он все запросы просто отсылает серверу, не проверяя достаточность средств. Почему? Вижу одну естественную причину - в терминале нет нужной для этой проверки информации.
   А я-то был всегда уверен, что сообщение "Недостаточно денег..." дает сам терминал, что это не просто передача решений сервера.

Кажется, точнее всех ответил на мой вопрос Dennis Kirichenko https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, а каким способом Вы предлагали в https://www.mql5.com/ru/forum/261955/page2#comment_7945930 "Запросить у серевера информацию по марже"? Пусть это будет отнимать даже секунду, ладно, но какой запрос к серверу имелся в виду? Неужели просто попытка открыть предполагаемую сделку, для которой и делается предварительная оценка маржи?

 
Vladimir:

   А может быть, нет в терминале нужных сведений?
   Стал проверять, всякий ли раз терминал отправляет запрос на сервер, или же он проверяет достаточность средств. Из нескольких ДЦ на MT5 нашел лишь один, который в случае нехватки средств протоколирует запросы в две строки, указывая два момента времени. Может быть, потому, что из MT5 это терминал один подключен к реальному счету, остальные MT5 у меня демо. Журнал для 6 ручных попыток открытия сделки:

2018.07.03 04:59:35.231 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 04:59:35.331 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:00:51.667 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 05:00:51.747 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:00:55.001 Trades '3038119': market buy 1.26 EURUSD.m
2018.07.03 05:00:55.091 Trades '3038119': failed market buy 1.26 EURUSD.m [No money]
2018.07.03 05:01:00.008 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:00.091 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
2018.07.03 05:01:02.911 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:03.007 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
2018.07.03 05:01:05.952 Trades '3038119': market sell 1.26 EURUSD.m
2018.07.03 05:01:06.035 Trades '3038119': failed market sell 1.26 EURUSD.m [No money]
  
   Промежутки времени между строкой с получением запроса и строкой с ответом No money сервер показал такие (в миллисекундах):  100 80 90 83 96 87.
   При этом показываемый в терминале пинг до сервера 73.56 мс. Зачем терминалу ждать 80 и больше мс, прежде чем решить, что средств недостаточно? Очень похоже, что он все запросы просто отсылает серверу, не проверяя достаточность средств. Почему? Вижу одну естественную причину - в терминале нет нужной для этой проверки информации.
   А я-то был всегда уверен, что сообщение "Недостаточно денег..." дает сам терминал, что это не просто передача решений сервера.

Кажется, точнее всех ответил на мой вопрос Dennis Kirichenko https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, а каким способом Вы предлагали в https://www.mql5.com/ru/forum/261955/page2#comment_7945930 "Запросить у серевера информацию по марже"? Пусть это будет отнимать даже секунду, ладно, но какой запрос к серверу имелся в виду? Неужели просто попытка открыть предполагаемую сделку, для которой и делается предварительная оценка маржи?

Я конечно сильно понимаю Вас

Сам в начале пути простые вещи понимал не с первого раза

В очередной раз, вот маржа за 1 лот на продажу

OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)

а вот на покупку

OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)

Плечо - это коэффициент к ней, не более

к=100/плечо

примерно так

А Ваш журнал Вам сообщает - денег нет, бесплатно открыть не могу

На демо-деньги можно открыть ордер. Однако у Вас нет и демо денег, насколько я понимаю.

Баланс равен нулю, правда?
 
Парни, дайте адрес ДЦ где часто меняется плечо для символа или вообще плечо аккаунта. Или хотя-бы по какому-то символу отдельные условия плеча.
 

ForexClub.

Проверил у них маржу относительно такой лотности с помощью ::OrderCalcMargin(). Реальный счёт, плечо 1:500. 

EURUSDLotPriceVolume value, $Margin, $Theoretical leverage
100 0001.001.16716116 716233.43500

11.001.167161 283 8762 567.75500

51.001.167165 952 51611 905.03500

101.00
1.1671611 788 31623 576.63500


Получилось, что плечо не меняется при росте торгового объёма, что не соответствует Спецификации.