Преобразование MetaTrader4 в NinjaTrader

Я пытаюсь написать индикатор изначально из MT4 в NT7. У меня есть следующие расчеты в MT4:

     dayi = iBarShift(Symbol(), myPeriod, Time[i], false);
     Q = (iHigh(Symbol(), myPeriod,dayi+1) - iLow(Symbol(),myPeriod,dayi+1));

     L = iLow(NULL,myPeriod,dayi+1);
     H = iHigh(NULL,myPeriod,dayi+1);
     O = iOpen(NULL,myPeriod,dayi+1);  
     C = iClose(NULL,myPeriod,dayi+1);

myperiod — это переменная, в которую я помещаю период в минутах (1440 = 1 день). Какие функции в NT7 эквивалентны функциям iBarShift, iHigh и т.д.?

заранее спасибо


person pinker    schedule 12.12.2013    source источник


Ответы (1)


Для НиндзяТрейдер:

iLow = Low or Lows for multi-time frame
iHigh = High or Highs
iOpen = Open or Opens
iClose = Close or Closes

Таким образом, примером будет

double low = Low[0]; // Gets the low of the bar at index 0, or the last fully formed bar (If CalculateOnBarClose = true)

Чтобы убедиться, что вы работаете на таймфрейме 1440 минут, вам нужно будет добавить следующее в метод Initialize():

Add(PeriodType.Minute, 1440);

Если перед этим нет операторов Add, он поместит его в индекс 1 (O — индекс диаграммы по умолчанию) в двумерном массиве. Таким образом, чтобы получить доступ к минимуму 1440-минутного бара с индексом 0, нужно:

double low = Lows[1][0];

Для iBarShift посмотрите на

int barIndex = Bars.GetBar(time);

который даст вам индекс бара с соответствующим временем. Если вам нужно использовать эту функцию на барах 1440 (или других), используйте свойство BarsArray для доступа к правильному объекту Bar, а затем используйте для него метод GetBar. Например:

int barIndex = BarsArray[1].GetBar(time);

Надеюсь, это поможет.

person Sugah Shane    schedule 24.12.2013