Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
MarketInfo(Symbol(),MODE_MARGININIT) = SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)
Что тогда соответствует MODE_MARGINREQUIRED? Или иначе, как узнать размер свободных средств, необходимых для открытия 1 лота на покупку?
В Moving Average.mq5 эксперте от создателей mql5, лоты вычисляются так
Почему MaximumRisk такой маленький (0.02%) и к тому же делится на 1000 при вычислениях лотов? Что это 1000 представляет? Может 1000 = свободные средства, необходимые для покупки 1 лота помноженные на 100% (для перевода 0.02% в дробь 0.0002)? То есть свободные средства на покупку 1 лота равны $10 ($10x100%=1000). В правильном направлении думаю?
И ещё один вопрос. Существует ли ограничение на максимальное количество открытых ордеров?
Что тогда соответствует MODE_MARGINREQUIRED? Или иначе как узнать размер свободных средств, необходимых для открытия 1 лота на покупку?
И ещё один вопрос. Существует ли ограничение на максимальное количество открытых ордеров?
Задавался я этим вопросом.
Вот ответ разработчиков:
Посмотрите
SYMBOL_TRADE_CONTRACT_SIZE
Размер торгового контракта
double
и
SYMBOL_CURRENCY_MARGIN
Валюта в которой вычисляется залоговые средства
string
Как я понимаю самостоятельно придется вычислять
gpwr:
В Moving Average.mq5 эксперте от создателей mql5, лоты вычисляются так
Почему MaximumRisk такой маленький (0.02%) и к тому же делится на 1000 при вычислениях лотов? Что это 1000 представляет? Может 1000 = свободные средства, необходимые для покупки 1 лота помноженные на 100% (для перевода 0.02% в дробь 0.0002)? То есть свободные средства на покупку 1 лота равны $10 ($10x100%=1000). В правильном направлении думаю?
И ещё один вопрос. Существует ли ограничение на максимальное количество открытых ордеров?
Эта строка рассчитывает риск как 2% от размера свободных средств. если я правильно понял. Почему эту сумму делят именно на 1000 это к разработчикам.
Но если я правильно понимаю то при депозите (свободных средствах) в 20,000$ советника рекомендует для открытия брать не более 2% от этой суммы (400$).
Резделив эту сумму на 1000 мы по логике получим лот в 0,4...
gpwr:
Существует ли ограничение на максимальное количество открытых ордеров?
Эта строка рассчитывает риск как 2% от размера свободных средств. если я правильно понял. Почему эту сумму делят именно на 1000 это к разработчикам.
Но если я правильно понимаю то при депозите (свободных средствах) в 20,000$ советника рекомендует для открытия брать не более 2% от этой суммы (400$).
Резделив эту сумму на 1000 мы по логике получим лот в 0,4...
Теперь понял. В коде Moving Average.mq5 описка. Вместо
Нужно
Тогда деление на 1000 в вычислении лотов понятно: $100,000(lot size)/100(leverage) = 1000. Хотя разработчикам mql5 не гоже выставлять такой пример эксперта. Нужно заменить
На
А ещё лучше так
Хотя жалко что потярана MODE_MARGINREQUIRED. Может разработчики восстановят этот параметр чтобы уменьшить количество вычислений.
Короткие имена всегда использовались только для отображения в подокне индикатора
Я не знаю в правильном ли месте я помещаю свои сообщения о багах. Если нет, пожалуйста поправьте меня.
При тестировании своего советника, я специально создал такую ситуацию чтобы посмотерть правильно ли тестер определяет маржу. Итак, депо на 100 долларов. Торгуем EURUSD. Минимальный размер лота 0.1. В советнике такой код на расчёт лотов
Тестер выдаёт такие ошибки
2010.06.08 22:28:57 Core 1 no enough money [instant buy 0.10 EURUSD at 1.19242]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.24, NewFreeMargin: -19.24
2010.06.08 22:28:57 Core 1 1000 100
2010.06.08 22:28:57 Core 1 no enough money [instant buy 0.10 EURUSD at 1.19180]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.18, NewFreeMargin: -19.18
2010.06.08 22:28:57 Core 1 1000 100
2010.06.08 22:28:57 Core 1 no enough money [instant buy 0.10 EURUSD at 1.19362]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.36, NewFreeMargin: -19.36
2010.06.08 22:28:57 Core 1 1000 100
Судя по этим сообщениям, свободные маржа, необходимая для покупки 1 лота, LotRqdMgn, равна 1000, что вроде правильно. Свободная маржа FreeMargin=100. Умножаем 0.1 лот на 1000 и получаем 100. То есть средств достаточно для открытия 1-го лота. Но тестер сообщает что средств недостаточно. Где ошибка?
Судя по этим сообщениям, свободные маржа, необходимая для покупки 1 лота, LotRqdMgn, равна 1000, что вроде правильно. Свободная маржа FreeMargin=100. Умножаем 0.1 лот на 1000 и получаем 100. То есть средств достаточно для открытия 1-го лота. Но тестер сообщает что средств недостаточно. Где ошибка?
Ошибка в том, что Вы забыли о валюте маржи в своих расчетах. Баланс = 100 USD, а маржевые требования = 100 EUR (119 USD).
Поэтому и нельзя совершить операцию - все верно.
Ошибка в том, что Вы забыли о валюте маржи в своих расчетах. Баланс = 100 USD, а маржевые требования = 100 EUR (119 USD).
Поэтому и нельзя совершить операцию - все верно.
Спасибо Ренат. Понял свою ошибку. Изменил формулу расчёта LotRqdMgn и всё тепрь работает правильно.
Новое слово в библиотечном деле или удивительное рядом...
Создал я значит советника который использует библиотеку, проверил, все работает. Сформировал архив в который включил эксперта, эту библиотеку и еще несколько файлов MQL5 и MQH. Отдал архив на тесты заказчику.
И все бы нечего, да решил провести тесты на другом терминале. Распаковал я значит этот архив и захотел эксперта на график прицепить, ага сейчаза (10 раз)...
Причем в журнале терминала вот эти две строки пишутся:
2010.06.10 09:54:51 Experts Expert MechanicalTrading-Infinity-2010 (EURUSD,Daily) removed
2010.06.10 09:54:51 Experts Loading of MechanicalTrading-Infinity-2010 (EURUSD,Daily) failed
Стал разбираться что и как работает (верней не работает) и обнаружил для себя удивительный факт - Терминал видит в каталоге скомпилированную библиотеку (в виде *.ex5) но при этом в том упорно ее "мочит", что по сути как понимаете не очень есть хорошо...
После перебора возможных причин такого поведения терминала решил поместить в каталог с библиотекой оригинальный файл (в виде *.mq5). файл поместил, при этом даже не компилировал его. Попробовал добавить эксперта на график - о чудо, все заработало.
По ходу пьесы у меня созрел ряд вопросов:
1. Почему эксперт не работает если библиотека представлена только в виде .ex5?
2. Почему терминал упорно удаляет этот файл из каталога?
3. Почему в журнале терминала нет внятного комментария по поводу всего вышеперечисленного?
4. Почему в документации не сказано о возможности подобного поведения?
и наконец пятый и заключительный вопрос - как с этим всем бороться и что я делаю не так (можеет терминалу не хватает одного EX5 файла и он ищет что-то, например заголовочник или саму библиотеку)?
PS
Кстати, с самим экспертом такая же фигня происходит, упорно удаляется *.ex5 файл... :(