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

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);
 
Использовал вот такой код для индикатора 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
 
Привет. Посмотри индикатор sim22 delta, там есть и bid/ask и up/down tick. Может сможешь переделать под себя..

sim22 delta
 
Ник у тебя знакомый. С давно забытого форума Анвара. Или я путаю, подскажи..?
А запомнился, потому что всегда читаю его как уменьшительно-ласкательное от Оля )
 
Да, я действительно проходил обучение у Анвара. sim22 delta уже пробовал,не получилось, нужно что-то попроще.
 
Последнее редактирование:
Здравствуйте! Подскажите, пожалуйста, как изменить этот код для 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
рисуем красный бар
это самый простой пример!
 
Если вам нужен объем каждого тика, то вам не нужно его накапливать в переменную, 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-тикового графика, и для остальных..
 
Привет. Ваш код не универсален. И так обычно не стоит делать в таких простых случаях.
Вы же понимаете, что будет, если ваш код поставить, скажем, на минутный ТФ..
Поэтому код (delta = 0;) стоит использовать не на каждом тике, а на каждом новом баре..
Это будет универсально и для 1-тикового графика, и для остальных..
А что будет? Вы увидите разницу между покупкой и продажей в каждом тике! Такой себе визуальный стакан)Зачем его подставлять на минутный график? Будет даже еще интересней если дельту не обнулять и оставить накопление на тиковом графике , и можно будет увидеть всю разницу за торговую сессию
 
А, ну вот. Видим, что проблема универсальности не решается уже не один день.. :)

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

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

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

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