Не могу рассчитать размер залога для двух пар. Может кто поможет.

 
 
Залог за 1 лот = 100000/leverage по курсу для
USDCAD
USDCHF
Для покупки использовать Ask. Для продажи использовать Bid.

На форуме альпари есть скрипт Инфо в исходнике. Там есть расчет стоимости залога за 1 лот в валюте депозита для любой пары.

Скрипт Инфо.mq4 http://forum.alpari-idc.ru/attachment.php?attachmentid=24380
 
Я решил так:

M_AUDJPY=MarketInfo("AUDJPY",MODE_LOTSIZE)/Leverage*((MarketInfo("AUDUSD",MODE_ASK)+MarketInfo("AUDUSD",MODE_BID))/2);
M_AUDUSD=MarketInfo("AUDUSD",MODE_LOTSIZE)/Leverage*((MarketInfo("AUDUSD",MODE_ASK)+MarketInfo("AUDUSD",MODE_BID))/2);
M_CADJPY=MarketInfo("CADJPY",MODE_LOTSIZE)/Leverage*((MarketInfo("USDCAD",1/MODE_ASK)+MarketInfo("USDCAD",1/MODE_BID))/2);
M_CHFJPY=MarketInfo("CHFJPY",MODE_LOTSIZE)/Leverage*((MarketInfo("USDCHF",1/MODE_ASK)+MarketInfo("USDCHF",1/MODE_BID))/2);
M_EURAUD=MarketInfo("EURAUD",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_EURCAD=MarketInfo("EURCAD",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_EURCHF=MarketInfo("EURCHF",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_EURGBP=MarketInfo("EURGBP",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_EURUSD=MarketInfo("EURUSD",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_EURJPY=MarketInfo("EURJPY",MODE_LOTSIZE)/Leverage*((MarketInfo("EURUSD",MODE_ASK)+MarketInfo("EURUSD",MODE_BID))/2);
M_GBPCHF=MarketInfo("GBPCHF",MODE_LOTSIZE)/Leverage*((MarketInfo("GBPUSD",MODE_ASK)+MarketInfo("GBPUSD",MODE_BID))/2);
M_GBPJPY=MarketInfo("GBPJPY",MODE_LOTSIZE)/Leverage*((MarketInfo("GBPUSD",MODE_ASK)+MarketInfo("GBPUSD",MODE_BID))/2);
M_GBPUSD=MarketInfo("GBPUSD",MODE_LOTSIZE)/Leverage*((MarketInfo("GBPUSD",MODE_ASK)+MarketInfo("GBPUSD",MODE_BID))/2);
M_USDCAD=MarketInfo("USDCAD",MODE_LOTSIZE)/Leverage;
M_USDCHF=MarketInfo("USDCHF",MODE_LOTSIZE)/Leverage;
M_USDJPY=MarketInfo("USDJPY",MODE_LOTSIZE)/Leverage;
 
Средняя цена может не дать нужной точности. Скажем, если захочешь открыть максимально доступное число лотов. Нужно для покупки использовать курс MarketInfo(base+сurrency,MODE_ASK), для продажи - курс MarketInfo (base+сurrency,MODE_BID). А в остальном правильных ход мыслей.

Здесь
base - базовая валюта пары (первые три буквы),
сurrency - валюта счета, обычно USD.

Если base=сurrency, то использовать курс=1. Для USDCHF, USDJPY, USDCAD, и т.д.
 
Спасибо за поддержку. Но сверх точность до центов мне не нужна. И громоздить код не хочется.
 
Точность не бывает сверх. Точность бывает X знаков. Программирование не оперирует примерными понятиями. Оно оперирует истинными и ложными понятиями. - "Седня ты прогрешность дал, а завтра родину продал" (© Л.П.Берия).
 
Точность не бывает сверх. Точность бывает X знаков. Программирование не оперирует примерными понятиями. Оно оперирует истинными и ложными понятиями. - "Седня ты примерно определил курс валюты, завтра родину продал" (© Л.П.Берия).



Потешил. Спасибо.
Для моей задачи достаточная точность.
 
Только скорее будет
M_CHFJPY=Lot*MarketInfo("CHFJPY",MODE_LOTSIZE)/AccountLeverage()*2/(MarketInfo("USDCHF",MODE_ASK)+MarketInfo("USDCHF",MODE_BID));
Причина обращения: