Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 273
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
уже Вам ответили, что во второй строке этого фрагмента ошибка: Перед вызовом функции OrderType() ордер должен быть выбран с помощью функции OrderSelect().
в строке 3 ошибка: Но есть ли ордер с номером nomber? Если бы минимальный номер был 1, т.е. счет начинался с 1, то максимальный номер был бы равен количеству (пусть всего ордеров 5: номера ордеров 1, 2, 3, 4, 5). Но ордера нумеруются с 0 - Ставим курсор на OrdersHistoryTotal и нажимаем F1, смотрим пример. Так какой максимальный номер ордера?
Ранее Вы предложили делить дату месяца на 7 и округлять, что и сделано во второй таблице.
Я не понимаю Ваш алгоритм.
Сейчас вот что я думаю:
1. Определяем день недели первого числа месяца
2. Узнаем, сколько осталось дней до конца недели (была среда (3) до понедельника 7-3=4)
3. 5 число - начало второй недели
4. дальше в цикле ищем какая неделя, если число попадает в диапазон от 5+7*x до 5+7*(x+1), где х - номер недели за минус первой, то мы нашли неделю
но как то сложно может есть вариант легче?
Алексей, мы говорим о разном. В задаче было определить не в какую неделю месяца входит число месяца, а первый-ли день недели с таким названием в этом месяце. Это разные задачи и соответственно разные решения.
Я за свои 63 года так и не могу понять как считается номер недели в месяце. Допустим считаем как принято в России первый день недели понедельник. Если месяц начинается с воскресенья, то как считать в понедельник??? Началась вторая неделя? Или как??? Вопрос риторический, не надо начинать полемику по этому вопросу.
Алексей, мы говорим о разном. В задаче было определить не в какую неделю месяца входит число месяца, а первый-ли день недели с таким названием в этом месяце. Это разные задачи и соответственно разные решения.
Я за свои 63 года так и не могу понять как считается номер недели в месяце. Допустим считаем как принято в России первый день недели понедельник. Если месяц начинается с воскресенья, то как считать в понедельник??? Началась вторая неделя? Или как??? Вопрос риторический, не надо начинать полемику по этому вопросу.
Понятно. Для меня вопрос определенный...
Алексей, мы говорим о разном. В задаче было определить не в какую неделю месяца входит число месяца, а первый-ли день недели с таким названием в этом месяце. Это разные задачи и соответственно разные решения.
Я за свои 63 года так и не могу понять как считается номер недели в месяце. Допустим считаем как принято в России первый день недели понедельник. Если месяц начинается с воскресенья, то как считать в понедельник??? Началась вторая неделя? Или как??? Вопрос риторический, не надо начинать полемику по этому вопросу.
уже Вам ответили, что во второй строке этого фрагмента ошибка: Перед вызовом функции OrderType() ордер должен быть выбран с помощью функции OrderSelect().
в строке 3 ошибка: Но есть ли ордер с номером nomber? Если бы минимальный номер был 1, т.е. счет начинался с 1, то максимальный номер был бы равен количеству (пусть всего ордеров 5: номера ордеров 1, 2, 3, 4, 5). Но ордера нумеруются с 0 - Ставим курсор на OrdersHistoryTotal и нажимаем F1, смотрим пример. Так какой максимальный номер ордера?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
а теперь правильно?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
а теперь правильно?
напишите скрипт и после каждого оператора выводите на экран информацию + GetLastError() функцией Alert() - посмотрите пример скрипта чуть выше
только для печати лучше код ошибки брать из переменной _LastError, иначе можно лёгким "отладочным принтом" разрушить логику
GetLastError() заодно делает неочевидную вещь для GetXXX() - она меняет внутреннее состояние, сбрасывая код ошибки в 0.
только для печати лучше код ошибки брать из переменной _LastError, иначе можно лёгким "отладочным принтом" разрушить логику
GetLastError() заодно делает неочевидную вещь для GetXXX() - она меняет внутреннее состояние, сбрасывая код ошибки в 0.
ну это дело вкуса - или сохранить код ошибки в переменной и сбросить ошибку или сохранить в _LastError для дальнейшего использования
вот по приведенному выше алгоритму читать снизу вверх