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

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

Как определить (найти переменную CurrentBar) на каком баре был помещен индикатор на график?
 
vladko сказал(а):
Не понял сути вопроса. Что значит на каком баре? При запуске индикатора происходит перебор всех баров.

Как в коде индикатора определить номер бара на котором была вызвана функция Initialize() ?
 
Вопрос не имеет смысла. Вызов Initialize() не зависит ни от каких баров.
Есть график. Помещаем на него индикатор. В чем вопрос?
 
vladko сказал(а):
Вопрос не имеет смысла. Вызов Initialize() не зависит ни от каких баров.
Есть график. Помещаем на него индикатор. В чем вопрос?

Попробую объяснить...
Есть график с барами, загруженные бары нумеруются скажем слева направа от 0 до N, помещаю индикатор на график и он начинает работать, прорисовываются бары с номерами N+1, N+2 и т.д.
Как в коде индикатора найти номер N ?
 
Мы просто не понимаем друг друга. Что такое "время инициализации индикатора на графике"? К чему это?

На графике у нас N баров. При запуске индикатора начинается перебор всех баров начиная с крайнего левого в функции OnBarUpdate().
 
vladko сказал(а):
Мы просто не понимаем друг друга. Что такое "время инициализации индикатора на графике"? К чему это?

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

vladko спасибо!
вопрос отпал
 
При бектестинге столкнулся с ситуацией. Для примера в системе профит ставим 1-2 пункта. Если ставить Historical Fill Processing Fill Type - Liberal и профит 2 то система торгует с прибылью. Если ставить Default и профит 1 то в убыток. Если я правильно понимаю разница в том как заполняется цена. Но если она дошла до 2 пунктов, то 1 пункт точно она "пробила". Кто в курсе почему такая разница в результатах подскажите. Очень надо.
 
подскажите , кто знает, можно ли в nt7 получить количество ордеров на ценовых уровнях стакана?
 
Всем добрый день.
Вопрос следующий: почему при использовании LastPlayback() (NTDirect.dll) в базе NinjaTrader появляются странные таймштампы ? (см. скриншот). Подобная ситуация повторяется хаотически, т.е. в некоторых случаях NT ставит правильный таймштамп, в некоторых - как на скриншоте. В чём может быть причина ? Перечитал несколько раз Help Guide до рези в глазах, но ничего кроме описания самого метода LastPlayback() найти не удалось.
Всем спасибо заранее за помощь.
 

Вложения

  • screen.jpg
    screen.jpg
    527,5 КБ · Просмотры: 207
Друзья ! Пожалуйста, любые версии, предположения, хоть что нибудь !
 
Привет всем!
Вопрос к уважаемым гуру...

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

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

А как проверить наличие отложек?
особенно учитывая что если отложка стоит не одна?
 
Добрый день. Вопрос сам по себе очень пространный: почему не работает 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 решилось следующим образом: при тестировании нужно следить за тем, что бы в настройках этого тестирования не появлялся пункт с выбором инструмента (выбирать инструмент в левом окошке), тогда тестирование работает. Но во всех возможных видео-инструкциях этот пункт присутствует, что несколько смущает.
 
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 
код должен быть запущен один раз, после закрытия текущего бара.
 
vladko сказал(а):
OnBarUpdate исполняется также на всех исторических барах. Чтобы этого не было делаем так:

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

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