Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Разве ж я против? Хочу донести до человека, что в первую очередь важна логика. Сначала нужно определить конечную цель, далее разбить её на подцели и распределить по блокам. В программе, работающей с деньгами, главной целью должна быть надёжность. А значит в первую очередь нужно сделать так, чтобы у нас под рукой всегда находились актуальные данные рыночного окружения. Значит первоочередной задачей должна быть задача поиска нужных данных. Не хранения, а поиска. В этом случае программа будет не зависима от сбоев ОС, терминала, изменений в сортировке на сервере или в терминале и пр.
Если человеку нужно работать с последними тремя ордерами, то их нужно найти - не взять из памяти, а найти. Это первый блок данной задачи. А искать их нужно по времени открытия/закрытия. Далее уже можно сложить данные по этим ордерам во временный массив и, если размер массива не нулевой, то работать с ним - брать из него нужные данные по найденным ордерам.
Остальные блоки задачи нужно так же оформить функциями и работать с ними. Вот потому и говорю - услышать бы конечную цель того, что человек в данном контексте пытается реализовать.
Абсолютно с Вами согласен, меня немножко смутила категоричность насчёт "огорода" (показалось, что Вы как раз таки против выкладывания кода ТС). Цель-то у нас с Вами, надеюсь, одинаковая: понять задачу и подсказать, как реализовать её правильно. Просто лично мне было бы удобней при этом ещё и на текущий код целиком посмотреть, понять ход рассуждений.
Лично я вижу основную проблему так (без детализации) "выставить три ордера и спустя некоторое время к ним обратиться". Не уверен, что это обязательно три последних ордера. Но рассуждать об этом бесполезно, лучше пусть сам автор пояснит.
Способов прописания одного и тогоже думаю не один, и не два, с магиком всё работает. Код достаточно большой, чтобы половину удалить и показать.Главное сделал то,что нужно было. Всем спасибо.
Способов прописания одного и тогоже думаю не один, и не два, с магиком всё работает. Код достаточно большой, чтобы половину удалить и показать.Главное сделал то,что нужно было. Всем спасибо.
Абсолютно с Вами согласен, меня немножко смутила категоричность насчёт "огорода" (показалось, что Вы как раз таки против выкладывания кода ТС). Цель-то у нас с Вами, надеюсь, одинаковая: понять задачу и подсказать, как реализовать её правильно. Просто лично мне было бы удобней при этом ещё и на текущий код целиком посмотреть, понять ход рассуждений.
Лично я вижу основную проблему так (без детализации) "выставить три ордера и спустя некоторое время к ним обратиться". Не уверен, что это обязательно три последних ордера. Но рассуждать об этом бесполезно, лучше пусть сам автор пояснит.
Написал текст выше, не видя Ваше сообщение. Расскажите в двух словах задачу, чтобы мы тут не гадали :)Разве ж я против? Хочу донести до человека, что в первую очередь важна логика. Сначала нужно определить конечную цель, далее разбить её на подцели и распределить по блокам. В программе, работающей с деньгами, главной целью должна быть надёжность. А значит в первую очередь нужно сделать так, чтобы у нас под рукой всегда находились актуальные данные рыночного окружения. Значит первоочередной задачей должна быть задача поиска нужных данных. Не хранения, а поиска. В этом случае программа будет не зависима от сбоев ОС, терминала, изменений в сортировке на сервере или в терминале и пр.
Если человеку нужно работать с последними тремя ордерами, то их нужно найти - не взять из памяти, а найти. Это первый блок данной задачи. А искать их нужно по времени открытия/закрытия. Далее уже можно сложить данные по этим ордерам во временный массив и, если размер массива не нулевой, то работать с ним - брать из него нужные данные по найденным ордерам.
Остальные блоки задачи нужно так же оформить функциями и работать с ними. Вот потому и говорю - услышать бы конечную цель того, что человек в данном контексте пытается реализовать.
Не нужно усложнять, пусть для начала опишет логику. А то в описании одно, а в коде другое. Точнее какая та пурга, с рекурсией
Да чего там описывать?? Вся проблема в том, что при открытии ордера переменной ticket2, объявленной видимо локальной, присваивается тикет, а при вызове функции comment2() эта переменная объявляется заново и соответственно инициализируется нулём. После чего идёт попытка выбрать ордер по тикету 0. А где-же его взять если такого быть не может.
Этот код скопирован из первого поста.
К стати, никогда не пробовал как будет работать если имя функции совпадает с именем одной из локальных переменных? Пробовать желания нету...
Да чего там описывать?? Вся проблема в том, что при открытии ордера переменной ticket2, объявленной видимо локальной, присваивается тикет, а при вызове функции comment2() эта переменная объявляется заново и соответственно инициализируется нулём. После чего идёт попытка выбрать ордер по тикету 0. А где-же его взять если такого быть не может.
Этот код скопирован из первого поста.
К стати, никогда не пробовал как будет работать если имя функции совпадает с именем одной из локальных переменных? Пробовать желания нету...
Я тоже не пробовал, но это называется рекурсия, вызов функции, внутри функции. То что он с ней сделал, это ошибка, так как функция не может быть, переменной и функцией одновременно.
Тикет присваивается ордеру, что бы функция его приняла, должны быть водные параметры, о которых я говорил, а их нет. По этому функция, может только возвращать результат, без его принятия.
В третьих, функция ведет пересчет ордеров, но значение тикет2 может, быть больше чем ордеров. По этому она их никогда не найдет
Дальше фильтр, для сравнения с тикетом. Переименование переменной comment2 в другую переменную хотя бы comment
И вывод этой переменной на return (comment); Ну и изменить тип данных функции на int так как она работает с целым типом. А выводит действительный.Я тоже не пробовал, но это называется рекурсия, вызов функции, внутри функции. То что он с ней сделал, это ошибка, так как функция не может быть, переменной и функцией одновременно.
Тикет присваивается ордеру, что бы функция его приняла, должны быть водные параметры, о которых я говорил, а их нет. По этому функция, может только возвращать результат, без его принятия.
В третьих, функция ведет пересчет ордеров, но значение тикет2 может, быть больше чем ордеров. По этому она их никогда не найдет
Дальше фильтр, для сравнения с тикетом. Переименование переменной comment2 в другую переменную хотя бы comment
И вывод этой переменной на return (comment); Ну и изменить тип данных функции на int так как она работает с целым типом. А выводит действительный.Алексей, ты невнимательно прочёл заголовок темы. "Как выбрать ордер по тикету?" Соответственно основная ошибка в том, что переменная инициализируется нулём внутри функции, хотя вся функция - одна большая ошибка.
Но как я понял вопрос как-то решён и дальнейшее его обсуждение бессмыслено.
Алексей, ты невнимательно прочёл заголовок темы. "Как выбрать ордер по тикету?" Соответственно основная ошибка в том, что переменная инициализируется нулём внутри функции, хотя вся функция - одна большая ошибка.
Но как я понял вопрос как-то решён и дальнейшее его обсуждение бессмыслено.
Вы не с зеркалом разговариваете, да и в друзьях вас пока нет! По этому давайте общаться, через форму уважения "Вы".
В одном старом учебнике по МТ4 был пример функции выбора ордера.
Я малость её реформировал, под собственные нужды, но как пример вполне пригодна.Вы не с зеркалом разговариваете, да и в друзьях вас пока нет! По этому давайте общаться, через форму уважения "Вы".
Я уже отвечал в этой ветке на подобные претензии
Может я и не прав, но придерживаюсь мнения, что "Вежливость придумали для того, чтобы скрыть недостаток добра в отношениях между людьми." Так-что даже на "ты" я вёл эту беседу с полным уважением мнения собеседника.
Alexey Busygin:
В одном старом учебнике по МТ4 был пример функции выбора ордера.
Я малость её реформировал, под собственные нужды, но как пример вполне пригодна.Учебники пишут не для того чтобы научить кого-то, а для того чтобы написать и получить за это чуток денег...
Такое можно написать только для учебника.
Огород зарос капустой...