• Demo счет NinjaTrader, регистрируется в брокерской компании NinjaTrader Brokerage . NinjaTrader™, LLC
    Ссылка на демо счет NinjaTrader
    Фид на соединении Continuum/CQG.
    Для справки: Continuum - это брэнд CQG.
    Не открывается ссылка - используйте любой локальный VPN или дополнение для браузера Browsec VPN
    Обратите внимание, что в настоящее время CQG не высылает логин и пароль на электронные адреса от mail.ru, bk.ru, list.ru, inbox.ru, поэтому необходимо повторить регистрацию с электронного адреса от другого домейна (yahoo, gmail, и тд).
  • NinjaTrader с зарекомендовавшим себя брокерским сервисом предоставляет наилучшие условия для фьючерсной торговли, включая:
    • Низкие комиссии: Экономьте на торгах через низкие и понятные комиссии
    • Низкая маржа: Всего $50 для микро контрактов
    • Низкие минимумы: Откройте счет от $100
    • Бесплатная платформа: Включает весь необходимый функционал для торговли в реале
  • Уважаемые посетители форума!
    При регистрации на форуме отправляется письмо подтверждения на ваш почтовый ящик, если письмо не пришло, просьба проверить папку "спам" вашего почтового ящика, возможно письмо попало туда.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

NinjaTrader 8 Ищу простую Delta

S

Scrittore

New Member
NinjaTrader
  • #1
Нужна дельта без наворотов, чтобы можно было вставить в роботы. Пробовал Sim22 это ужас, даже вызывая её через другой индикатор получаются разные цифры. Можете что-нибудь посоветовать? Неужели для платформы не существует адекватного стандартного индикатора? Желательно подешевле, а то и бесплатно.
Или может подскажете как считать? Я вижу это как функцию которая возвращает по каждому тику объём с пометкой бид или аск. Далее вычетаем из времени закрытия открытие, за этот промежуток принимаем все тики в массив и сортируем через цикл. Так я на mql делал. Есть ли такая фунеция тут?
 
R

rare312

Active Member
NinjaTrader
  • #2
Здравствуйте. Предлагаю открыть встроенный индикатор BuySellVolume.
Поменять несколько строчек кода, чтобы он показывал только дельту.
Но он при онлайн подсчете пропускает первый тик на открытии бара. Но когда бар закроется - пропущенные тики добавляются, там все норм.
Если это для вас критично, то там нужно будет еще кое что поменять.. Пробуйте.

UPD. Можете в нем еще добавить несколько условий при рассчете дельты. Я условия брал с Sim22 там хорошо они рассмотрены.
 
Последнее редактирование:
  • Like
Реакции: Scrittore
S

Scrittore

New Member
NinjaTrader
  • #3
rare312 сказал(а):
Здравствуйте. Предлагаю открыть встроенный индикатор BuySellVolume.
Поменять несколько строчек кода, чтобы он показывал только дельту.
Но он при онлайн подсчете пропускает первый тик на открытии бара. Но когда бар закроется - пропущенные тики добавляются, там все норм.
Если это для вас критично, то там нужно будет еще кое что поменять.. Пробуйте.

UPD. Можете в нем еще добавить несколько условий при рассчете дельты. Я условия брал с Sim22 там хорошо они рассмотрены.
Спасибо, вчера ковырял, это и есть дельта. Только какая-то странная.
А что с первым тиком? Вы разбирались как так выходит что он теряется?
И что вы имеете ввиду про добавление условий с Sim22. О чём эти условия? Кроме первого тика вроде всё нормально.
 
R

rare312

Active Member
NinjaTrader
  • #4
Scrittore сказал(а):
Спасибо, вчера ковырял, это и есть дельта. Только какая-то странная.
А что с первым тиком? Вы разбирались как так выходит что он теряется?
И что вы имеете ввиду про добавление условий с Sim22. О чём эти условия? Кроме первого тика вроде всё нормально.
Она не странная. Просто рисует отдельно продажи и отдельно покупки на одном баре. А Покупки строит так = продажи + покупки = обьем.
Поэтому я написал поменять несколько строчек. Добавьте условия чего больше - то и рисовать.
Ну и если вы рисуете что то одно, то второе нужно ресетить.
Также я писал про условия рассчета дельты.. вот эти if(e.Price >= e.Ask). В этом индикаторе их только два. Но этого недостаточно. Они не описывают все возможные варианты. См. Sim22, вот эти .. if(A > B) { if (L0 >= A) {

Про потерю первого тика понял как описано здесь на рисунках. NinjaTrader 8
В индикаторе вы видите рассчет для нулевого бара и отдельно для предыдущего [1]
Так вот, я передвинул рассчеты нулевого бара с OnBarUpdate в другое место и тики уже не теряются.

PS. А С вас, хотя бы скрин, работы готового индюка
 
Последнее редактирование:
S

Scrittore

New Member
NinjaTrader
  • #5
Да индикатор я ещё вчера запилил. Но вот с этим тиком так и не понял пока ничего, почему он теряется и как его вернуть.
PS И до понедельника похоже не пойму. Такой косяк нужно в реал тайм смотреть, а тут выходные.
 

Вложения

  • DeltaTest.cs
    4,5 КБ · Просмотры: 21
Последнее редактирование:
  • Like
Реакции: elsnere777 и yunakhan11
A

Arkadiy

Well-Known Member
NinjaTrader
  • #6
маркет реплей используйте на выходных
 
N

NTTrade

Well-Known Member
NinjaTrader
  • #7
Вам нужно почитать мануал по C# про коллекции, а именно про Словари. Где данные хранятся по Ключу и Значению. Ключём будет Цена, а Значением Объем. Дальше в Методе protected override void OnMarketData(MarketDataEventArgs e) проверяете есть ли такой Ключ, если нет создаёте его, и добавляете данные, если есть, то добавляете данные. Если цена Аск +Объем если Бид -Объем. Потом получаете сумму Значений по всем Ключам, и присваеваете ее переменной, вот Вам и Дельта. На первом тике нового бара очищает коллекцию и присваивает переменной Дельты 0.
 
  • Like
Реакции: Scrittore
S

Scrittore

New Member
NinjaTrader
  • #8
А можете подсказать где у меня может быть ошибка. Я в стратегии сослался на кастомный индикатор, вот эту самую дельту, что я тут выложил. И попробовал принтовать значение дельты. На барах которые уже загружены на графике, он нормально считает и выдаёт правильные значения. А на барах которые формируются онлайн он по всем им выдаёт 0. Такое ощущение что данные куда-то там не сохраняются... ну вобщем вы понимаете.
Сам индикатор работает адекватно, и столбики и в датабоксе потом онлайн бары нормально в истории сохраняют информацию, а вот через стратегию 0 и всё.
 
S

Scrittore

New Member
NinjaTrader
  • #9
NTTrade сказал(а):
Вам нужно почитать мануал по C# про коллекции, а именно про Словари. Где данные хранятся по Ключу и Значению. Ключём будет Цена, а Значением Объем. Дальше в Методе protected override void OnMarketData(MarketDataEventArgs e) проверяете есть ли такой Ключ, если нет создаёте его, и добавляете данные, если есть, то добавляете данные. Если цена Аск +Объем если Бид -Объем. Потом получаете сумму Значений по всем Ключам, и присваеваете ее переменной, вот Вам и Дельта. На первом тике нового бара очищает коллекцию и присваивает переменной Дельты 0.
Для меня пока это ещё сложно, я всего неделю как программировать начал. Стратегию ручную разработал, но входы достаточно частые, постоянно у монитора не просидишь, пришлось в программирование лезть. Я совершенно не понимаю как узнать какой мне нужен Ключ чтобы его добавить, если он потерян и как ключом может выступать цена, если она может повторятся.
 
S

Scrittore

New Member
NinjaTrader
  • #10
Ок. Дельта готова. Первый тик я вернул. Кто хочет можете поискать косяк. Но прошу помочь с тем почему при вызове через стратегию этого индикатора, для вновь сформированных баров отдаёт нулевое значение?
 

Вложения

  • EasyDelta.cs
    5,1 КБ · Просмотры: 55
N

NTTrade

Well-Known Member
NinjaTrader
  • #11
Scrittore сказал(а):
А можете подсказать где у меня может быть ошибка. Я в стратегии сослался на кастомный индикатор, вот эту самую дельту, что я тут выложил. И попробовал принтовать значение дельты. На барах которые уже загружены на графике, он нормально считает и выдаёт правильные значения. А на барах которые формируются онлайн он по всем им выдаёт 0. Такое ощущение что данные куда-то там не сохраняются... ну вобщем вы понимаете.
Сам индикатор работает адекватно, и столбики и в датабоксе потом онлайн бары нормально в истории сохраняют информацию, а вот через стратегию 0 и всё.
Для исторических баров нужно создавать историческую базу данных. На каждом первом тике бара записывать в Лист данные прошлого бара, и потом по ID бара вытягивать эти данные.
 
  • Like
Реакции: Scrittore
N

NTTrade

Well-Known Member
NinjaTrader
  • #12
Scrittore сказал(а):
Я совершенно не понимаю как узнать какой мне нужен Ключ чтобы его добавить, если он потерян и как ключом может выступать цена, если она может повторятся.
Она не будет повторяться. Если объяснить образно то Коллекция это как таблица Эксель, в которой два Столбца. Первый Ключ второй Значение. У вас есть цена, вы смотрите в Столбец Ключ, есть там такая цена, если ее нет вы записываете цену а напротив нее в столбец Значение записываете объем. Дальше цена пошла делает тоже, самое. Потом цена вернулась, вы посмотрели Столбец Ключ и увидели что такая цена есть, тогда по ней вы добавили новое Значение к тому что было раньше.
 
S

Scrittore

New Member
NinjaTrader
  • #13
NTTrade сказал(а):
Для исторических баров нужно создавать историческую базу данных. На каждом первом тике бара записывать в Лист данные прошлого бара, и потом по ID бара вытягивать эти данные.
Попробую с этим разобраться, но встанет вопрос как мне из листа созданного в другом файле (индикаторе) вытащить данные в стратегию.
И такой вопрос. Данные в датабоксе отображаются корректно все. Только при обращении из робота они нулевые. Т.е. датабокс из какого-то массива ведь берёт эти данные, он существует. Можно как-то получить доступ из робота к этому массиву? Так кажется проще будет.
 
N

NTTrade

Well-Known Member
NinjaTrader
  • #14
Scrittore сказал(а):
Попробую с этим разобраться, но встанет вопрос как мне из листа созданного в другом файле (индикаторе) вытащить данные в стратегию.
И такой вопрос. Данные в датабоксе отображаются корректно все. Только при обращении из робота они нулевые. Т.е. датабокс из какого-то массива ведь берёт эти данные, он существует. Можно как-то получить доступ из робота к этому массиву? Так кажется проще будет.
Все нужно писать в стратегии. Отдельно часть индикатора с данными отдельно торговый модуль, который будет открывать ордера по сигналам. Но я думаю вы это не потянет, если нет минимальных знаний по С#.
 
S

Scrittore

New Member
NinjaTrader
  • #15
NTTrade сказал(а):
Все нужно писать в стратегии. Отдельно часть индикатора с данными отдельно торговый модуль, который будет открывать ордера по сигналам. Но я думаю вы это не потянет, если нет минимальных знаний по С#.
Пробовал. Там вобще третьи цифры индикатор выдаёт. Ну ничего, пока на истории фурычит, для доработки стратегии мне хватит. Дальше буду думать как там изучить C#.

Очередной вопрос возник. В ниндзе склеенные фьючерсы есть? По контракту тестировать/оптимизировать как-то не очень.
 
N

NT8

Well-Known Member
NinjaTrader
  • #16
Склеенные есть, но тестировать как раз рекомендуется на отдельных контрактах, так как на них и производится торговля.
 
S

Scrittore

New Member
NinjaTrader
  • #17
NT8 сказал(а):
Склеенные есть, но тестировать как раз рекомендуется на отдельных контрактах, так как на них и производится торговля.
А как их найти то?
 
N

NT8

Well-Known Member
NinjaTrader
  • #18
 
  • Like
Реакции: Scrittore
N

NTTrade

Well-Known Member
NinjaTrader
  • #19
И склеивать желательно без сдвига, то есть что бы были гепы на роле. Этот сдвиг такая фигня )))
 
R

rare312

Active Member
NinjaTrader
  • #20
NTTrade сказал(а):
Вам нужно почитать мануал по C# про коллекции, а именно про Словари. Где данные хранятся по Ключу и Значению. Ключём будет Цена, а Значением Объем. Дальше в Методе protected override void OnMarketData(MarketDataEventArgs e) проверяете есть ли такой Ключ, если нет создаёте его, и добавляете данные, если есть, то добавляете данные. Если цена Аск +Объем если Бид -Объем. Потом получаете сумму Значений по всем Ключам, и присваеваете ее переменной, вот Вам и Дельта. На первом тике нового бара очищает коллекцию и присваивает переменной Дельты 0.

Здравствуйте. Спасибо вам большое за индикатор Delta_Volume. Там я как раз ознакомился на практике со словарями.
Переделал его под себя, чтобы показывал volume poc баров.
Есть пару вопросов.
Зачем ограничили подсчет обьемов и дельты только для 60 сек ТФ? Вопрос снимается, если вас просто об этом попросили клиенты.
Дальше, если помню правильно, ставил тф на графике 300 сек, 3600 сек, возникала ошибка недостаточного кол-ва баров на графике. условие <= BarsRequiredToPlot тут помогло.

И вопрос касаемо текущей ветки.
словари прекрасно помогают делать вычисления по обьемам на каждой отдельно цене бара.
Но если нас интересует весь бар, вертикальный обьем, дельта. Есть ли смысл высчитывать дельту на каждой конкретно цене и суммировать ее.
Ведь это легко делается, просто суммируя дельту бара, по всем тикам. без словарей.
Спасибо..
 
Последнее редактирование:
Верх Низ