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

mobidik

-----
...а вот ты свой вариант тестировал? Если нет, то нефиг мне претензии писать!

А вот тут я подпишусь за MrGreen86 - предложенный им вариант самой ф-ции прост до безобразия и работает на все 100% - ф-ция всегда вернет значение самого большого тикета и ни как иначе!
 

vlad_123

Местный знаток
А вот тут я подпишусь за MrGreen86 - предложенный им вариант самой ф-ции прост до безобразия и работает на все 100% - ф-ция всегда вернет значение самого большого тикета и ни как иначе!

:)
Накину на вентилятор...
Вообще-то, при мульти-ЕАшной торговле, максимальный номер тикета не обязательно будет номером именно того нужного огрызка.
Естественно, при одном сове, торгующем по нескольким парам, приведенный код будет функциклячить норм.
 

vlad_123

Местный знаток
Дело ведь не в том, сколько вариантов теоретически рабочих, а в том сколько работают.;):D

Приведенный мною код был скопи-пащен из советника, торгующего уже несколько лет, два из которых - на реале, где за последний год только на одном из счетов портфельной торговли назакрывал более 15000 ордеров, большинство из которых - через частичное закрытие.
 

MrGreen86

Гуру форума
Приведенный мною код был скопи-пащен из советника, торгующего уже несколько лет, два из которых - на реале, где за последний год только на одном из счетов портфельной торговли назакрывал более 15000 ордеров, большинство из которых - через частичное закрытие.
при таком количество ордеров врят ли кто-то заметит ошибку такого рода. а она будет. поставьте две отложки(пусть 1,2) на одну цену, дайте им сработать а затем закройте частично любой из двух ордеров(пусть 1). ваша функция вернет не верный тикет (2), а должна возвращать 3.
потому что идет сравнение цены октрытия и времени открытия, а они у ордера 2 и огрызка 3 будут совпадать.
 
Последнее редактирование:

vladradon

Программист
А вот тут я подпишусь за MrGreen86 - предложенный им вариант самой ф-ции прост до безобразия и работает на все 100% - ф-ция всегда вернет значение самого большого тикета и ни как иначе!
Саш, мне эти варианты не интересны - я их не буду испытывать просто тупо потому, что лень. Если нет отчетов, то мне и не интересно...
 

MrGreen86

Гуру форума
:)
Накину на вентилятор...
Вообще-то, при мульти-ЕАшной торговле, максимальный номер тикета не обязательно будет номером именно того нужного огрызка.
Естественно, при одном сове, торгующем по нескольким парам, приведенный код будет функциклячить норм.

я уже дважды выше обьяснял. откуда у вас появятся огрызки с одинаковыми меджиками? у каждого советника разумеется свой magic. огрызок наследует меджик родителя.
 
Последнее редактирование:

vlad_123

Местный знаток
потому что идет сравнение цены октрытия и времени открытия, а они у ордера 2 и огрызка 3 будут совпадать.

А, понял наконец то :)
Да, мой код не предназначен для случаев, когда по одной паре могут быть открыты 2+ ордера по одной цене в течении одной секунды.
У меня торговля ведется на открытии часа, без отложек, поэтому такой случай не рассматривался.
 

vladradon

Программист
я уже дважды выше обьяснял. откуда у вас появятся огрызки с одинаковыми меджиками? у каждого советника разумеется свой magic. огрызок наследует меджик родителя.
Я не буду настаивать, но вот скрин с реального счета Робофорекса, который сделал только что и в котором слева в первом столбце тикеты текущих ордеров, которые были открыты после обгрызки, а в самом правом комментарии from #+тикет того ордера, который был обгрызан. Я там никакой последовательности не вижу.
 

Вложения

  • TestScr1.png
    TestScr1.png
    63,3 КБ · Просмотры: 25
Последнее редактирование:

vladradon

Программист
Кстати, очень неприятная фенька от метаквотов - это коммент у вновь открытого ордера после обгрызки меняется на from #+тикет. Это один из вариантов, который я использую для вычисления нового (обгрызанного) ордера.;)
 

AlexeyVik

Программист mql4 mql5
Кстати, очень неприятная фенька от метаквотов - это коммент у вновь открытого ордера после обгрызки меняется на from #+тикет. Это один из вариантов, который я использую для вычисления нового (обгрызанного) ордера.;)
Это удобно если от "главного" ордера откусили только один раз. А если 3-4 то чтобы добраться до "главного", надо сильно постараться. Достаточно глубоко копать историю и хорошо-бы обойтись без вложенного цикла, учитывая твой снимок и беспорядок в #from тикетах.
Именно поэтому мне понравился вариант проверки цены и времени открытия плюс магик. Озвученная проблема с возможностью получить 2 ордера по одной цене в одно время, да ещё и с одним магиком.... Надо сильно постараться чтобы такое запрограммировать. А если получится, то проблем будет гораздо больше ещё до частичного закрытия.
 

mobidik

-----
Я не буду настаивать, но вот скрин с реального счета Робофорекса, который сделал только что и в котором слева в первом столбце тикеты текущих ордеров, которые были открыты после обгрызки, а в самом правом комментарии from #+тикет того ордера, который был обгрызан. Я там никакой последовательности не вижу.

Кстати, очень неприятная фенька от метаквотов - это коммент у вновь открытого ордера после обгрызки меняется на from #+тикет. Это один из вариантов, который я использую для вычисления нового (обгрызанного) ордера.;)

Это удобно если от "главного" ордера откусили только один раз. А если 3-4 то чтобы добраться до "главного", надо сильно постараться. Достаточно глубоко копать историю и хорошо-бы обойтись без вложенного цикла, учитывая твой снимок и беспорядок в #from тикетах.
Именно поэтому мне понравился вариант проверки цены и времени открытия плюс магик. Озвученная проблема с возможностью получить 2 ордера по одной цене в одно время, да ещё и с одним магиком.... Надо сильно постараться чтобы такое запрограммировать. А если получится, то проблем будет гораздо больше ещё до частичного закрытия.

Начну с того, что учитывать только один "from #+тикет" не достаточно при двух-кратном и более частичном закрытии, нужно отлавливать еще и "to #+тикет". Влад - это вовсе не "очень неприятная фенька", а необходимость, так как при многократном частичном закрытии нужно знать когда остаток был закрыт полностью. Вот остатку и присваивается в комменте "from #+тикет", а предыдущих откусываниях: "to #+тикет". А то, что ты "Я там никакой последовательности не вижу" - так ни кто не увидет - ты вырвал, т.е., показал малую часть ордеров, если пролистаешь - все увидишь.
Вообщем, ниже скрин сделок, отыскал среди терминалов, тестировал в конце прошлого месяца торговую панельку, как раз с возможностью задания процента по закрытию ордеров. Изначально был открыт ордер с лотом 0,1, затем частично закрыт на 50% - имеем ордер в истории с лотом 0,05. Затем и он был частично закрыт на 50%, с округление получили ордер в 0,03 лота, который был потом так же закрыт на 50%, с округление получили ордер в 0,02 лота, который был закрыт полностью. Как видите, у всех ордеров, что были частично закрыты - время и цена открытия - одинаковые, плюс еще символ и меджик - проследить последовательность не составит труда.
Ради справедливости замечу, что проследить можно и по комменту, но коммент это строковое значение и нужно определить что записано перед тикетом ордера: "to #" или "from #", затем получить уже в int-ом виде сам тикет для дальнейших действий. Но, строковые значения дольше обрабатываются терминалом чем интовые (например, мой вариант с массивами) - актуально при оптимизации советников. И еще один не маловажный момент при работе с комментами: если у тебя, Влад, что-то пойдет не так на реальном счете - ты претензию брокеру по поводу коммента ордера, мол, что-то там не так было записано - не выставишь. Во внимание берется тикет, время и лотность.
 

Вложения

  • Частичное закрытие.png
    Частичное закрытие.png
    63,5 КБ · Просмотры: 30

vladradon

Программист
Это удобно если от "главного" ордера откусили только один раз. А если 3-4 то чтобы добраться до "главного", надо сильно постараться. Достаточно глубоко копать историю и хорошо-бы обойтись без вложенного цикла, учитывая твой снимок и беспорядок в #from тикетах.
Именно поэтому мне понравился вариант проверки цены и времени открытия плюс магик. Озвученная проблема с возможностью получить 2 ордера по одной цене в одно время, да ещё и с одним магиком.... Надо сильно постараться чтобы такое запрограммировать. А если получится, то проблем будет гораздо больше ещё до частичного закрытия.
Это вопрос спорный. У меня работает функция, которая грызет самый минусовой ордер по минлоту, если выходит в плюс по всем ордерам всех пар, на которых запущен сов, и продолжает курировать новый ордер, который запустил брокер с новым тикетом. Проверка меджика в этом случае только мешает, хоть она у меня и есть.
 

vladradon

Программист
Влад - это вовсе не "очень неприятная фенька", а необходимость, так как при многократном частичном закрытии нужно знать когда остаток был закрыт полностью. Вот остатку и присваивается в комменте "from #+тикет", а предыдущих откусываниях: "to #+тикет". А то, что ты "Я там никакой последовательности не вижу" - так ни кто не увидет - ты вырвал, т.е., показал малую часть ордеров, если пролистаешь - все увидишь.
Я показал на скрине текущие ордера по всем парам, на которых идет торговля советником, который запущен на текущем счете на каждой паре отдельно, но сам себя куррирует (сколько пар и ордеров в рынке) и на каждой паре сов работает по тикам этой пары, естественно, поэтому и тикеты будут генерироваться для каждого сова каждой пары согласно тикам всех открытых пар и каждый из сов должен курировать свои ордера уже с учетом меджика.
 

vladradon

Программист
Ради справедливости замечу, что проследить можно и по комменту, но коммент это строковое значение и нужно определить что записано перед тикетом ордера: "to #" или "from #", затем получить уже в int-ом виде сам тикет для дальнейших действий.
Это как раз вариант, который я применяю в своем сове. Обработку строкового значения с проверкой что стоит в начале и какой тикет в итоге идет после "from #" можно уместить в одну строку кода.
 
Последнее редактирование:

MrGreen86

Гуру форума
Я не буду настаивать, но вот скрин с реального счета Робофорекса, который сделал только что и в котором слева в первом столбце тикеты текущих ордеров, которые были открыты после обгрызки, а в самом правом комментарии from #+тикет того ордера, который был обгрызан. Я там никакой последовательности не вижу.

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

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

TestScr1.png
 

MrGreen86

Гуру форума
Вот пример другого отчета где видно как это происходит.
видим огрызок 7786748 который является частью ордера 7785762.
Как мы видим время открытия у него такое же как у родительского ордера.
Время когда произошло частичное закрытие можно смотреть у родительского ордера, по времени закрытия (выделил фиолетовым).

Вот и видна вся закономерность.
SNAG-0132.png
 

vlad_123

Местный знаток
У меня работает функция, которая грызет самый минусовой ордер по минлоту, если выходит в плюс по всем ордерам всех пар, на которых запущен сов

В моем сове это зовется GlobalShrink - частичное закрытие старейшей минусовой сделки за счет профита по всем парам, в дополнение к Shrink - закрытию в рамках одной пары.
У GlobalShrink есть неприятная особенность для сеточников а-ля Илан - может спровоцировать разрастание сетки по тем парам, у которых забираются плюсовые ордера.
 

vladradon

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

Вот пример другого отчета где видно как это происходит.
видим огрызок 7786748 который является частью ордера 7785762.
Как мы видим время открытия у него такое же как у родительского ордера.
Время когда произошло частичное закрытие можно смотреть у родительского ордера, по времени закрытия (выделил фиолетовым).
Допустим. А как учесть все возможные задержки по времени, связанные с проскальзыванием или еще хуже с реквотами или командами от брокера о временной приостановке торгов? Если уж даже обычные тейкпрофит или стоплосс брокер на срабатывание может задерживать на любое время.
 
Верх