• 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
    • Бесплатная платформа: Включает весь необходимый функционал для торговли в реале
  • Уважаемые посетители форума!
    При регистрации на форуме отправляется письмо подтверждения на ваш почтовый ящик, если письмо не пришло, просьба проверить папку "спам" вашего почтового ящика, возможно письмо попало туда.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

Вопросы программирования

tander

New Member
NinjaTrader
Как определить (найти переменную CurrentBar) на каком баре был помещен индикатор на график?
 

tander

New Member
NinjaTrader
vladko сказал(а):
Не понял сути вопроса. Что значит на каком баре? При запуске индикатора происходит перебор всех баров.
Как в коде индикатора определить номер бара на котором была вызвана функция Initialize() ?
 

vladko (Владимир Ковалюк)

Well-Known Member
NinjaTrader
Вопрос не имеет смысла. Вызов Initialize() не зависит ни от каких баров.
Есть график. Помещаем на него индикатор. В чем вопрос?
 

tander

New Member
NinjaTrader
vladko сказал(а):
Вопрос не имеет смысла. Вызов Initialize() не зависит ни от каких баров.
Есть график. Помещаем на него индикатор. В чем вопрос?
Попробую объяснить...
Есть график с барами, загруженные бары нумеруются скажем слева направа от 0 до N, помещаю индикатор на график и он начинает работать, прорисовываются бары с номерами N+1, N+2 и т.д.
Как в коде индикатора найти номер N ?
 

vladko (Владимир Ковалюк)

Well-Known Member
NinjaTrader
Мы просто не понимаем друг друга. Что такое "время инициализации индикатора на графике"? К чему это?

На графике у нас N баров. При запуске индикатора начинается перебор всех баров начиная с крайнего левого в функции OnBarUpdate().
 

tander

New Member
NinjaTrader
vladko сказал(а):
Мы просто не понимаем друг друга. Что такое "время инициализации индикатора на графике"? К чему это?

На графике у нас N баров. При запуске индикатора начинается перебор всех баров начиная с крайнего левого в функции OnBarUpdate().
vladko спасибо!
вопрос отпал
 

Kotyk

Member
NinjaTrader
При бектестинге столкнулся с ситуацией. Для примера в системе профит ставим 1-2 пункта. Если ставить Historical Fill Processing Fill Type - Liberal и профит 2 то система торгует с прибылью. Если ставить Default и профит 1 то в убыток. Если я правильно понимаю разница в том как заполняется цена. Но если она дошла до 2 пунктов, то 1 пункт точно она "пробила". Кто в курсе почему такая разница в результатах подскажите. Очень надо.
 

Valeryi

Member
NinjaTrader
подскажите , кто знает, можно ли в nt7 получить количество ордеров на ценовых уровнях стакана?
 

IEU

New Member
NinjaTrader
Всем добрый день.
Вопрос следующий: почему при использовании LastPlayback() (NTDirect.dll) в базе NinjaTrader появляются странные таймштампы ? (см. скриншот). Подобная ситуация повторяется хаотически, т.е. в некоторых случаях NT ставит правильный таймштамп, в некоторых - как на скриншоте. В чём может быть причина ? Перечитал несколько раз Help Guide до рези в глазах, но ничего кроме описания самого метода LastPlayback() найти не удалось.
Всем спасибо заранее за помощь.
 

Вложения

IEU

New Member
NinjaTrader
Друзья ! Пожалуйста, любые версии, предположения, хоть что нибудь !
 

zilibob4ik

New Member
NinjaTrader
Привет всем!
Вопрос к уважаемым гуру...

Извиняюсь если что то недопонимаю или задаю не правильно вопрос.
перешёл с mql...

есть проверка на наличие рыночных ордеров (например один из вариантов):
if (Position.MarketPosition == MarketPosition.Flat)
if (Position.MarketPosition ==MarketPosition.Long)
if (Position.MarketPosition ==MarketPosition.Short)

А как проверить наличие отложек?
особенно учитывая что если отложка стоит не одна?
 

MountainMan

New Member
NinjaTrader
Добрый день. Вопрос сам по себе очень пространный: почему не работает backtesting?
Мой порядок действий:
1) Регистрация демо-аккаунта;
2) Установка и настройка NT7;
3) Скачивание исторических данных для определённого инструмента через Historical Manager;
4) Проверка наличия этих данных через вкладку Edit в том же Historical Manager;
5) New -> Strategy Analyzer, выбираем стратегию (специально в функцию инициализации добавил строку Print("...");), выбираю инструмент, для которого качал сторию;
6) Нажимаю Run Backtest
и... ничего не происходит. В Summary стоят стандартные даты начала/конца 13/04/2006, в окне Output пусто. Стратегия даже не инициализировалась.
Проверил на 2-ух компах, на одном из них бэктест запустился, но только один раз, после перезапуска NT7 - дохляк.
На стандартных стратегиях проверил в первую очередь - та же ситуация.

Подскажите пожалуйста что я делаю не так?

!!!OMFG решилось следующим образом: при тестировании нужно следить за тем, что бы в настройках этого тестирования не появлялся пункт с выбором инструмента (выбирать инструмент в левом окошке), тогда тестирование работает. Но во всех возможных видео-инструкциях этот пункт присутствует, что несколько смущает.
 

zilibob4ik

New Member
NinjaTrader
vladko сказал(а):
Запоминать при выставлении, отслеживать в OnOrderUpdate.
vladko, спасибо за ответ, разобрался с iOrder и т.д.

Можно ещё вопрос?

Не пойму, почему стратегия выполняется не правильно...
Код:
protected override void Initialize()
{
  CalculateOnBarClose = true;
  Unmanaged = true;
}
protected override void OnBarUpdate()
{       
many conditions....
  SubmitOrder(0, OrderAction.Buy, OrderType.Stop.....
  SubmitOrder(0, OrderAction.Sell, OrderType.Stop.....
}
Почему то происходит попытка устновить очень много ордеров...
Как будто функция OnBarUpdate () зацикливается или перезапускается много раз. 

Я провел небольшой эксперимент.
Взял стандартную стратегию из примеров
и добавил туда:
Код:
protected override void Initialize()
{ 
  CalculateOnBarClose = true;
}
  int start=0;

  protected override void OnBarUpdate()
{
Print("OnBarUpdate Starting: "+start);
start++;
....
}
В конце концов, я был очень удивлен ...
----Output panel-------
Код:
OnBarUpdate Starting: 0
OnBarUpdate Starting: 1
OnBarUpdate Starting: 2
...
...
...
OnBarUpdate Starting: 2640
OnBarUpdate Starting: 2641
OnBarUpdate Starting: 2642
Почему это происходит? 
Ведь после запуска стратегии, если она включена CalculateOnBarClose = TRUE 
код должен быть запущен один раз, после закрытия текущего бара.
 

zilibob4ik

New Member
NinjaTrader
vladko сказал(а):
OnBarUpdate исполняется также на всех исторических барах. Чтобы этого не было делаем так:

CODE:If (Historical)
rerurn;  
Спасибо большой за столь быстрый ответ!
Т.е выходит так, при запуске стратегии в чарт подгружается история
за Х дней (указано в настройках чарта)
и эта же история за Х дней прогоняется через стратегию в процессе подгрузки?

При вышеуказанной проверке, это будет влиять как то на тестировании в тестере сратегий?
 
Верх Низ