Ошибки, баги, вопросы - страница 378

 

Почему выражение "if(ichi.TenkanSen(i)<ichi.KijunSen(i))" ВСЕГДА(на всех свечах) возвращает false, даже когда "if(ichi.TenkanSen(i)>ichi.KijunSen(i))"? Похоже на глюк в стандартной библиотеке. Полный код в файле.

 

 

Comment(DoubleToString(ichi.TenkanSen(0),5));

на евро-долларе выводит

 

Файлы:
Ich_1.mq5  3 kb
 
Graff:

Почему выражение "if(ichi.TenkanSen(i)<ichi.KijunSen(i))" ВСЕГДА(на всех свечах) возвращает false, даже когда "if(ichi.TenkanSen(i)>ichi.KijunSen(i))"? Похоже на глюк в стандартной библиотеке. Полный код в файле

во первых TerminalInfoInteger(TERMINAL_MAXBARS) - так нельзя.

замените на rates_total


во вторых таки да, какая то ошибка, m_data_total все время =0. Поэтому значений нет.

 
sergeev:

во первых TerminalInfoInteger(TERMINAL_MAXBARS) - так нельзя.

замените на rates_total

заменил на for(int i=0; i<=rates_total-1; i++) по сути ничего не изменилось. как не работало, так и не работает.
 
во вторых таки да, какая то ошибка, m_data_total все время =0. Поэтому значений нет.
 
sergeev:

во вторых таки да, какая то ошибка, m_data_total все время =0. Поэтому значений нет.
Попробовал изменить значения в Comment(DoubleToString(ichi.TenkanSen(3),5)); на 1,2,3 в Comment выводится постоянно одно и то же. Может подскажете что подкрутить чтоб заработало, а то официального фикса ждать нет возможности.
 
Graff:
Попробовал изменить значения в Comment(DoubleToString(ichi.TenkanSen(3),5)); на 1,2,3 в Comment выводится постоянно одно и то же. Может подскажете что подкрутить чтоб заработало, а то официального фикса ждать нет возможности.
не пользуйтесь данным классом. Берите обычный хендл.
 
sergeev:
не пользуйтесь данным классом. Берите обычный хендл.

Та не очень удобно его пользовать...

OK, спасибо за внимание, жду фикс.

 
Graff:

Та не очень удобно его пользовать...

OK, спасибо за внимание, жду фикс.

это по вашему не удобно? :)

int ich;

//+------------------------------------------------------------------+
int OnInit()
  {
   ich=iIchimoku(_Symbol,_Period, TenkanSen, KijunSen, SenkoSpan);
   return(0);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    IndicatorRelease(ich);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double ten[]; CopyBuffer(ich, 0, 0, rates_total, ten);
   double kij[]; CopyBuffer(ich, 1, 0, rates_total, kij);
   for(int i=0; i<rates_total; i++)
     {
      if(ten[i]<kij[i]) { up.Create(0,"Tenkan>Kijun"+IntegerToString(i),0,time[i],low[i]); up.Color(clrLimeGreen); }
      else { down.Create(0,"Tenkan<Kijun"+IntegerToString(i),0,time[i],high[i]); down.Color(clrTomato); }
     }
   return(rates_total);
  }
 
sergeev:

это по вашему не удобно? :)


Я не программист и мне не очень удобно при таком раскладе.

 А имеет ли смысл в 

CopyBuffer(ich, 1, 0, rates_total, kij);

заменить  rates_total на BarsCalculated(ich)?

PS: А Вы из какого города, если не секрет? 

 
Graff:


OK, спасибо за внимание, жду фикс.

кстати, а вы уверены, что не надо вызывать никаких дополнительных функций?

в библиотеке есть и Refresh и BufferResize. Мне кажется что они необходимы для нормального функционирования.

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