• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Программирование Управление ордерами с OnOrderUpdate()

smarthead

Member
NinjaTrader
Коллеги, подскажите зачем в конце данного кода:
http://ninjatrader.com/support/helpGuides/nt8/en-us/?advanced_order_handling.htm#TheOrderClass
http://ninjatrader.com/support/helpGuides/nt8/en-us/?advanced_order_handling.htm#TheOrderClass
переменная entryOrder устанавливается в null:
if (order.OrderState == OrderState.Filled)
entryOrder = null;

ведь она остаётся в состоянии Filled и к ней надо будет обращаться для закрытия или трала, а она окажется пустой. Или я чего-то упустил?
 
Коллеги, подскажите зачем в конце данного кода:
http://ninjatrader.com/support/helpGuides/nt8/en-us/?advanced_order_handling.htm#TheOrderClass
переменная entryOrder устанавливается в null:
if (order.OrderState == OrderState.Filled)
entryOrder = null;

ведь она остаётся в состоянии Filled и к ней надо будет обращаться для закрытия или трала, а она окажется пустой. Или я чего-то упустил?
потому как есть условие на проверку этой переменной
 
Arkadiy, можно по-подробнее, какой участок коды имеется ввиду? Я так понимаю, что entryOrder очищается для возможности входа по новому ордеру, а тогда что происходит с действующим открытым? Как им управлять?
Я так понял, что OnOrderUpdate() метод основанный на событии какого-либо изменения ордеров. Аналог OnBarUpdate(), который активизируется на возникновение нового бара.
Хотелось бы ясности в механизме его работы, простыми словами. Что куда летит, заносится и обнуляется. Если не сложно помогите разобраться.
 
Последнее редактирование:
я так думаю что вы все правильно поняли, но пример не несет в себе гарантии того что алгоритм будет заточен под вас. тут просто показано, как работать с ордером при открытии, т.е. вы открыли ордер, потом находите его среди прочих, и можете им манипулировать, то что он очищается, это или в виде примера так показали, или ошибка как и та что выше
Код:
if (order.Name == "myEntryOrder" && orderState != OrderState.Filled)
посмотрите внимательно стоит в втором сравнение одно равенство.
Если вы хотите управлять ордерами, думаю логично будет класть их в массив и оттуда уже управлять ими.
 
Не стал править прошлый пост специально!!!! при копировании кода на сайте оригинала знак "!" не виден, а тут есть. как так можно читать мануал???
 

Вложения

  • Screenshot_34.jpg
    Screenshot_34.jpg
    63,3 КБ · Просмотры: 26
После того как я увидел != вопросов нет. Как-то не доглядел что это =, а не ==. Знака присваивания там и не может быть.
Arkadiy, спасибо
 
После того как я увидел != вопросов нет. Как-то не доглядел что это =, а не ==. Знака присваивания там и не может быть.
Arkadiy, спасибо
да вот как бы теперь донести до авторов что на сайте такая бяда, наверное Светлане надо написать.
 
Сорри!) Не разобрался! Светлана ещё в отпуске.
 
Последнее редактирование:
Если ошибки есть на сайте может создать отдельную ветку на форуме, потому как если сюда заглядывают разработчики НТ8, им будет легче исправить мануал, ну и те кто учатся программировать так же найдут эти ошибки.
 
может создать отдельную ветку на форуме, потому как если сюда заглядывают разработчики НТ8
Вот давно хотелось узнать про это "если заглядываю сюда". Интересно, для "заглядывающих" сюда это их "заглядывание" - должностная обязанность, или просто что то личное... не обязательное... типа любопытства? Если обязанность, то тогда стоит такую тему/ветку открывать, если нет, то получается просто "гадание на кофе" - заглянет не заглянет. А для себя, для своих, да, такая тема будет иметь ценность.
 
А вообще для интересующихся реализацией алгоритма управления ордерами и позициями, нашёл хороший пример форуме NT. Во вложении.
Ребята, помогите разобраться по файлу, который я вложил в ссылке выше (http://ninjafutures.ru/threads/upravlenie-orderami-s-onorderupdate.1581/#post-28460). Ход логики от выставления entryOrder и выставления под него первоначальных stopOrder и targetOrder в методе OnExecutionUpdate() вроде как понятен. Но теперь ломаю голову как правильно организовать подтягивание стопа по логике, которая будет сидеть в OnBarUpdate() и подавать сигналы на подтяжку. Не могу понять как это увязать во всех методах управления ордерами. Или логику подтяжки нужно размещать в OnExecutionUpdate(), то как тогда она будет согласована с обновлениями баров OnBarUpdate()? Чувствую что заблудился в трёх соснах, но решения найти не получается. Помогите в общих чертах описать принципы и подходы для организации подтяжки(трала) Стопа в рамках данного примера.
Спасибо.
 
Привет. Я не делал такого, думаю если у тебя логика просчета стопа будет находиться в методе OnBarUpdate() то делай там и управление ордером. Или вынеси в отдельный метод. Думаю дальше надо смотреть в функцию изменения ордера stopOrder.
 
Я так понимаю, нет особого смысла вторые и последующие СтопОрдера (они же ТрейлингСтопы) контролировать исполнение их через OnOrderUpdate() и OnExecutionUpdate(). Ведь они будут устанавливаться под уже однажды проверенный на заполнение entryOrder. Будут брать количество entryOrder и его имя. Получается что методы OnOrderUpdate() и OnExecutionUpdate() можно не применять для трала, а отсылать ордера ТрейлингСтопов на установку прямо из OnBarUpdate() минуя их обработку и проверку в OnOrderUpdate() и OnExecutionUpdate(). Корректно ли так рассуждать? Будет ли это слабым алгоритмом?
 
Последнее редактирование:
Получается что методы OnOrderUpdate() и OnExecutionUpdate() можно не применять для трала, а отсылать ордера ТрейлингСтопов на установку прямо из OnBarUpdate(). Корректно ли так рассуждать?
Да. Трал происходит при изменении котировок (OnBarUpdate), а OnOrderUpdate и OnExecutionUpdate вызывается при изменении ордеров и позиций.
 
Ребята, кому интересно нарыл такой пример кода (см. вложение). Сижу изучаю что куда летит. Если кто ковыряется с подобными вещами, то пишите свои мысли или замечания.
 

Вложения

  • Trail.txt
    10 КБ · Просмотры: 16
Назад
Верх Низ