DEAL_ENTRY_TYPE, или вопрос по прочтению истории. - страница 2

 
Vladimir Karputov:

Возможно уже говорил, хотя и не факт, что слово в слово. Мысль такая: "форум это не место где меряются пипками, форум В ПЕРВУЮ ОЧЕРЕДЬ - несёт образовательную нагрузку. Главная цель форума - ДОСТУПНО и НАГЛЯДНО (по возможности по шагам) провести пользователя от начала поставленной задачи к её завершению".

Поэтому решение в три строки (образно) не может быть информативным. Скорее такое решение в три строки (образно) оставит больше вопросов, чем ответов и ещё больше запутает пользователя изучающего MQL5 язык.

Точный ответ на вопрос топикстартера прозвучал

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

DEAL_ENTRY_TYPE, или вопрос по прочтению истории.

fxsaber, 2017.11.19 17:36

2017.11.03 00:00:00   Ticket = 1 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 0 DEAL_ENTRY_IN DEAL_TYPE_BALANCE
2017.11.03 00:00:00   Ticket = 2 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 2 DEAL_ENTRY_IN DEAL_TYPE_SELL
2017.11.03 00:00:00   Ticket = 3 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 3 DEAL_ENTRY_IN DEAL_TYPE_BUY
2017.11.03 00:00:00   Ticket = 4 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 3 DEAL_ENTRY_OUT_BY DEAL_TYPE_SELL
2017.11.03 00:00:00   Ticket = 5 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 2 DEAL_ENTRY_OUT_BY DEAL_TYPE_BUY

При закрытии порождается ДВЕ By-сделки с ID закрывающихся позиций.

 

В принципе вопрос был и про разворот:

AndreyKrivcov:

Исходя из чего я понимаю что ID должен остаться неизменен, однако так ли оно будет ??? Может быть кто нибудь уже сталкивался, либо просто более компетентен в этом вопросе ?

Так что лучше делать пример:

OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0), OrderSend(_Symbol, OP_SELL, 0.5, Bid, 100, 0, 0));

Тогда действительно видим ID оставшейся позиции:

Ticket = 1 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 0 DEAL_ENTRY_IN DEAL_TYPE_BALANCE
Ticket = 2 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 2 DEAL_ENTRY_IN DEAL_TYPE_SELL
Ticket = 3 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 3 DEAL_ENTRY_IN DEAL_TYPE_BUY
Ticket = 4 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 3 DEAL_ENTRY_OUT_BY DEAL_TYPE_SELL
Ticket = 5 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 2 DEAL_ENTRY_OUT_BY DEAL_TYPE_BUY
Ticket = 6 HistoryDealGetInteger(Ticket,DEAL_POSITION_ID) = 3 DEAL_ENTRY_OUT DEAL_TYPE_SELL
 
Благодарю всех форумчан за ответы и помощь. Сейчас для себя более подробный скрипт в тестер напишу по приведенному примеру и продолжу свое дополнение писать. 

Как доделаю, возможно скину всем, потестите может баги найдете какие нибудь, ну и полезен вдруг кому будет.
 

Внимание всем читающим !

Просьба помощи с данными для тестов. Мне нужна выгрузка истории торгов. На своей тестил уже, но хотелось бы побольше возможных вариантов, особенно если у Вас были стоп лимит, лимит, рыночные, отмененные перенесенные и прочие ордера... сделки всех возможных типов, in/out, и прочие... 

Иными словами, помогите кому не сложно, скиньте плиз свою историю здесь, либо на почту (если готовы помочь но не хотите тут выкладывать). Достаточно просто из папки Comon/Files взять файлики которые мои скрипты прикрепленные создают. Буду благодарен всем откликнувшимся. 

Не смотрите что скрипты слишком большие. В них просто объединил для вашего удобства 2 класса, которые для своей "Библиотеки" написал (что бы вам не нужно было по папкам распихивать все и ссылки делать). Один - класс содержащий универсальные массивы (что то вроде самодельного List<T>, самодельный так как не стал разбираться с созданным листом Mql5 и написал свой.) Другой - Класс чтения и записи файлов, читает любой переданный файл и возвращает в удобном виде, так же записывает сам любую переданную инфу в файл. А сама выгрузка в OnStart() находится как увидите из скриптов.

В общем буду благодарен если поможете с информацией для тестирования.

 
AndreyKrivcov:

Просьба помощи с данными для тестов. Мне нужна выгрузка истории торгов. На своей тестил уже, но хотелось бы побольше возможных вариантов, особенно если у Вас были стоп лимит, лимит, рыночные, отмененные перенесенные и прочие ордера... сделки всех возможных типов, in/out, и прочие...

Делайте любые ситуации в тестере.

 
fxsaber:

Делайте любые ситуации в тестере.


Тестер, необходим при алготрейдинге, и конечно же я им пользуюсь. Однако для данных целей, я склонен использовать реально наторгованную историю, объясню по чему. В тестере для симуляции всех возможных ситуаций, придется использовать очень много разных видов роботов. К тому же полноценную историю сделок в нем не насимулируешь, даже если просто запущу одного из своих роботов, то история будет только по одному инструменту, а в реальности история содержит входы, выходы... закрытия во время клиринга и пере открытия (которых в тестере нету), корректировки приходящие с биржи и прочие... (я о ФОРТС говорю). То же самое с ордерами, у меня к примеру нету бота который всее возможные типы ордеров юзал бы, отменял их, перевыставлял, частично отменял, закрывал бы руками и перевыставлял вновь...

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

 
AndreyKrivcov:

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

Напишите такого бота за 15 минут.

 
fxsaber:

Напишите такого бота за 15 минут.

Каким образом смоделировать программно отмену ордера сервером, например?

 
Artyom Trishkin:

Каким образом смоделировать программно отмену ордера сервером, например?

Для отчета такая отмена равносильна клиентской.


Посмотрел исходники, тестер полностью удовлетворит их.

 
fxsaber:

Для отчета такая отмена равносильна клиентской.


Посмотрел исходники, тестер полностью удовлетворит их.


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

Так же уверен есть еще много всего, что сходу я не вспомнил
Причина обращения: