Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1598

 
Jack_the_singer #:
 Вот цена золота сейчас, грубо, 5000 баксов за унцию. Размер контракта 100 унций, то есть 100*5000. Плечо у Вас по золоту, к примеру, 20. Ну 5000*100/20 - вот и маржа, плюс минус. Это за лот, в баксах. А за 0.01 лота - в 100 раз меньше.

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

скрипт выдает маржу за 0.01 лот = 17555 руб, а расчет вручную 5090*100/40=12725$, делим на 100 получаем 127.25$,  в рублях умножаем на 75.8 получаем 9645 :))

на если умножить на тот мифический коэффициент 1.81, то примерно получается то же число. осталось только понять, что это за коэффициент такой.

Документация по MQL5: OrderCalcMargin / Торговые функции
Документация по MQL5: OrderCalcMargin / Торговые функции
  • www.mql5.com
Вычисляет размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении без учета текущих отложенных...
 
Jack_the_singer #:
Наверняка это где-то есть и в десктопной версии, просто никогда не искал, так как смотрю в мобильном или в уме прикидываю.
есть, я просто не прокручивал список вниз, в самом низу маржа. но скриптом удобнее все равно :) я сразу исправил в нем на 0.01 лот
 
Max N #:
есть, я просто не прокручивал список вниз, в самом низу маржа. но скриптом удобнее все равно :) я сразу исправил в нем на 0.01 лот

Возьмите вот этот скрипт

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Alexey Viktorov, 2026.01.24 08:52

Вот скрипт не доведённый «до ума»

#define   DEVIATION     5              // допустимое отклонение от цены 
#define   VOLUME        1.0            // объем ордера 
#define   EXPERT_MAGIC  123            // MagicNumber 
#define   DIRECTION     ORDER_TYPE_BUY // направление открываемой позиции (ORDER_TYPE_BUY или ORDER_TYPE_SELL) 
//---
MqlTradeRequest     request= {};
MqlTradeCheckResult check  = {};
MqlTradeResult      result = {};
/*******************Script program start function********************/
void OnStart()
 {
  MqlTick tick; 
  SymbolInfoTick(_Symbol, tick);
  request.action    = TRADE_ACTION_DEAL; // тип торговой операции
  request.symbol    = _Symbol;           // символ
  request.volume    = VOLUME;            // объем
  request.type      = DIRECTION;         // тип ордера
  request.price     = tick.ask;          // цена для открытия
  request.deviation = DEVIATION;         // допустимое отклонение от цены
  request.magic     = EXPERT_MAGIC;      // MagicNumber ордера
  OrderCheck(request, check);
  DebugBreak();
 }/******************************************************************/
/****************************End_program*****************************/

Почти всё взято их документации.

И вот результат:

Из спецификации

Маржа полученная скриптом.

С моей точки зрения это лучший вариант определения маржи.

Проверьте показания со спецификацией. Покажите что получилось.
 
Max N #:
есть, я просто не прокручивал список вниз, в самом низу маржа
А какая? Выше, Вы говорите, было расхождение - 9645 и 17555, к какой ближе значение из терминала? (важно только, чтобы это был именно счёт того самого брокера, и на демо и реальном счёте может быть разное плечо). Вообще, расхождения по формуле могут быть скорее всего из-за ошибочного значения плеча. Вот Вы говорите "вроде 40". Если это росс. контора, то 40 там у квала, а у обычных людей - меньше. Причём 40 - валютное плечо, а на золото оно скорее всего иное. В моём случае - 22, и для квала, и для неквала. Подставьте 22, и скорее всего получите свои 17555)).
 
Max N #:
вроде бы 40
А посмотреть плечо можно на сайте брокера, в разделе Торговые условия >> Маржинальные требования (или, возможно, Спецификация контрактов). Как-то так.
 
Max N #:
на если умножить на тот мифический коэффициент 1.81, то примерно получается то же число. осталось только понять, что это за коэффициент такой.

Коэффициент взимания маржи?

SymbolInfoMarginRate()

Маржа для форекса 

Margin:  Lots * Contract_Size / Leverage * Margin_Rate
 
Max N #:
расчет вручную
 Вот смотрите, у Вас 2 результата, 9645 и 17555. Давайте предположим, что 9645 ошибочный, так как Вы подстааили плечо 40 вместо 22. Исправляемся, 9645*40/22. Получаем 17537, считай, точно в дырочку, плюс-минус курс валюты. Не думайте, что зря тратим время, типа проще скриптом, автопилотом и роботом-пылесосом: имхо, если тут рыбу удить, такие вещи должны в голове лежать на понятных полках. Кстати, пользуясь случаем, раз Вы интересуетесь золотом, добрый совет - не спешите, пожалуйста, переходить на реальный счёт, к торговле на реальные деньги. Золото, имхо - один из самых опасных активов для трейдинга (в том числе своей кажущейся предсказуемостью, растёт же блин, как всё просто... это обманчиво, ну и вообще оно как дикий бык на корриде, выбьет из седла тореодора так, что костей не соберёшь).
 
Jack_the_singer #:
Причём 40 - валютное плечо, а на золото оно скорее всего иное. В моём случае - 22, и для квала, и для неквала. Подставьте 22, и скорее всего получите свои 17555)).

да, посмотрел у брокера(альфафорекс) спецификации, там плечо 22, хотя скрипт My_Account_Info показывает плечо 40.

с плечом 22 тоже правильная цифра получается.

на демо-счете, кстати, другая маржа, чуть меньше 15500 примерно
 
Aleksey Nikolayev #:

Коэффициент взимания маржи?

SymbolInfoMarginRate()

Маржа для форекса 

Margin:  Lots * Contract_Size / Leverage * Margin_Rate
видел эту формулу в хелпе, но не понял как считать размер контракта, и получается что с плечом 40 и помноженным на коэффициент тоже сходится :) возможно брокер уже заранее заложил этот коэффициент в расчет и поэтому пишет плечо 22 в спецификации, хотя в терминале оно 40.
 
Max N #:
скрипт My_Account_Info показывает плечо 40.
Дык я и говорю - фтопку скрипты)). Хотя, может, и есть путёвые).