Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1109
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вопрос актуален, например, для системы обучения. Для получения дистрибутива установите МТ4 на флэшку. Или скопируйте на флэшку папку терминала. Потом эту папку можно копировать на любое количество компьютеров любое количество раз. Полезен такой дистрибутив для целей резервного копирования, резервирования, восстановления... Запускать терминал лучше с ключом /portable иначе на компьютере будут создаваться малоудобные лишние папки. Пространнее этот вопрос рассмотрен в другой теме по ссылке
Как установить?
У меня установщик, который я скачиваю, ничего не устанавливает из интернета.
Запускаю установщик, открывается окошко индикатора загрузки файлов.
А потом появляется другое окошко
Установщик требует чтобы я указал настройки прокси-сервера, которого у меня нет.
Запускаю установщик, открывается окошко индикатора загрузки файлов.
А потом появляется другое окошко
Установщик требует чтобы я указал настройки прокси-сервера, которого у меня нет.
Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера.
Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера.
Нет, конечно. Тикет надо указывать, а не порядковый номер в цикле: OrderDelete(OrderTicket(),clrNONE);
Ну и условие достаточно такое: if(type>1).
И вывод кода ошибки рекомендую почаще делать, помогает.
Ах, да, функции типа "void" ничего не должны возвращать, не нужен return() в штатном исполнении, только при предусмотренном каким-либо условием преждевременном выходе из функции.
Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера.
Имейте в виду, что есть еще недокументированные типы ордеров с type=6 и с type=7 соответственно для операций над балансом и над кредитом счета.
Вместо i<=OrdersTotal() лучше было бы i<OrdersTotal(), без лишнего вызова OrderSelect
И цикл надо проходить от конца к началу. В противном случае, если массив ордеров успел обновиться после удаления i-го элемента в нем, попавший на i-е место бывший i+1-м элемент будет пропущен. Лучше начинать с конца.
Если учесть, что разработчики не гарантируют никакой упорядоченности в массиве ордеров, то, собственно, нет и гарантии того, что последовательность ордеров в их массиве после удаления одного из них сохранится. Совсем надежно было бы сделать так. Крутим цикл до выявления отложенного ордера. Цикл прекращаем. Удаляем найденный ордер. Ждем Sleep (100) для обновления массива ордеров. Затем опять цикл поиска отложенного ордера, уже с новым массивом ордеров. Полный перебор, а не путем возобновления прежнего цикла. И так тройками (цикл поиска, удаление одного ордера, ожидание обновления массива) до момента, когда отложенный ордер найти уже не удастся.
Нет, конечно. Тикет надо указывать, а не порядковый номер в цикле: OrderDelete(OrderTicket(),clrNONE);
Ну и условие достаточно такое: if(type>1).
И вывод кода ошибки рекомендую почаще делать, помогает.
Ах, да, функции типа "void" ничего не должны возвращать, не нужен return() в штатном исполнении, только при предусмотренном каким-либо условием преждевременном выходе из функции.
Спасибо!
Имейте в виду, что есть еще недокументированные типы ордеров с type=6 и с type=7 соответственно для операций над балансом и над кредитом счета.
Вместо i<=OrdersTotal() лучше было бы i<OrdersTotal(), без лишнего вызова OrderSelect
И цикл надо проходить от конца к началу. В противном случае, если массив ордеров успел обновиться после удаления i-го элемента в нем, попавший на i-е место бывший i+1-м элемент будет пропущен. Лучше начинать с конца.
Если учесть, что разработчики не гарантируют никакой упорядоченности в массиве ордеров, то, собственно, нет и гарантии того, что последовательность ордеров в их массиве после удаления одного из них сохранится. Совсем надежно было бы сделать так. Крутим цикл до выявления отложенного ордера. Цикл прекращаем. Удаляем найденный ордер. Ждем Sleep (100) для обновления массива ордеров. Затем опять цикл поиска отложенного ордера, уже с новым массивом ордеров. Полный перебор, а не путем возобновления прежнего цикла. И так тройками (цикл поиска, удаление одного ордера, ожидание обновления массива) до момента, когда отложенный ордер найти уже не удастся.
Т.е. for(OrdersTotal()-1,i=0,i--) и в конце цикла sleep и break?