Ваши вопросы по языку MQL4

AlexeyVik

Программист mql4 mql5
Вы уже зае...
Мало того что вы не прислушиваетесь того что предлагают поменять, так ещё и не обращаете внимания на то как вы сделали mql4.

Конкретно.
PHP:
Alert(ObjectName(ObjectsTotal()-1));
Это ж какими бл... тупыми надо быть чтобы сделать порядок в объектах не по времени создания, а по алфавиту? Вы что ебан....?
Василий, а если завтра "Григорию" понадобится сортировка по алфавиту, то опят MQ будут такими-же как их называешь ты... Только и ты вместе с ними будешь таким-же, потому что сделано так по твоему предложению.
Трезв-ли ты сегодня?
 

eevviill

Заблокирован
Василий, а если завтра "Григорию" понадобится сортировка по алфавиту, то опят MQ будут такими-же как их называешь ты... Только и ты вместе с ними будешь таким-же, потому что сделано так по твоему предложению.
Трезв-ли ты сегодня?
Не пъю.
Не. Есть стандарт. Ордера сортируются по дате открытия. Это удобно.
Все остальное должно в том же направлении быть.
 

AlexeyVik

Программист mql4 mql5
Не пъю.
Не. Есть стандарт. Ордера сортируются по дате открытия. Это удобно.
Все остальное должно в том же направлении быть.
Что не пьёшь так это кому как... Одному хорошо, другому плохо... Не пьёт значит либо ... либо ...
Ну не важно. (для меня) А я сейчас не трезв...

А кто этот стандарт утвердил??? Что кому должно???

А прочти-ка нулевой ордер из истории... А потом измени сортировку в закладке "История Счета" и прочти его-же повторно... Какой ты ордер увидишь? Я конечно не утверждаю, но некоторое время назад тикет ордера менялся в зависимости от сортировки списка ордеров истории.
Не стоит пускать пену, проще найти решение проблемы и гордиться собой. Нервы будут крепче.
 

Ugar

Гуру форума
Не пъю.
Не. Есть стандарт. Ордера сортируются по дате открытия. Это удобно.
Все остальное должно в том же направлении быть.
А кто сказал что ордера сортируются по времени открытия? Где написан этот стандарт? Я то же когда то так думал. Как узнал правду пришлось переписывать некоторые функции, для более надёжной работы.
Скажем так, при переборе исторических ордеров, нужно считать что они не сортированы. А ведь никто не обещал, по крайней мере в справочнике я не видел чтоб было написано, что они сортированы и как.

Исторические ордера, закрытие до последнего сеанса работы терминала, сортированы в порядке тикетов. Ордера закрытые в текущем сеансе работы терминала сортированы по времени закрытия.

А мне было бы удобнее, если бы я произносил в микрофон как должен советник работать, а код советник сам писался бы. Мне конечно не пришло в голову требовать такого функционала от метаквотов.
Но я больше года, периодически их долбал что бы сняли ограничение количества тиков при тестировании. И ведь сняли, теперь можно тестировать за длительный срок, на всех тиках, и тест не прерывается прежде указанной даты от превышения количества тиков.
 
Последнее редактирование:

eevviill

Заблокирован
[IMPORTANT][/IMPORTANT]
А кто сказал что ордера сортируются по времени открытия? Где написан этот стандарт? Я то же когда то так думал. Как узнал правду пришлось переписывать некоторые функции, для более надёжной работы.
Скажем так, при переборе исторических ордеров, нужно считать что они не сортированы. А ведь никто не обещал, по крайней мере в справочнике я не видел чтоб было написано, что они сортированы и как.

Исторические ордера, закрытие до последнего сеанса работы терминала, сортированы в порядке тикетов. Ордера закрытые в текущем сеансе работы терминала сортированы по времени закрытия.

А мне было бы удобнее, если бы я произносил в микрофон как должен советник работать, а код советник сам писался бы. Мне конечно не пришло в голову требовать такого функционала от метаквотов.
Но я больше года, периодически их долбал что бы сняли ограничение количества тиков при тестировании. И ведь сняли, теперь можно тестировать за длительный срок, на всех тиках, и тест не прерывается прежде указанной даты от превышения количества тиков.
Что не пьёшь так это кому как... Одному хорошо, другому плохо... Не пьёт значит либо ... либо ...
Ну не важно. (для меня) А я сейчас не трезв...

А кто этот стандарт утвердил??? Что кому должно???

А прочти-ка нулевой ордер из истории... А потом измени сортировку в закладке "История Счета" и прочти его-же повторно... Какой ты ордер увидишь? Я конечно не утверждаю, но некоторое время назад тикет ордера менялся в зависимости от сортировки списка ордеров истории.
Не стоит пускать пену, проще найти решение проблемы и гордиться собой. Нервы будут крепче.
Все ордера и рыночные и исторические сортируются по времени открытия!!!!!!!!!
Не. Даже так.
[IMPORTANT]Все ордера и рыночные и исторические сортируются по времени открытия[/IMPORTANT]

[TIP]Доказать?[/TIP]
 
Последнее редактирование:

ansol

Местный знаток
[IMPORTANT][/IMPORTANT]

Все ордера и рыночные и исторические сортируются по времени открытия!!!!!!!!!
Не. Даже так.
[IMPORTANT]Все ордера и рыночные и исторические сортируются по времени открытия[/IMPORTANT]

[TIP]Доказать?[/TIP]

Ну займись полезным делом, чего бы и нет? ;)
Я почему-то думал, что ордера по номеру тикета сортируются, но номер обычно у всех растет вместе со временем открытия, так что, одно и то же по смыслу получается.
 

ansol

Местный знаток
Только что провёл эксперимент с открытыми ордерами.
С рыночными ордерами та же лабуда. В текущей сессии работы терминала ордера сортированы по номеру тикета, после перезапуска терминала эти же открытые ордера отсортированы по времени открытия.
Вывод, не зря метаквоты нигде в справочнике не указали в каком порядке сортируются ордера.

Так сортировку можно выбрать самому, по идее, от этого должно зависеть, что твой скрипт покажет.
А после перезапуска терминала сортировка сбрасывается в дефолтную, а это уже ихний выпендреж - все настройки сохраняются, а сортировка - нет.
Ну, а прога должна работать всегда одинаково, независимо от сортировки в терминале - тут они опять дали Маху, этому жадному еврею :laugh:
 

Ugar

Гуру форума
Так сортировку можно выбрать самому, по идее, от этого должно зависеть, что твой скрипт покажет.
Не зависит. Скрипт всегда показывает одно и то же при переключении сортировки в окне. Так что, сортировка в оке не влияет на сортировку списка ордеров, доступного программно.
 

eevviill

Заблокирован
Ugar; сказал(а):
Только что провёл эксперимент с открытыми ордерами.
С рыночными ордерами та же лабуда. В текущей сессии работы терминала ордера сортированы по номеру тикета, после перезапуска терминала эти же открытые ордера отсортированы по времени открытия.
Вывод, не зря метаквоты нигде в справочнике не указали в каком порядке сортируются ордера.
А разве номер тикета может быть меньше чем тикет следующего ордера?
Ровно как и время следующего ордера не может быть меньше чем предыдущего.
Вывод. Сортировка ордеров производится по времени открытия ордеров.
 

Ugar

Гуру форума
А разве номер тикета может быть меньше чем тикет следующего ордера?
Ровно как и время следующего ордера не может быть меньше чем предыдущего.
Вывод. Сортировка ордеров производится по времени открытия ордеров.
Студент проводит эксперимент. Взял таракана, положил на стол и скомандовал, ползи. Он пополз. Тогда он оторвал все лапки кроме передних и снова скомандовал, ползи. Он кое как пополз. Тогда он оторвал ещё и передние лапки и скомандовал, ползи. Таракан не ползёт.
Вывод: После отрываний передних лапок таракан не слышит команду. Значит уши у него на передних лапках.

Твой вывод за тараканьи уши притянут.
Сортировка по тикету и по времени открытия не всегда одинакова.
Можешь догадаться почему ордер с большим тикетом может иметь время открытия раньше чем у ордера с меньшим тикетом? Это где то есть в справочнике.
 

eevviill

Заблокирован
Студент проводит эксперимент. Взял таракана, положил на стол и скомандовал, ползи. Он пополз. Тогда он оторвал все лапки кроме передних и снова скомандовал, ползи. Он кое как пополз. Тогда он оторвал ещё и передние лапки и скомандовал, ползи. Таракан не ползёт.
Вывод: После отрываний передних лапок таракан не слышит команду. Значит уши у него на передних лапках.

Твой вывод за тараканьи уши притянут.
Сортировка по тикету и по времени открытия не всегда одинакова.
Можешь догадаться почему ордер с большим тикетом может иметь время открытия раньше чем у ордера с меньшим тикетом? Это где то есть в справочнике.
Гы.
Не, не могу. Просвяти пожалуйста.
Как раз проверю ордера сортируются по тикету или по времени открытия.
 

AlexeyVik

Программист mql4 mql5
А разве номер тикета может быть меньше чем тикет следующего ордера?
Ровно как и время следующего ордера не может быть меньше чем предыдущего.
Вывод. Сортировка ордеров производится по времени открытия ордеров.
Не правильный вывод.
В списке ордеров тикеты имеют тип string по той простой причине, что записаны они в строке. А вот отсюда вывод, что отсортированы ордера по алфавиту.
Тебе не нравится такой вывод? Ну можешь возразить? Только толку от этого не будет
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
Гы.
Не, не могу. Просвяти пожалуйста.
Как раз проверю ордера сортируются по тикету или по времени открытия.
У отложенного ордера время открытия это когда его установили как отложенный. Но когда он срабатывает, его время открытия это время срабатывания.
Попробуй установить отложенные ордера:
№1 например BuyLimit потом
№2 например SellLimit потом
№3 например Buy.
Тогда тикеты у этих ордеров будут в том же порядке как и время открытия №1-№2-№3. Последний ордер как по тикетам, так и по времени открытия №3.

Теперь, не закрывая терминал, дождись когда сработает какой то из отложенных ордеров. Например сработал №1. Его время открытия это время его сработки. Так как он сработал последним, по времени открытия он последний. А по тикетам, самый последний это №3.
Если запустить скрипт из 2 строчек

OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
Comment("Последний открытый ордер ",OrderTicket());

Он покажет что последний ордер это №3. В соответсвии с тикетом, а не с временем открытия.
Вывод: Сортировка по тикетам -преждевременен. Хотя он и доказывает что утверждение сортировка по времени неверно.

Теперь, для полной картины, перезапускаем терминал. И снова запускает этот же скрипт. Он показывает что последний открытый ордер это №1. Но ведь только что он показывал что последний открытый это №3, а теперь что №1.
Получается что сортировка ордеров разная для ордеров открытых в текущую сессию работы терминала и ордеров открытых в прошлые сессии работы терминала, то есть после перезапуска.

Та же ерундистика и с историческими ордерами.

Вывод: Не зря метаквоты нигде в справочнике не написали в каком порядке сортированы ордера в списке. Если программист хочет что бы программа правильно работала, он сам должен позаботиться о нужной ему сортировке. На то ведь он и программист.
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Вероятно, все списки сортируются при запуске МТ, а потом просто добавляется следующая запись без сортировки. И в таком виде хранится до следующего перезапуска МТ.
Это всего-лишь предположение.
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
Вероятно, все списки сортируются при запуске МТ, а потом просто добавляется следующая запись без сортировки. И в таком виде хранится до следующего перезапуска МТ.
Это всего-лишь предположение.
Мне кажется что сортировка ордеров на сервере и в терминале разная. При запуске терминал берёт списки с сервера, с сортировкой сервера. Потом дополняет его добавляя. Хотя, это только предположение. Точно знают только метаквоты. Но раз они не выложили эту инфу в справочник, значит они в любой момент могут изменить сортировку.
Лучше, при написании программ, считать что ордера могут быть отсортированы в любом порядке. Так как в справочнике не указана сортировка.
 

eevviill

Заблокирован
У отложенного ордера время открытия это когда его установили как отложенный. Но когда он срабатывает, его время открытия это время срабатывания.
Попробуй установить отложенные ордера:
№1 например BuyLimit потом
№2 например SellLimit потом
№3 например Buy.
Тогда тикеты у этих ордеров будут в том же порядке как и время открытия №1-№2-№3. Последний ордер как по тикетам, так и по времени открытия №3.

Теперь, не закрывая терминал, дождись когда сработает какой то из отложенных ордеров. Например сработал №1. Его время открытия это время его сработки. Так как он сработал последним, по времени открытия он последний. А по тикетам, самый последний это №3.
Если запустить скрипт из 2 строчек

OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
Comment("Последний открытый ордер ",OrderTicket());

Он покажет что последний ордер это №3. В соответсвии с тикетом, а не с временем открытия.
Вывод: Сортировка по тикетам -преждевременен. Хотя он и доказывает что утверждение сортировка по времени неверно.

Теперь, для полной картины, перезапускаем терминал. И снова запускает этот же скрипт. Он показывает что последний открытый ордер это №1. Но ведь только что он показывал что последний открытый это №3, а теперь что №1.
Получается что сортировка ордеров разная для ордеров открытых в текущую сессию работы терминала и ордеров открытых в прошлые сессии работы терминала, то есть после перезапуска.

Та же ерундистика и с историческими ордерами.

Вывод: Не зря метаквоты нигде в справочнике не написали в каком порядке сортированы ордера в списке. Если программист хочет что бы программа правильно работала, он сам должен позаботиться о нужной ему сортировке. На то ведь он и программист.
Проверил. Так и есть. Ни ты ни я не прав получается.
При текущей по тикету сортирует.
При перезапуске терминала по времени открытия.
Вывод. Тупые метаквоты. Что и требовалось доказать. Сделали ни так ни так. Браво! Ещё запутаней делайте чтобы было про что поговорить.

А может кто скажет что я предложил криминального за что мою тему удалили?
В OrdersTotal() ввести OrdersTotal(int magic=EMPTY,int type=EMPTY)
 

Ugar

Гуру форума
Проверил. Так и есть. Ни ты ни я не прав получается.
В чём же я оказался не прав? По моему я с самого начала советовал, считай что они не сортированы. Так правильнее.
А может кто скажет что я предложил криминального за что мою тему удалили?
В OrdersTotal() ввести OrdersTotal(int magic=EMPTY,int type=EMPTY)
Это подразумевает что все советники в которых используется OrdersTotal() перестанут работать. Это будет равносильно самоубийству метаквотов. С другой стороны, с чего бы им что то менять если и так работает. Ведь можно написать пользовательскую функцию которая это выполнит что хочешь.
А если они начнут менять язык по всем заявкам программстов, только потому что ему так удобнее, то язык будет меняться постоянно. Потому что следущие попросят добавить сортировку по лоту, по комментарию, по символу, по времени...
И что, только потому что кому то хочется поудобнее, все остальные программисты должны изучать каждую неделю новый язык?
А кто мешает программисту написать свою пользовательскую функцию?
Например
int MySuperPuperMegaOrdersTotal(int magic=EMPTY,int type=EMPTY)

Язык полностью удовлетворяет своему назначению. А чего не хватает можно сделать с помощью dll. А для удобства можно же понаписать свои библиотеки, своих функций. Каждому как хочется, такую функцию и пишет. И не зачем язык корёжить.

Изменять в языке стоит только то что неправильно работает. То есть исправлять косяки. Они с этим то не очень хорошо справляются, ку да им до изменений чтоб удобней было.
Любое изменение может привести к непредвиденным косякам. Например, они когда то добавили в терминал возможность работы с 5 значными котировками (10 кратная точность). Так как на такой точности количество тиков стало в несколько раз больше, тестер упёрся в ограничение по количеству тиков. А это ограничение они исправили только через несколько лет. Лучше я напишу лишнюю функцию, чем они что то изменят и из за этого что то не будет работать.
Например, они обещают внести в mql4 функционал mql5. Задумка хорошая. Но вот сколько лет они потому будут исправлять косяки этого гибридного языка?
И как писать надёжную программу на не надёжном языке, я вот не знаю.
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Так есть-же тестовый билд едитора. Я даже посмотрел его. В принципе работает, но для всех mq4 кодов назначил себя программой по умолчанию. Не привычно, что справка как в 5ом, в отдельном окне, я привык к такой справке как сейчас.

Может и мне завести ветку у них на сайте с требованием исправить. Да ещё и в глаза назвать их тупыми и как-то ещё.:D Надо подумать, а то скучно стало перед Новым Годом. :D
 

ansol

Местный знаток
Например, они обещают внести в mql4 функционал mql5.
У них сдвиг на почве объектного ориентирования. Модно так, а у них нет, вот и суют везде.
Так есть-же тестовый билд едитора.
Народу-то надо тестер нормальный, а у них упор на едиторы. В тестере всего-то нужно "мультивалютность", если вы понимаете, о чем я :)

Кстати, вопрос - если я вызываю индюк с периодом в 1000(!), то в тестере сколько баров назад просматривается?
Т.е. я задал тетирование с 30.08, а первая сделка в тестере пошла с 04.09 - значит, тестер сглодал не всю историю, а сколько-то баров назад по своему усмотрению, хотя вся история по всем меньшим таймфреймам имеется куда большая, чем запрашивается в советнике.
И еще: что происходит в тестере, если я запрашиваю индюк на другом ТФ, который больше или меньше того, на котором идет тестирование?
 

eevviill

Заблокирован
В чём же я оказался не прав? По моему я с самого начала советовал, считай что они не сортированы. Так правильнее.

Это подразумевает что все советники в которых используется OrdersTotal() перестанут работать...
С чего єто вдруг? Если просто OrdersTotal() пустой значит считаем все ордера как и раньше. Если OrdersTotal(magic) то считает все ордера по меджику. Если OrdersTotal(magic,OP_BUY) считает ордера с меджиком по типу. Что тут сложного или невозможного??
Всё написать можно. Конечно. Так вообще давай пару функций оставим и из них будем складывать. Ну чтобы не скучно было и по тяжелее. Складывается впечетление что ты консерватор. Если работает, то апгрейд не надо. Если бы так было то сейчас так бы и был каменный век.

И ещё одно. Немного обидно. Не чтобы тоже митинг сделать, метаок обозвать(страницы индексируются) чтобы привлечь внимание. И подтвердить, что да надо хоть по чём то сделать сортировку ордеров для начала. Так нет, всё наоборот. Они правы потому что так надо.
 
Верх