Чему верить?!

 

Взял я две МА и считаю между ними разницу. Вот код:

#property copyright "Copyright © 2006-2009, Sergey Kravchuk. http://forextools.com.ua"
#property link      "http://forextools.com.ua"

#property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 1

extern int MAPeriodShort = 10;
extern int MAPeriodLong  = 20;
extern int MAMethod = MODE_LWMA;
extern int MAPrice = MODE_OPEN;

double Buffer1[];

int init() { SetIndexBuffer(0, Buffer1); }

int start()
{
  int i, k;
  ArrayInitialize(Buffer1, EMPTY_VALUE);

  for (i = Bars - 1; i >= 0 ; i--)
  {
    double MAShort = iMA(NULL, 0, MAPeriodShort, 0, MAMethod, MAPrice, i);  
    double MALong  = iMA(NULL, 0, MAPeriodLong , 0, MAMethod, MAPrice, i);  
    Buffer1[i] = MAShort - MALong;
  }
  SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2, DarkGreen);
}

беру цены открытия на текущем баре. График стороится нормально. Для контроля - цепляю две МА с темиже параметрами на основной график, чтобы убедится что разница посчитана правильно. И что я вижу? У меня посчитана разница в -1 пункт, а по данным с графика в этом месте +2

на следующем вааще: моя разница дает -3 хотя по данным с графика =0.

И как это понимать? какой из графиков "врет"?

Файлы:
____ma_.mq4  1 kb
 
ForexTools >>:

беру цены открытия на текущем баре


Т.е. я так понимаю MAMethod = 0

а в програмке MAMethod=3

может в этом причина?

 
RomanS >>:

Т.е. я так понимаю MAMethod = 0

а в програмке MAMethod=3

может в этом причина?

и в индикаторе и на индикаторах в графиках MAMethod=3 (MODE_LWMA)

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) 
 

Может перерисовка?

Попробую тоже самое только с MAMethod=0, просто для эксперимента

 

Знакомый ляп:)

Скажите, в чем разница между MODE_OPEN и PRICE_OPEN?

 

Вот контрольный выстрел

#property copyright "Copyright © 2006-2009, Sergey Kravchuk. http://forextools.com.ua"
#property link      "http://forextools.com.ua"

#property indicator_chart_window
#property indicator_level1 0
#property indicator_buffers 2

extern int MAPeriodShort = 10;
extern int MAPeriodLong  = 20;
extern int MAMethod = MODE_LWMA;
extern int MAPrice = MODE_OPEN;

double Buffer1[];
double Buffer2[];

int init() { SetIndexBuffer(0, Buffer1); SetIndexBuffer(1, Buffer2); }

int start()
{
  int i, k;
  ArrayInitialize(Buffer1, EMPTY_VALUE);
  ArrayInitialize(Buffer2, EMPTY_VALUE);

  for (i = Bars - 1; i >= 0 ; i--)
  {
    Buffer1[i] = iMA(NULL, 0, MAPeriodShort, 0, MAMethod, MAPrice, i);  
    Buffer2[i] = iMA(NULL, 0, MAPeriodLong , 0, MAMethod, MAPrice, i);  
  }
  SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, Magenta);
  SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2, SteelBlue);
}

вот результат: встроенный инструмент строит график с опережением на 1 бар (или встроенная функция iMA запаздывает на один бар)


 
Xupypr >>:

Знакомый ляп:)

Скажите, в чем разница между MODE_OPEN и PRICE_OPEN?

MODE_OPEN = 0

PRICE_OPEN = 1

 

Парадоксы нормализации. Разница нормализованных значений не равна нормализованой разнице ненормализованных значений.

Ненормализованое значение 1 - 1.41595, нормализованное - 1.4160.
Ненормализованное значене 2 - 1.41584, нормализованное - 1.4158.

Разница ненормализованых значений - 0.00011, она же нормализованная 0.0001.

Разница нормализованных значений - 0.0002

 
Urain >>:

MODE_OPEN = 0

PRICE_OPEN = 1

Вот-вот, и используются эти константы в совершенно разных функциях.

 
Urain >>:

MODE_OPEN = 0

PRICE_OPEN = 1

таки да!!! издержки копипастинга и автоподстановки :((((

Причина обращения: