Разбираю код примера Moving Average. Для начала решил сделать вывод информации о символе.
Насколько я понял SPREAD это разница в минимальных единицах (1.40269-1.40229)/0.00001=40.
Далее есть ACCOUNT_MARGIN_FREE что это? средства на счёте которые никуда не вложены?
Далее я решил посмотреть ценя покупки/продажи символа. Но что-то пошло не так.
OrderCalcMargin
Вычисляет размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении....
Получается, чтобы разместить ордер на покупку 1 единицы символа мне требуется в 1000 раз больше маржи чем его цена?
И что за Contract_size в формуле расчёта? В PositionOpen только поле volume которое судя по всему эквивалентно lots.
Это функция вывода информации в журнал.
Margin Получает размер зарезервированных залоговых средств. double Margin () const Возвращаемое значение Размер зарезервированных залоговых средств в валюте депозита.
![Поиск - MQL5.community Поиск - MQL5.community](https://c.mql5.com/36/17/poisk-mql5-community__3.png)
- www.mql5.com
Да по \Experts\Examples\Moving Average\Moving Average.mq5
Если Margin - размер зарезервированных средств. то получается:
Предположим что покупаю 1 лот по цене 1.40269 и продаю позже по цене 1.40369.
Получается разница в 0.001 и для того, чтобы выполнить эту операцию необходимо 1402 свободных средств на счёте.
0.001/1402=0.00000071 это 0.000071% прибыли.
правильно?
Да по \Experts\Examples\Moving Average\Moving Average.mq5
Если Margin - размер зарезервированных средств. то получается:
Предположим что покупаю 1 лот по цене 1.40269 и продаю позже по цене 1.40369.
Получается разница в 0.001 и для того, чтобы выполнить эту операцию необходимо 1402 свободных средств на счёте.
0.001/1402=0.00000071 это 0.000071% прибыли.
правильно?
А где там в коде Margin?
А где там в коде Margin?
в функции double TradeSizeOptimized(void).
в функции double TradeSizeOptimized(void).
Да, увидел. Так в чём именно вопрос? Только кратко - в такой-то строке не ясен параметр такой-то.
Неясно вообще что это и зачем. В коде по идее в начале рассчитывается размер максимального вложения но разве количество (lots) не должно считаться по формуле lots=текущий_баланс/цена?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Попытался разобрать код примера советника Moving Average. Не понял что за margin.
Vladimir Karputov, 2018.04.26 19:15
Да, увидел. Так в чём именно вопрос? Только кратко - в такой-то строке не ясен параметр такой-то.
Конкретно в этих строках:
if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price)) return(0.0); if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin)) return(0.0); if(margin<=0.0) return(0.0); double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
Как тут производится вычисление lot?
Откуда куда идут данные понятно.
price цена выставления ордера ask.
Но что тут делает margin?
Конкретно в этих строках:
Как тут производится вычисление lot?
Откуда куда идут данные понятно.
price цена выставления ордера ask.
Но что тут делает margin?
Итак, смотрим на определение OrderCalcMargin:
bool OrderCalcMargin( ENUM_ORDER_TYPE action, // тип ордера string symbol, // имя символа double volume, // объем double price, // цена открытия double& margin // переменная для получения значения маржи );
Обратите внимание, на переменную "margin" - она передаётся по ссылке, то есть это Ваша переменная, Вы её передаёте в функцию OrderCalcMargin и если OrderCalcMargin окончила работу с результатом "true", то в переменной "margin" окажется записанный размер маржи для типа ордера "action", символа "symbol", объёмом "volume" по цене "price".
То есть при успешном выполнении OrderCalcMargin запишет в переменную "margin" значение маржи.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Разбираю код примера Moving Average. Для начала решил сделать вывод информации о символе.
Насколько я понял SPREAD это разница в минимальных единицах (1.40269-1.40229)/0.00001=40.
Далее есть ACCOUNT_MARGIN_FREE что это? средства на счёте которые никуда не вложены?
Далее я решил посмотреть ценя покупки/продажи символа. Но что-то пошло не так.
OrderCalcMargin
Вычисляет размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении....
Получается, чтобы разместить ордер на покупку 1 единицы символа мне требуется в 1000 раз больше маржи чем его цена?
И что за Contract_size в формуле расчёта? В PositionOpen только поле volume которое судя по всему эквивалентно lots.
Это функция вывода информации в журнал.