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

Delta UpDownTick

olchik

New Member
NinjaTrader
Здравствуйте! Подскажите, пожалуйста, как изменить этот код для Delta UpDownTick
Код:
        protected override void OnMarketData(MarketDataEventArgs e)
        {           
            if(e.MarketDataType == MarketDataType.Last)
            {               
                if(e.Price >= e.Ask)
                    buys += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
                else if (e.Price <= e.Bid)
                    sells += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
 

olchik

New Member
NinjaTrader
Использовал вот такой код для индикатора Delta Volume с рассчетом дельты UpDownTick

Код:
        protected override void OnMarketData(MarketDataEventArgs e)
        {         
            if(e.MarketDataType == MarketDataType.Last)
            {             
                if(e.Price > lastprise)
                {
                        delta=1;
                }
                else if(e.Price < lastprise)
                {
                       delta=0;
                }
                  
                lastprise=e.Price;
            } 
          
        }

        protected override void OnBarUpdate()
        {
            if (CurrentBar < activeBar || CurrentBar <= BarsRequiredToPlot)
                return;
 
            if (CurrentBar != activeBar)
            {
                m_Volume[1] = Volume[1];
              
                if (delta==1 )
                {
                    PlotBrushes[0][1] = colorUp;
                }
                else
                {
                    PlotBrushes[0][1] = colorDn;
                }
                activeBar = CurrentBar;
              
            }
          
            m_Volume[0]  = Volume[0];
            if(delta==1) {PlotBrushes[0][0]=colorUp;}
            else  {PlotBrushes[0][0]=colorDn;}
        }
Но цвета объемов не совпадают с, например, dt Buy-Sell Pressure, с типом рассчета дельты UpTick vs DownTick.
Подскажите, пожалуйста, может есть другие формулы для дельты UpDownTick? Или я сделал, где то ошибку?

1629376033483.png
 

rare312

Active Member
NinjaTrader
Привет. Посмотри индикатор sim22 delta, там есть и bid/ask и up/down tick. Может сможешь переделать под себя..

sim22 delta
 

rare312

Active Member
NinjaTrader
Ник у тебя знакомый. С давно забытого форума Анвара. Или я путаю, подскажи..?
А запомнился, потому что всегда читаю его как уменьшительно-ласкательное от Оля )
 

olchik

New Member
NinjaTrader
Да, я действительно проходил обучение у Анвара. sim22 delta уже пробовал,не получилось, нужно что-то попроще.
 
Последнее редактирование:

AdvancedSoftwareFeatures

New Member
NinjaTrader
Здравствуйте! Подскажите, пожалуйста, как изменить этот код для Delta UpDownTick
Код:
        protected override void OnMarketData(MarketDataEventArgs e)
        {          
            if(e.MarketDataType == MarketDataType.Last)
            {              
                if(e.Price >= e.Ask)
                    buys += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
                else if (e.Price <= e.Bid)
                    sells += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
Если вам нужен объем каждого тика, то вам не нужно его накапливать в переменную, buys = (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
sells = (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
Теперь buys and sells можно выводить на график, но есть смысл использовать тиковый график для того чтоб видеть визуально разницу в каждом тике!
delta = 0;
delta=buys-sells;
if delta>0
рисуем зеленый бар
else
рисуем красный бар
это самый простой пример!
 

rare312

Active Member
NinjaTrader
Если вам нужен объем каждого тика, то вам не нужно его накапливать в переменную, buys = (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
sells = (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
Теперь buys and sells можно выводить на график, но есть смысл использовать тиковый график для того чтоб видеть визуально разницу в каждом тике!
delta = 0;
delta=buys-sells;
if delta>0
рисуем зеленый бар
else
рисуем красный бар
это самый простой пример!
Привет. Ваш код не универсален. И так обычно не стоит делать в таких простых случаях.
Вы же понимаете, что будет, если ваш код поставить, скажем, на минутный ТФ..
Поэтому код (delta = 0;) стоит использовать не на каждом тике, а на каждом новом баре..
Это будет универсально и для 1-тикового графика, и для остальных..
 

AdvancedSoftwareFeatures

New Member
NinjaTrader
Привет. Ваш код не универсален. И так обычно не стоит делать в таких простых случаях.
Вы же понимаете, что будет, если ваш код поставить, скажем, на минутный ТФ..
Поэтому код (delta = 0;) стоит использовать не на каждом тике, а на каждом новом баре..
Это будет универсально и для 1-тикового графика, и для остальных..
А что будет? Вы увидите разницу между покупкой и продажей в каждом тике! Такой себе визуальный стакан)Зачем его подставлять на минутный график? Будет даже еще интересней если дельту не обнулять и оставить накопление на тиковом графике , и можно будет увидеть всю разницу за торговую сессию
 

AdvancedSoftwareFeatures

New Member
NinjaTrader
А, ну вот. Видим, что проблема универсальности не решается уже не один день.. :)

=))) индикатор сделан был узко под конкретную стратегию, я не понимаю чего вы прицепились к какой то универсальности))Вам что хочется бегать по таймфреймам во время торговли???Зачем? откройте себе много графиков, и чувствуйте себя универсальным)С ув.)
 

rare312

Active Member
NinjaTrader
А что будет? Вы увидите разницу между покупкой и продажей в каждом тике!
Нет) на исторических барах, вы увидите направление только последнего тика в баре.
В реалтайме, цвет бара, тоже будет зависеть от последнего тика.
Это все, если не копить суммарную дельту бара.

Зачем его подставлять на минутный график?
Затем, что кто то просто захочет видеть дельту минутного ТФ. Это же очевидно.

Будет даже еще интересней если дельту не обнулять и оставить накопление на тиковом графике , и можно будет увидеть всю разницу за торговую сессию
Это называется Кумулятивная дельта. И это уже реализовано товарищем Sim22.

=))) индикатор сделан был узко под конкретную стратегию, я не понимаю чего вы прицепились к какой то универсальности))Вам что хочется бегать по таймфреймам во время торговли???Зачем?
Затем, что мы не покупаем 2 кастрюли. Одну только для картофеля, вторую только для гречки.
На самом деле, вам стоит изменить лишь немного, и все будет работать как положено..
В текущем же виде, код неработоспособен для старших ТФ.
 

AdvancedSoftwareFeatures

New Member
NinjaTrader
Благодарю за советы, но для меня не стоит вопрос в изменении моих индикаторов. На счет кастрюль, их покупают разного объёма, а индикатор не нужно создавать для каждого финансового инструмента, он универсален в разрезе фин.инструменов, но узконаправлен по типу тайм-фрейма. С ув.
 

rare312

Active Member
NinjaTrader
Благодарю за советы, но для меня не стоит вопрос в изменении моих индикаторов. На счет кастрюль, их покупают разного объёма, а индикатор не нужно создавать для каждого финансового инструмента, он универсален в разрезе фин.инструменов, но узконаправлен по типу тайм-фрейма. С ув.
Я говорю лишь в разрезе вашего кода, представленного в этой ветке. Другие ваши индикаторы не затрагиваю. Кроме аналогии с дельтой.
Так вот дельта бара - легко масштабируется. Это и дельта 1-тикового бара, и 1-мин бара и т.д
А дельта 1 тика - так не масштабируется. И в данном конкретном случае, когда мы говорим о вертикальных обьемах - нет смысла ограничивать себя так сильно.
И поскольку в вашем коде присутствует такое ограничение, и в вашем коммерческом индикаторе оно тоже видимо есть. То предлагаю просто подумать и понять - смысла и преимуществ в таком ограничении нет. Зато недостатки -есть.
Или же напишите, в чем вы видите преимущество. Просто интересно..
 

AdvancedSoftwareFeatures

New Member
NinjaTrader
Я говорю лишь в разрезе вашего кода, представленного в этой ветке. Другие ваши индикаторы не затрагиваю. Кроме аналогии с дельтой.
Так вот дельта бара - легко масштабируется. Это и дельта 1-тикового бара, и 1-мин бара и т.д
А дельта 1 тика - так не масштабируется. И в данном конкретном случае, когда мы говорим о вертикальных обьемах - нет смысла ограничивать себя так сильно.
И поскольку в вашем коде присутствует такое ограничение, и в вашем коммерческом индикаторе оно тоже видимо есть. То предлагаю просто подумать и понять - смысла и преимуществ в таком ограничении нет. Зато недостатки -есть.
Или же напишите, в чем вы видите преимущество. Просто интересно..
Ну ведь это и так понятно, что в зависимости о того сколько времени формируется бар столько и времени накапливается дельта, и при появлении нового бара мы обнуляем дельту! Но задача у меня не стояла в этом Bid Ask Size Indicator For Trading For Ninja Trader 8 индикаторе, поскольку меня в принципе временные тайм фреймы не интересуют, у нас есть стакан цен с информацией , которой достаточно для дальнейшего использования в программировании торговых стратегий! Тиковый график позволяет быть вне времени как всем ясно, для программирования торговых стратегий в принципе график и не особо нужен, разве что для наглядности скомпилированного результата. На счёт преимуществ наверное вообще нет смысла говорить, он мне даёт ту информацию которая мне нужна, а значит я решил задачу!
 

rare312

Active Member
NinjaTrader
Ок. Вас понял. Придерживаюсь другого мнения. Решая свои собственные задачи, я иногда могу упростить код и облегчить себе работу всякими ограничениями. Но это часто не выдерживает критики в коммерческих вариантах.
А во-вторых, посмотрите пожалуйста скрин во втором посте автора ветки. На чем четко виден таймфрейм, на котором автор и проверяет свою работу.. Вы же предложили купить свой индикатор, который не позволит пользоваться аналогичным ТФ. Он ограничен лишь 1 тиком..
 
Верх Низ