К сожалению, в MQL4 нет параметра, который бы содержал тип рынка (Forex, Metall, CFD. Futures, Indexes). Что ещё хуже, функция MarketInfo() не возращает значение суммы залога за лот. А также, выдаёт ерунду для размера контракта некоторых фьючерсов и индексов. Следовательно, не всегда возможно правильно расчитать максимально допустимый размер открываемой позиции.
Расчет залога за лот для рынка Forex:
string base=StringSubstr(Symbol(),0,3); // базовая валюта инструмента
string currency=AccountCurrency(); // валюта счета
double leverage=AccountLeverage(); // плечо счета
double bid_currency=MarketInfo(base+currency,MODE_BID); // курс базовой валюты по отношению к валюте счета
double lotsize=MarketInfo(Symbol(),MODE_LOTSIZE); // размер контракта в базовой валюте
double lotmargin=bid_сurrency*lotsize/leverage; // залог за лот в валюте счета
Для акций lotmargin тоже можно расчитать, а вот для фьючерсов и торгуемых индексов - никак.
Добавьте для функции MarketInfo(,) константу LOTMARGIN. Или, хотя бы тип рынка MARKETTYPE.
Расчет залога за лот для рынка Forex:
Для акций lotmargin тоже можно расчитать, а вот для фьючерсов и торгуемых индексов - никак.
Добавьте для функции MarketInfo(,) константу LOTMARGIN. Или, хотя бы тип рынка MARKETTYPE.
Будет ли такое?