2013-12-12 4 views
0

Я пытаюсь написать индикатор из MT4 в NT7. у меня есть следующие расчеты в МТ4:Преобразование MetaTrader4 в NinjaTrader

 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 и т. Д.?

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

ответ

0

Для NinjaTrader:

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); 

Если нет операторов добавления до этого, он поместит его в индекс 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); 

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