• Demo счет NinjaTrader, регистрируется в брокерской компании NinjaTrader Brokerage . NinjaTrader™, LLC
    Ссылка на демо счет NinjaTrader
    Фид на соединении Continuum/CQG.
    Для справки: Continuum - это брэнд CQG, и ни чем они не отличаются друг от друга.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

Программирование EnterLongLimit в Strategy Analyzer

thinarthrill

Well-Known Member
NinjaTrader
#1
Что называется избил руки в кровь. Накидал простого робота с выставлением отложенного лимитника (вызываю метод EnterLongLimit/EnterSortLimit при определенном сигнале). Но не могу нормально протестировать результат в Strategy Analyzer. Если после прогонки стратеги посмотреть на график, то видно, что бэктест как-то некорректно обрабатывает лимитник. А именно, не на уровне цены, на которой лимитмник был установлен, а на цене открытия следующего бара. Для наглядности скрин: https://cloud.mail.ru/public/6SX6/uMBbkna2L. Перепробовал все настройки тестера стратегий, в скрипте пробовал добавить еще один тиковый график, чтобы точно скрипт на каждом тике срабатывал. Не помогает. Если прогнать робота в маркет реплее, то все корректно отрабатывает. Но там результаты за пару недель можно проанализировать. Хотелось бы за более длительный период прогнать. У кого-нибудь есть опыт построения стратегий с использованием лимитников? Как тестируете? Может я чего-то недогоняю. Или в скрипте надо отключать автоматическое управление ордерами и самому ими управлять?
 

thinarthrill

Well-Known Member
NinjaTrader
#3
Таки через дополнительную дата серию с тиковым графиком... просто до ума не довел. Лимитник надо выставлять не в текущей дата серии, а в тиковой
Код:
protected override void OnStateChange()
{
  if (State == State.Configure)
  {
     AddDataSeries(BarsPeriodType.Tick, 1);
  }
}


protected override void OnBarUpdate()
{
   // Check if the main data series triggered an bar update event
   if (BarsInProgress == 0)
   {
       // Submit an order on the more granular series in the context of our main bar
             EnterLongLimit(1, true, 1, SomePrice, "Long trade");
   }
}
 
Вверх Снизу