Oxy
..ιllιlι.lι.ιllι.ιlι..

 
Уровень 27

  Торгую в компаниях:


Группа "Кодоводство"

Рейтинг 136



Проверяем плечо и маржу

На этой неделе торговля вас может удивить. Особенно, если у вас все позиции закрыты, и вы открываете новую. У вас может просто не хватить средств на покрытие маржи для новой позиции. Ответ прост — ждем референдума в Великобритании, и поэтому многие брокеры перестраховались и изменили размер плеча до 25, и даже до 10.

Т.е. если у меня при плече 500 и при лоте 0.01 на паре eur/usd маржинальные требования примерно составят 2.26$, то при плече 25 эта цифра будет 45.27!

Но как я не перечитывала несколько раз новость от брокера, так и не поняла, затронут ли изменения конкретно мой счет. Поэтому лучше перестраховаться, и перед открытием позиции всё проверить. Для этого напишем небольшой скрипт.

Итак, создаем в MetaEditor скрипт. Перед функцией OnStart() помещаем входящий параметр — лот, с каким мы торгуем:
#property show_inputs
//------- external parameters ---------------------------------------+
extern double Lot = 0.01; // Лот

В функцию OnStart() записываем следующее:
//---
    double _buyM   = AccountFreeMargin()-AccountFreeMarginCheck(Symbol(), OP_SELL, Lot);
    double _sellM  = AccountFreeMargin()-AccountFreeMarginCheck(Symbol(), OP_BUY, Lot);
    double _marga  = AccountMargin();
    double _SbuyM  = _marga+_buyM;
    double _SsellM = _marga+_sellM;
    Alert("----------------------------------------------------------------------------------------------");
    Alert("SELL лот = ", Lot," маржа: ", DoubleToSubstring(_buyM, 3), "   Итого маржа составит: ", DoubleToSubstring(_SbuyM, 3));    
    Alert("BUY лот = ", Lot," маржа: ", DoubleToSubstring(_sellM, 3), "   Итого маржа составит: ", DoubleToSubstring(_SsellM, 3));
    Alert("Текущая маржа: ", DoubleToSubstring(_marga, 3));
    Alert("Плечо: ", AccountInfoInteger(ACCOUNT_LEVERAGE)); 

И ниже добавляем небольшую функцию, которая округляет дробные числа, когда переводит их в текст:
//+------------------------------------------------------------------+
string DoubleToSubstring (double _toString, int _afterPoint=5) {
  string _txt = (string)_toString;
  int _i      = StringFind(_txt, ".", 0); 
  if(_i!=-1)  
    _txt      =  StringSubstr(_txt, 0, _i+_afterPoint+1);
  return(_txt);
}
//+------------------------------------------------------------------+

Вот, у меня не было открыто позиций, и я проверила плечо и маржу:

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


Сами файлы скрипта:
Info_marga.ex4 (7 Kb)
Info_marga.mq4 (2 Kb)
  • +5
  • Просмотров: 5032
  • 20 июня 2016, 01:09
  • Oxy
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Кодоводство", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник - в основе индикатор ForexLine
Следующая запись в группе  
Закрываем/удаляем все ордера на паре
08 июня 2016
28 июня 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (8)

+
0
НЕ РАБОТАЕТ! *wall*  *girlcry* 
Специально перед открытием сделки проверила:

Открыла сделку и ВОТ:

*shock* 
avatar

  27  Oxy Автор Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 20 июня 2016, 12:28
+
0
скрипт не увидел изменения плеча?
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 20 июня 2016, 13:05
+
0
С плечом ладно, может просто оно изменилось не на всех валютных парах. Но почему вот эта функция не сработала?:
AccountFreeMarginCheck(Symbol(), OP_SELL, Lot)
Она конкретно по символу, на котором запущен скрипт, должна определить сколько свободных средств останется после открытия позиции. Вот она не увидела изменений!
avatar

  27  Oxy Автор Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 20 июня 2016, 14:11
+
+1
у меня скрипт увидел новые ордера и пересчитал маржу сразу же, так что не понятно что за глюк
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 20 июня 2016, 17:35
+
0
Маржу у уже выставленных и у меня видит. А вот предугадать наперед правильно — сегодня не получается у него.
avatar

  27  Oxy Автор Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 20 июня 2016, 18:57
+
+1
Пользовал индикатор в своё время, i-nasa зовётся, в сети найти можно с открытым кодом. Не поможет?
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 20 июня 2016, 19:51
+
+1
формула у меня то верная, тут даже тех поддержка MT4 молчит :D 
явно брокеры как-то хитро изменили плечо
avatar

  27  Oxy Автор Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 20 июня 2016, 21:45
+
+1
Выяснила, если скрипт не работает — причина в брокере ( 
avatar

  27  Oxy Автор Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 21 июня 2016, 02:01

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