Клиринг в тестере - страница 5

 
JRandomTrader #:

Но! При работе на ФОРТС не стоит полагаться на данные о позиции.

У меня роботы ведут учёт своих сделок и помнят исходную цену открытия позиции (а не после последнего клиринга), и от неё считают прибыль, СЛ, ...

Кстати, ещё почему не надо полагаться на данные о позиции: на ФОРТС неттинг, а на одном символе может торговать несколько роботов плюс ручная торговля. И что практически полезного можно получить из этой совокупной позиции?

Так что каждый робот помнит и "ведёт" свою позу.

 
JRandomTrader #:

Я же показал.  Берём эту последнюю усреднённую цену и объём позы, цену новой сделки и её объём. Всё посчитается правильно.

да, да, щас понял... после того как сам поинтересовался - понял :-)
 
JRandomTrader #:

Кстати, ещё почему не надо полагаться на данные о позиции: на ФОРТС неттинг, а на одном символе может торговать несколько роботов плюс ручная торговля. И что практически полезного можно получить из этой совокупной позиции?

Так что каждый робот помнит и "ведёт" свою позу.

спс. Там же естественно все эти рыночные сделки и позы - СОНАПРАВЛЕННЫ? (В ОДНОМ НАПРАВЛЕНИИ)?
 
Roman Shiredchenko #:
спс. Там же естественно все эти рыночные сделки и позы - СОНАПРАВЛЕННЫ? (В ОДНОМ НАПРАВЛЕНИИ)?

У роботов могут быть разные стратегии, по тренду и против, они могут работать на разных таймфреймах, так что позы могут быть в любую сторону. А в МТ видно только "общую".

 
JRandomTrader #:

У роботов могут быть разные стратегии, по тренду и против, они могут работать на разных таймфреймах, так что позы могут быть в любую сторону. А в МТ видно только "общую".

т.е. там по сути можно просто вести выделенный учет торговли по каждому направлению и все... :-)

Это жестко конечно... все виртуально - все плюса и минуса. Общая то одна позиция... Неттинговая.

Это конечно, издевательство - если все это делать на одном инструменте...

 
Roman Shiredchenko #:

т.е. там по сути можно просто вести выделенный учет торговли по каждому направлению и все... :-)

Это жестко конечно... все виртуально - все плюса и минуса. Общая то одна позиция... Неттинговая.

Это конечно, издевательство - если все это делать на одном инструменте...

А тут вариантов-то немного. Или один "идеальный" робот на символе, или диверсификация - несколько реальных.

 
JRandomTrader #:

А тут вариантов-то немного. Или один "идеальный" робот на символе, или диверсификация - несколько реальных.

можно еще общий момент: по-мимо переноса цен открытия у  позиции совокупной после клиринга, какие-о еще есть "скрытые" подводные камни на которые стоит обратить внимание при торгах?

Там по сути комиссию, свопы - считаю их видно. Да и по истории считать можно сделок и позиций... (это чтобы по условию торгового алгоритма актуальная позиция или ее части - крылись ТОЛЬКО в плюса!)

На что еще по Вашему мнению обратить внимание при торгах?

 
Roman Shiredchenko #:

можно еще общий момент: по-мимо переноса цен открытия у  позиции совокупной после клиринга, какие-о еще есть "скрытые" подводные камни на которые стоит обратить внимание при торгах?

Там по сути комиссию, свопы - считаю их видно. Да и по истории считать можно сделок и позиций... (это чтобы по условию торгового алгоритма актуальная позиция или ее части - крылись ТОЛЬКО в плюса!)

На что еще по Вашему мнению обратить внимание при торгах?

Та комиссия, что видна в сделке - это только комиссия биржи. Комиссия брокера в сделке не видна. По крайней мере, у открывашки это так.

Сделки я смотрю по OnTrade (или OnTradeTransaction), сразу обсчитываю и пишу в стейт и в лог.

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

 
JRandomTrader #:

Та комиссия, что видна в сделке - это только комиссия биржи. Комиссия брокера в сделке не видна. По крайней мере, у открывашки это так.

Сделки я смотрю по OnTrade (или OnTradeTransaction), сразу обсчитываю и пишу в стейт и в лог.

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

Спасибо!!!
 

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

в общем, как понять, что цикл ордеров, новая позиция - ПРОФИТНАЯ началась НОВАЯ - для учета средней цены открытия позиции (клиринг ее меняет значение):

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

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

Можно, исп-ть данные отсюда + например, время считывать, когда предыдущая позиция закрылась в профит и уже оттуда брать разность с настоящим временем сервера, типа если я сам цикл начну с терминала - без магика:

ну то есть типа этого:

// --- определение границ требуемой торговой истории
   datetime end=TimeCurrent();                 // текущее серверное время
   datetime start=end-PeriodSeconds(PERIOD_D1);// установим начало на сутки назад
типа прошлая позиция в плюс - то уже учет актуальный цикла начался. и ордера - надо уже считать и цену входа и объем для расчета средней цены входа в совокупную позицию...

https://www.mql5.com/ru/articles/211


Получение информации по ордерам из истории

Работа с историческими ордерами почти ничем не отличается от работы с действующими ордерами за одним только исключением. Если количество действующих ордеров в кэше mql5-программе не может быть больше одного, то результат HistoryOrdersTotal() и количество  исторических ордеров в кэше зависит от того, какой объем торговой истории был загружен функцией HistorySelect(start, end), HistorySelectByPosition() или HistoryOrderSelect().
Важно: если торговая история не была загружена в кэш mql5-программы одной из функций  HistorySelect(), HistorySelectByPosition() или HistoryOrderSelect(), то работать с историческими ордерами и сделками невозможно. Обязательно запрашивайте требуемую историю сделок и ордеров перед получением данных по торговой истории.

Для примера приведен скрипт, который ищет последний ордер за последний день и выводит по нему информацию. 

// --- определение границ требуемой торговой истории
   datetime end=TimeCurrent();                 // текущее серверное время
   datetime start=end-PeriodSeconds(PERIOD_D1);// установим начало на сутки назад
//--- запросим в кэш программы торговую историю за день
   HistorySelect(start,end);
//--- получим количество ордеров в истории
   int history_orders=HistoryOrdersTotal();
//--- получим тикет ордера из истории, имеющего последний индекс в списке
   ulong order_ticket=HistoryOrderGetTicket(history_orders-1);
   if(order_ticket>0) // получили в кэш исторический ордер, работаем с ним
     {
      //--- статус ордера
      ENUM_ORDER_STATE state=(ENUM_ORDER_STATE)HistoryOrderGetInteger(order_ticket,ORDER_STATE);
      long order_magic      =HistoryOrderGetInteger(order_ticket,ORDER_MAGIC);
      long pos_ID           =HistoryOrderGetInteger(order_ticket,ORDER_POSITION_ID);
      PrintFormat("Ордер #%d: ORDER_MAGIC=#%d, ORDER_STATE=%d, ORDER_POSITION_ID=%d",
                  order_ticket,order_magic,EnumToString(state),pos_ID);

     }
   else              // неудачная попытка получения ордера

     {
      PrintFormat("Всего в истории %d ордеров, не удалось выбрать ордер"+
                  " с индексом %d. Ошибка %d",history_orders,history_orders-1,GetLastError());
     }

--------------------------------------------------------------

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

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

Ордерa, позиции и сделки в MetaTrader 5
Ордерa, позиции и сделки в MetaTrader 5
  • www.mql5.com
Надежный торговый робот не может быть создан без понимания механизмов работы торговой системы MetaTrader 5. Клиентский терминал получает от торгового сервера информацию о позициях, ордерах и сделках. Чтобы правильно обработать эти данные средствами MQL5 необходимо хорошо представлять как происходит взаимодействие mql5-программы и среды исполнения терминала.