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

Ugar

Гуру форума
Опять майдан... Опять революция...
Майдан, болотная... Собраться толпой, поорать и потолкаться. Что ещё нужно для полного счастья? Разве что OrdersTotal(magic,OP_BUY)

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

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

ansol

Местный знаток
Воевал с метаквотами по поводу ограничения количества тиков при тестировании
Ну и типа, они проблему решили?
А это что тогда:
Код:
2013.12.27 13:39:43	TestGenerator: unmatched data error (volume limit 645 at 2013.11.27 09:15 exceeded)
 

eevviill

Заблокирован
А если у меня нету отложек в советнике, то я смело могу OrdersTotal()-1 использовать как последний ордер?
 

Ugar

Гуру форума
Ну и типа, они проблему решили?
А это что тогда:
Код:
2013.12.27 13:39:43    TestGenerator: unmatched data error (volume limit 645 at 2013.11.27 09:15 exceeded)
Да, решили. А то что ты привёл, это не ограничение тиков, а кривые котировки. Это скорее косяк ДЦ, а не метаквотов.
 

ansol

Местный знаток
Да, решили. А то что ты привёл, это не ограничение тиков, а кривые котировки. Это скорее косяк ДЦ, а не метаквотов.

А в чем конкретно кривость? Ну или как с этим бороться? Не в данном случае конкретно, а в общем?
 

Ugar

Гуру форума
А в чем конкретно кривость? Ну или как с этим бороться? Не в данном случае конкретно, а в общем?
При тестировании на всех тиках, для максимальной точности, тестер использует самый младший тайм фрейм из доступных, для моделирования движения цены. А внутри бара этого самого младшего, моделирует движение цены в зависимости от его формы.
Например я зпускаю тест на H1. Тестер пытается использовать М1, там где нет истории M1, пытается использовать М5... Внутри младшего бара моделирует.
Так вот перед тестом, тестер проверяет насколько совпадают младшие котировки с заданным мной.
Например на моём Н1 цена закрытия бара должна совпасть с ценой закрытия последнего бара младшего тайм фрейма входящего в бар старшего. Если не совпадает Выдаёт ошибку. То же со всеми другими параметрами бара заданного тайм фрейма.
Конкретно приведённая тобой ошибка говорит что сумма объёмов баров младшего таймфрейма не соответствует объёму бара старшего, в который вошли эти младшие.
Запутано написал. Попробую так. В бар H1 входит 60 баров М1. Сумма объёмов этих младших баров должна быть равна объёму старшего H1. Если не совпадает, выдаётся такая ошибка. Эта ошибка может говорить о кривых котировках или о дыре в них.
Идеальные котировки будут если скачать М1, а остальные тайм фреймы пересчитать из М1. Тогда точно будет всё совпадать. В реальности идеальных котировок не существует.
Это всё конечно для модели "все тики".
На модели "по ценам открытия" таких ошибок не будет, так как используется история только заданного тайм фрейма. Но для этого теста советник должен работать по ценам открытия.
 

ansol

Местный знаток
Ugar
Я понял. На тестируемом участке М1 существует, если оно "моделирует" верхний ТФ(М15 у меня), то какое ему дело до того, что там с кем совпадает? Зачем ему еще и М5 и М15 - до кучи? Какое-то подозрительное моделирование :)
И если я вызываю индюк с М1 или Н1, то будет работать в тестере или будет только М1, а Н1 нет?
 

AlexeyVik

Программист mql4 mql5
А если у меня нету отложек в советнике, то я смело могу OrdersTotal()-1 использовать как последний ордер?
Я не понимаю почему не хочешь объявит на глобальном уровне 2е переменные int TicketBuy, TicketSell; и при открытии ордера
TicketBuy = OrderSend( открываем бай );
TicketSell = OrderSend( открываем сел);
И пока не откроешь новый ордер последним по типу будет тот который в переменной. Его по тикету можешь выбрать, прочесть время открытия и не закрыт-ли он.
Василий, ты сам себе создаёшь трудности и обвиняешь в этих трудностях MQ.
 

Ugar

Гуру форума
Ugar
Я понял. На тестируемом участке М1 существует, если оно "моделирует" верхний ТФ(М15 у меня), то какое ему дело до того, что там с кем совпадает? Зачем ему еще и М5 и М15 - до кучи? Какое-то подозрительное моделирование :)
Допустим нужен М15. Смотрим на бар, но не известно же как двигалась цена внутри этого бара. А надо ведь смоделировать до тиков. Как узнать движение цены внутри М15 бара? Да очень просто, нужно посмотреть как расположены бары самого маленького тайм фрейма. Это вроде даже визуально понятно. То есть имея М1 можно точно смоделировать движение цены внутри М15 бара. А вот как двигалась цена внутри М1 бара, по тиково, нигде не зафиксировано. Нет тиковой истории в терминале. Тестеру приходится сочинять тиковое движение цены внутри М1 бара.
Моделирование действительно странное, потому что моделирование.
Было бы гораздо круче, если бы терминал писал тиковую историю. И тестер мог бы не моделировать (сочинять), а работать на реальной тиковой истории. Но, когда был выпущен МТ4, компьютеры были дохленькие и FAT32 на дисках. Тяжёлое детство, деревянные игрушки.
Эти компы просто повисли бы от таких нагрузок. А FAT32 не позволил бы сохранять длинную историю, максимальный размер файла был 2 Gb.
А вот почему в МТ5 тиковой истории нет и тестер всё так же "моделирует", мне не понятно. Компы уже тогда могли переварить работу с реальными тиками. Они в MT5 повторили все недостатки MT4 b ещё добавили своих. А укарашательство, доступное в МТ5 серьёзным трейдерам не надо, это всё фетиш. Им надо чтоб бабло зарабатывалось.
И если я вызываю индюк с М1 или Н1, то будет работать в тестере или будет только М1, а Н1 нет?
Индикатор, на не родном тайм фрейме, работает нормально в тестере только на сформированных барах. Тестер им ничего не моделирует, просто даёт указанные бары указанного тайм фрейма.
 

ansol

Местный знаток
Индикатор, на не родном тайм фрейме, работает нормально в тестере только на сформированных барах.
Что такое "сформированные" бары? Которые в истории есть?
Так ведь в истории есть и бары по другой паре(не той, что тестируемая) - он и их возьмет? o_O
 

Ugar

Гуру форума
Что такое "сформированные" бары? Которые в истории есть?
Так ведь в истории есть и бары по другой паре(не той, что тестируемая) - он и их возьмет? o_O
Вообще то в тестере будет работать индикатор с любыми барами любой пары, даже если они не родные.
Но на не сформированном баре (текущий [0]) тестер не моделирует его его изменения в процессе формирования, а берёт целиком бар из истори.
В итоге враки. Это надо учитывать.
Не надо удивляться. Даже если советник в тестере запущен на EURUSD H1, а в нём используется индикатор вкотором указано жёстко USDCHF H4, работать будет. Тестер не сможет работать с ордерами USDCHF, а индикаторы вполне работают. Главное что бы была история для этих индикаторов.
 

ansol

Местный знаток
Ugar
Ну все расписал, спасибо, мне это нужно для понимания результатов тестера и будущих экспериментов :)
 

eevviill

Заблокирован
Я не понимаю почему не хочешь объявит на глобальном уровне 2е переменные int TicketBuy, TicketSell; и при открытии ордера
TicketBuy = OrderSend( открываем бай );
TicketSell = OrderSend( открываем сел);
И пока не откроешь новый ордер последним по типу будет тот который в переменной. Его по тикету можешь выбрать, прочесть время открытия и не закрыт-ли он.
Василий, ты сам себе создаёшь трудности и обвиняешь в этих трудностях MQ.
Я хочу чтобы было проще. Тоесть чтобы была сортировка по времени открытия.
 

Ugar

Гуру форума
Ugar
мне это нужно для понимания результатов тестера и будущих экспериментов :)
Я бы сказал что всем нужно знать инструмент, которым пользуются. Тестер, как и любой другой инструмент, облегчает работу. Но любым инструментом нужно уметь пользоваться, учитывать все ограничения и погрешности. Иначе можно легко себя обмануть красивыми циферками.
 

Ugar

Гуру форума
Я хочу чтобы было проще. Тоесть чтобы была сортировка по времени открытия.
Ты что последнюю в жизни программу пишешь? А может потом сортировка по времени открытия будет не удобна, а удобна будет по тикету. А потом захочется сортировку по какому то другому параметру.
Можно требовать от метаквотов функцию сортировки списка ордеров по указанному параметру в указанном порядке убывания\возрастания.
Может даже они прислушаются и через пару лет добавят эту функцию, а может и нет.
Мне проще решить этот вопрос написав себе необходимую функцию, чем мучить годами метаквотов с неизвестным результатом.
 

AlexeyVik

Программист mql4 mql5
Да хватит уже Андрей. Хотеть-то не вредно, вредно не хотеть. Да и признаться, что ступил стыдно. Пусть как есть останется.
 
  • Like
Реакции: Ugar

eevviill

Заблокирован
Да хватит уже Андрей. Хотеть-то не вредно, вредно не хотеть. Да и признаться, что ступил стыдно. Пусть как есть останется.
Ты что последнюю в жизни программу пишешь? А может потом сортировка по времени открытия будет не удобна, а удобна будет по тикету. А потом захочется сортировку по какому то другому параметру.
Не хотел бы иметь таких друзей, напарников и т.д. как вы.
 

qqmber

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

Что-то у тебя настроение какое-то не праздничное.
Случилось что?
Угар тут рассказывает вещи, которые мало где еще прочитать можно, а ты уперся в свою сортировку и сидишь надутый.
Язык mql, как любой инструмент, должен давать возможность писать решения, а не предлагать готовые на все случаи жизни.
С наступающим!
Q.
 
Верх