ORDER_POSITION_ID - страница 19

 

Проблему решили, отношения все выяснили )

Возник сопутствующий вопрос:

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

Получается надо искать ордер и тут и там. 

Не проще бы сделать как в четверке МТ4, если выбирается ордер то неважно где он находится.

из справки МТ4:

OrderSelect

Выбирает ордер для дальнейшей работы с ним.

bool  OrderSelect(
   int     index,            // индекс или тикет ордера
   int     select,           // флаг способа выбора
   int     pool=MODE_TRADES  // источник данных для выбора
   );

Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера.

Кто что на это думает? 

P.S. Надеюсь Михаил не против продолжения ветки, чтобы не плодить новые? 

 

Serj_Che:

Кто что на это думает? 

Это да... было бы здОрово... другое дело, что разработчик привнёс более сложную систему работы с разными кэшами (позиции, ордера обычные и исторические, сделки)... отсюда и преимущества, и недостатки...

Integer, снимаю перед Вами шляпу и завидую Вашему терпению  :-))

 
Serj_Che:

Проблему решили, отношения все выяснили )

Возник сопутствующий вопрос:

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

Получается надо искать ордер и тут и там. 

Не проще бы сделать как в четверке МТ4, если выбирается ордер то неважно где он находится.

из справки МТ4:

Кто что на это думает? 

P.S. Надеюсь Михаил не против продолжения ветки, чтобы не плодить новые? 

Нет, совсем не против:)

По вопросу о OrderSelect:

if ( OrderSelect( ticket) )
{
 //Ордер действующий(в истории его нет)
}
else
{
  //Ордер в истории
}

 Не думаю, что это очень сложно....

 
Mikalas:

Нет, совсем не против:)

По вопросу о OrderSelect:

 Не думаю, что это очень сложно....

Можно конечно обойтись, но зачем лишние движения, ведь за этим следует также разные OrderGet... и HistoryOrderGet...
 

Мне реально не понятно почему на протяжении двадцати страниц топикстартер борется с ветрянными мельницами и упорно пытается управлять своими роботами через контроль и анализ нетто-позиции FORTS, тогда как это принципиально не возможно, хотя бы из-за наличия процедуры клиринга, и переноса нетто-позиции. В отличии от FOREX, торговля FORTS подразумеваем процедуру клиринга. Клиринг - это процедура перерасчета обязательств участников рынка, расчет их финансовых результатов за прошедшую торговую сессию и сведение совершенных ими сделок в единую нетто-позицию, которая и будет открыта после окончания клиринговых расчетов.

Для того что бы это понять, как это происходит на самом деле, представим что у нас есть два робота каждый из которых совершил по одной законченной сделке (в терминах МТ4, включающей вход и выход из рынка):

Робот 1: Продажа без покрытие 1 контракта по цене 1000 в 28.02.2014 20:30. Выход из короткой позиции в 23:30 по цене 700 и фиксацией прибыли +300 пунктов (1000 - 700 = 300).

Робот 2: Покупка 1 контрактов по цене 700 в 28.02.2014 23:30. Выход из длинной позиции в 01.03.2014 в 23:00 по цене 1050 и фиксацией прибыли +350 пунктов (1050 - 700 = 350).

С точки зрения классических расчетов FOREX будет все просто. Вначале будет существовать одна позиция на продажу объемом 1 с 28.02.2014 20:30 по 28.02.2014 23:30. Эта позиция будет принадлежать роботу №1. Затем в 23:30 он закроет ее. В этот же момент робот №2 откроет противоположенную позицию на покупку объемом 1. Она будет существовать с 28.02.2014 23:30 по 01.03.2014 23:00, вплоть до момента, когда робот №2 выставит закрывающий ордер на продажу. Визуально эти позиции отображены оранживыми пунктирными линиями на графике ниже. Т.к. каждый сработавший ордер имеет идентификатор позиции которой он принадлежал и идентификатор эксперта, можно сопоставить ордера, которые выставили эксперты с нетто-позициями, и сделать вывод, что эти позиции принадлежат соответствующим экспертам. Но на FORTS происходит матчинг позиций из совершенных сделок и их перенос через клиринг. Более понятно будет показать на условном графике:

 

Вместо того, что бы рассчитать результат ваших совокупных позиций к моменту первого клиринга, Ваш брокер рассчитает результат отдельных трейдов (сделок). Он будет считать так:

Цена дневного клиринга 01.03.2014: 950

Цена сделки Sell объемом 1: 1000; Результат сделки: 1000 - 950 = 50 пунктов.

Цена сделки Buy объемом 1: 700; Результат сделки: 950 - 700 = 250 пунктов.

Цена сделки Buy объемом 1: 700; Результат сделки 950 - 700 = 250 пунктовю

Результат всех сделок: 50 + 250 + 250 = 550 пунктов.

Результат в пунктах будет переведен в финансовый результат в рублях и начислен Вам на счет (при дневном клиринге будет сделан лишь оценочный расчет, который попадет в графу "накопленный доход").

Интересно, что при классическом расчете общий результат к моменту клиринга будет аналогичен:

Продали 1 контракт по 1000 закрыли продажу по 700. Результат = 100 - 700 = 300 пунктов.

Купили 1 контракт по 700 зафиксировали покупку к моменту клиринга по 950. Результат = 950 - 700 = 250 пунктов.

Общий результат двух позиций = 300 + 250 = 550 пунктов.

В момент клиринга из ваших совершенных сделок сформируется новая нетто-позиция, с новым идентификатором и новыми параметрами. Именно эта нетто-позиция и будет доступна Вам для работы начиная с открытия рынка после клиринга. Эта нетто-позиция просуществует вплоть до момента следующего клиринга. Затем она будет уничтожена, а вместо нее будет образована аналогичная позиция, однако ее идентификатор также будет другим. Перед уничтожением вариационная маржа, накопленная этой позицией будет начислена вам на счет. Однако совокупный результат всех нетто-позиций инициирующихся клирингом и всех совершенных сделок будет в точности равен результату полученному при классическом, FOREX расчете позиций. 

Рано или поздно, второй робот совершит сделку на продажу, что бы закрыть противоположенным объемом свою покупку. Эта сделка будет принадлежать некоторой нетто-позиции, однако эта будет совсем другая позиция а не та, к которой принадлежал ордер на покупку.  Раз позиции разные, с разными идентификаторами, то через эти позиции невозможно будет связать два ордера эксперта (открывающий и закрывающий), а значит и получить классические позиции, такие как помеченные оранжевыми пунктирными линиями  на рисунке выше.

Топикстартер же упорно пытается работать с нетто-позициями FORTS (черные линии на рисунке) так, как это принято на FOREX (оранжевые пунктирные лини на рисунке). Однако визуально видно, что это совсем разные позиции и их расчет сильно отличается друг от друга.

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

 

С-4, вы заблуждаетесь, перечитайте справку о позициях.

 
Жалко я свой счёт у брокера закрыл. Может есть у кого история торгов, на основании которой будет чётко видно, как происходит клиринг?
 
barabashkakvn:
Жалко я свой счёт у брокера закрыл. Может есть у кого история торгов, на основании которой будет чётко видно, как происходит клиринг?
Откройте демо-счёт в БКС или Открытии.
 
Mikalas:
Откройте демо-счёт в БКС или Открытии.
Я уже сталкивался с демо-счетом брокера. Полная ерунда. Это не боевые условия. Вечные недоработки. Только реал. И еще в моих краях таких зверушек (" БКС или Открытии") не водится :)
 
barabashkakvn:
Я уже сталкивался с демо-счетом брокера. Полная ерунда. Это не боевые условия. Вечные недоработки. Только реал. И еще в моих краях таких зверушек (" БКС или Открытии") не водится :)
У вас же есть интернет? Через интернет водятся :)
Причина обращения: