Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то здесь не так:
Надо бы заменить на что-то другое.
Пордоньте, я ошибся, вмест magic нужно использовать идентификатор ордера. Но вопрос где его взять, если в функцию PendingOrderNotFind передается только magic ордера? - Все просто, надо заменить функцию OrderSelect на более выразительную: FindOrderByMagic. Саму эту функцию придется написать самостоятельно. Но зная ее название не трудно догадаться что она должна делать:
Пордоньте, я ошибся, вмест magic нужно использовать идентификатор ордера. Но вопрос где его взять, если в функцию PendingOrderNotFind передается только magic ордера? - Все просто, надо заменить функцию OrderSelect на более выразительную: FindOrderByMagic. Саму эту функцию придется написать самостоятельно. Но зная ее название не трудно догадаться что она должна делать:
Атомную бомбу делаете?
Атомную бомбу делаете?
Да не, просто такой досуг что-ли. А вообще лучше сразу новичков учить писать основательно, потом им же проще будет.
Если Вы считаете, что это основательно, то Вы значительно преуспели - короткую простую функцию разложили на три бессмысленных да еще и с ошибками.
Да не, просто такой досуг что-ли. А вообще лучше сразу новичков учить писать основательно, потом им же проще будет.
Я уже просто выкладывал готовый код из 10 строчек. А тут готовится что-то архи-огромное что бы сложить 1+ 1
Пордоньте, я ошибся, вмест magic нужно использовать идентификатор ордера. Но вопрос где его взять, если в функцию PendingOrderNotFind передается только magic ордера? - Все просто, надо заменить функцию OrderSelect на более выразительную: FindOrderByMagic. Саму эту функцию придется написать самостоятельно. Но зная ее название не трудно догадаться что она должна делать:
Теперь здесь вызов выглядит как-то очень подозрительно:
Что-то тут опять не так.
Я уже просто выкладывал готовый код из 10 строчек. А тут готовится что-то архи-огромное что бы сложить 1+ 1
У вас код меньше но избыточен. Вы используете по крайней мере один лишний цикл и один лишний массив. Поэтому дальше что-либо обсуждать даже не имеет смысла.
Если Вы считаете, что это основательно, то Вы значительно преуспели - короткую простую функцию разложили на три бессмысленных да еще и с ошибками.
После этого даже отвечать не хочется:
Если предыдущий код обернуть условием совершать его только когда количество открытых ордеров меньше пяти, вообще не будет жрать машинное время.)
Но отвечу, написанный код не проверял, поэтому и ошибки. И это хорошо, пусть исправление ошибок станет домашнем заданием.
Теперь здесь вызов выглядит как-то очень подозрительно:
Что-то тут опять не так.
У вас код меньше но избыточен. Вы используете по крайней мере один лишний цикл и один лишний массив. Поэтому дальше что-либо обсуждать даже не имеет смысла.
После этого даже отвечать не хочется:
Но отвечу, написанный код не проверял, поэтому и ошибки. И это хорошо, пусть исправление ошибок станет домашнем заданием.
Блин, ну изменить второй "i" на SELECT_BY_POS.Да, у Vinin код использует ещё один цикл и ещё один массив. Однако, несмотря на это, он всё равно потенциально эффективнее, да ещё и удобнее для последующего использования. Во внутреннем цикле, в котором "стоимость" операций выше, у него используются менее затратные операции - обращение к элементам массива. У вас же циклы переставлены, и во внутреннем цикле используются потенциально более "дорогие" по операции.
Также, его код значительно лаконичнее и значительно понятнее. Выбрано удачное представление данных: для каждого значения magic'а подсчитывается количество текущих ордеров с данным magic'ом. Используя таким образом организованные данные, легко пишется сам код, и потом значительно легче развивать дальнейший код, что у Vinin также продемонстрировано пресловутым вторым циклом. Выходит, что представление данных - основа, и оно важнее кода.
По поводу вашего "блина": это - не последний "блин". Для случая, когда не открыто ни одного ордера, ни одного ордера никогда и не откроется. Функция FindOrderByMagic() в этом случае вернёт false, а функция PendingOrderNotFind() - тоже false, в первой же своей строке:
Следовательно, функция InstallPendingOrder() НЕ вызовется:
if(PendingOrderNotFind(magic)) InstallPendingOrder(magic);
А, ведь, именно эта и только эта функция, которая НЕ вызовется, и ставит ордера. Значит, для случая, когда ордеров нет, их никогда и не будет.
Так что, у кода Vinin есть ещё одно, самое главное преимущество: он работает, и, насколько я могу судить, вполне правильно, если не требовать корректности с абсолютной доскональностью и выжимания максимально возможной эффективности.
Я, когда публикую код, всегда его прогоняю. Всегда. Это - знак элементарного уважения к тем, кто будет пользоваться.
И очень сильно сомневаюсь, что в данном случае новички не только будут искать все эти ошибки, но и в состоянии квалифицированно это сделать, особенно, если это новички уровня начинателя ветки.