Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда вышлите мне на renat AT metaquotes . ru полный код эксперта - я самостоятельно протестируюсь, опубликую результаты, а затем удалю код.
Эксперта отправил.
Сообщение "invalid lots amount" выдаётся в том случае, когда количество лотов <=0
Даже из приведённого фрагмента видно, что Вы неправильно используете функции. Что это за код?
Средств не хватает, поэтому Вы не рассчитываете объём. Тем не менее пытаетесь открыть ордер. Всегда!
??????????????????????????????????????????????????????????
Вот Ваша картинка
Ясно виден коммент "Недостаточно средств на счете для открытия ордера"
Что это значит? А то, что функция CalculateVolume не была вызвана. То есть, переменная vol осталась непосчитанной. И если эта переменная не была явно инициализирована, то её значение равно 0.
Вы как ни в чём ни бывало вызываете функцию OrderSend с нулевым значением vol. И получаете ошибку.
Я Вам уже показал на ошибку. Вне зависимости от того, как отработает функция CheckForFreeMarging Вы вызываете функцию OrderSend! При этом может быть использовано непредсказуемое количество лотов.
Представляете, на предыдущей итерации Вы насчитали 10 лотов. На следующей итерации Вы не пересчитаете это количество из-за того, что сработает условие
if (AccountFreeMargin()<a)
Представляете, если после этого Вы откроете позицию с 10 лотами. Что скажет Ваш заказчик?
Зачем мне нужен Ваш эксперт? Я Вам должен исправлять эксперта, который Вы пишете на заказ?
Я Вам уже показал на ошибку. Вне зависимости от того, как отработает функция CheckForFreeMarging Вы вызываете функцию OrderSend! При этом может быть использовано непредсказуемое количество лотов.
Представляете, на предыдущей итерации Вы насчитали 10 лотов. На следующей итерации Вы не пересчитаете это количество из-за того, что сработает условие
if (AccountFreeMargin()<a)
Представляете, если после этого Вы откроете позицию с 10 лотами. Что скажет Ваш заказчик?
Извините, не сразу понял очем речь. Профессионалу достаточно всего одного взгляда, чтобы увидеть неверный код.
Все исправил, журнал чист. Большое спасибо, еще раз извиняюсь за потраченное на меня время.
Век живи, век учись.