Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо.
'SYMBOL_VOLUME_LIMIT' - undeclared identifier.............
'SymbolInfoDouble' - no one of the overloads can be applied to the function call............
Это только у меня так?
'SYMBOL_VOLUME_LIMIT' - undeclared identifier.............
'SymbolInfoDouble' - no one of the overloads can be applied to the function call............
Это только у меня так?
а так можно?
Ещё один вопрос по поводу функции SeriesInfoInteger().
При создании темы "AccountInfo... Актуальность информации" узнал, что есть функции, которые используют данные, "кешируемые в программном окружении", и есть функции, всегда имеющие "прямой доступ к актуальным данным".
К какой категории функций относится функция SeriesInfoInteger() ?
В функции CheckVolumeValue используется следующий код:
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
volume_step,ratio*volume_step);
return(false);
}
Но правильней будет:
int ratio = (int)MathRound((volume-min_volume)/volume_step);
if (MathAbs(ratio*volume_step+min_volume-volume)>0.0000001)
{
description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
volume_step,ratio*volume_step+min_volume);
return(false);
}
Поскольку минимальный шаг изменения объёма должен отсчитываться от минимального значения.
И, пожалуй, фрагмент кода:
//--- вычислим значение маржи
bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);
нужно заменить на:
//--- вычислим значение маржи
double price = (type == ORDER_TYPE_BUY || type == ORDER_TYPE_BUY_LIMIT || type == ORDER_TYPE_BUY_STOP || type == ORDER_TYPE_BUY_STOP_LIMIT) ? last_tick.ask : last_tick.bid;
bool check=OrderCalcMargin(type,Symbol(),lots,price,margin);
В связи с изменениями в MQL5, теперь максимальный общий объем, допустимый для одного символа, можно получить следующим образом:
Не используйте старый вариант! Он выглядел следующим образом:
Статья исправлена, к ней прикреплен новый экспертный код Check_Order_And_Volume_Limits.mq5.Уважаемый админ
Я пытаюсь использовать эту функцию, но она возвращает 0 во всех случаях.
Мой билд MT5 - 2280
double orders_volume_on_symbol=PendingsVolume(symbol);выдает ошибку, нет такой функции
И после того, как я изменил функцию, чтобы не включать отложенные ордера, она дает 0
Это потому, что max_volume равен 0, а open_volume равен 0;
Почему максимальный объем равен 0, если нет открытых позиций?
Build 2715