Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запустили испанскую и португальскую версии сайта. Оцени сам!
Pavel
13
Pavel 2014.11.15 19:18 

Плиз хелп. Выкладываю код. Скажите почему разные значения выдают iMa и iMAOnArray. Перепробовал разные варианты ( те которые //). Ничего не помогает.


#property copyright "Copyright 2014,"

#property link      ""

#property version   "1.00"

#property strict

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---

   double p,t;

   double pp[];

   ArrayResize(pp,96);

   ArraySetAsSeries(pp,true);

   p=iMA(Symbol(),0,96,0,MODE_EMA,PRICE_CLOSE,0);

   ArrayCopy(pp,Close,0,0,96);

   //CopyClose(Symbol(),0,0,96,pp);

   //for(int i=0; i<96;i++){pp[i]=Close[i];}

   t=iMAOnArray(pp,0,96,0,MODE_EMA,0);

   Print(" iMa=",p," iMAON=",t);

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

//---

   

  }

//+------------------------------------------------------------------+

Sergey Dzyublik
4621
Sergey Dzyublik 2014.11.15 21:00  
#property strict

int OnInit()
  {
   double p,t;
   double pp[];

   ArrayResize(pp,96);
   ArraySetAsSeries(pp,true);

   p=iMA(Symbol(),0,96,0,MODE_EMA,PRICE_CLOSE,0);
   ArrayCopy(pp,Close,0,0,96);

   //CopyClose(Symbol(),0,0,96,pp);
   //for(int i=0; i<96;i++){pp[i]=Close[i];}

   t=iMAOnArray(pp,0,96,0,MODE_EMA,0);
   Print(" iMa=",p," iMAON=",t);

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
  }

 
кнопка SRC на панели при написании коментария для вставки кода
Вот ваш код так хоть прочитать можно.
Pavel
13
Pavel 2014.11.15 21:06  
ALXIMIKS:
кнопка SRC на панели при написании коментария для вставки кода
Вот ваш код так хоть прочитать можно.
Pavel
13
Pavel 2014.11.15 21:07  
Прошу прощения, не знал.
Ну а что касается самой темы, что не так?
Vitalie Postolache
11084
Vitalie Postolache 2014.11.15 22:35  
Интересно, а зачем же OnTick, если весь код и так в OnInit прекрасно помещается )))
Sergey Dzyublik
4621
Sergey Dzyublik 2014.11.15 22:40  
Нету ни какой ошибки все работает верно как и должно.
Ема требует разгона для получения значений.
При расчете iMA - разгон берется от Bars - 1 и рассчитываются в кеш значения для всех баров. Потом возвращается значение только для нужного из кеша.
При расчете iMAOnArray - разгон берется от размера массива. Так как разгон короче, то и получается разногласие в результатах.
И чем ближе к началу разгона - тем больше разногласие.
Для того что бы выровнять результаты в данном случае попробуйте увеличить размер массива для  расчета iMAOnArray  в 2.05 раза.
Pavel
13
Pavel 2014.11.15 23:10  
Спасибо разобрался сам, действительно все дело в разгоне.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий