Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1115

 
Maxim Kuznetsov:

см. oanda api - если не ошибаюсь на картинке это PositionBook

спасибо!

 
Artyom Trishkin:

Так автопрокрутку-то графика нужно отключать. И помнить, что это асинхронная команда.

Отключена....

 
Сергей Таболин:

Отключена....

Тогда нужно искать в своём коде.

 

Пытаюсь в МТ5 брать данные индикатора МА  со старшего периода.

//OnInit
 if((slowMovingHandleHigherTF=iMA(_Symbol, HighMovingsTF, SlowMovingPeriod_HigherTF, 0, MA_Method, MA_Apply_To))==INVALID_HANDLE) {
      PrintFormat("Slow moving (HigherTF) handle troubles");
      return (INIT_FAILED);
   }
//OnCalculate
 if(!FillArrayFromBuffer(slowMovingHandleHigherTF,SlowValuesHigherTF,0,40)) Print("Beda");

Но мне пишет ошибку 4806 (Запрошенные данные не найдены). Когда беру с текущего ТФ, все нормально. Данные берет. А вот со старшим проблемы. Подскажите, как решить это

 
Artyom Trishkin:

Тогда нужно искать в своём коде.

Подскажите, где не прав?

void OnStart()
{
   ArraySetAsSeries(rates,true);
   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,false);
   

   for(int i = 0; i < in_range; i++)
   {

   // Тут рассчитываю X
      if(X)       {          ChartNavigate(ChartID(),CHART_END,-i);          if(MessageBox(ask,"ASK",MB_OKCANCEL) == IDOK)          {             ObjectCreate(ChartID(),"SigDN_"+IntegerToString(i),OBJ_VLINE,0,rates[i].time,rates[i].open);             //return;             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_COLOR,clrRed);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTABLE,true);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTED,false);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);             Print("SigDN_",i);          }       }    } }

Скрипт запускал на H2 в начале часа.

Как уже писал, работает нормально, а потом, с какого-то переляду, график позиционируется в конце и появляется MessageBox. А чё отвечать на запрос, если я не вижу найденную фигуру?

 

2361
Начиная с периода H1, переменная или функция выводят странные значения.

Print(_Period);
Print(Period());
H1
16385
16385
H4
16388
16388

и т.д.

 
Roman:

2361
Начиная с периода H1, переменная или функция выводят странные значения.

и т.д.

В чём их "странность"?

 
Artyom Trishkin:

В чём их "странность"?

Переменная _Period и функция Period() до M30 включительно, выводит значение в минутах.
Если период M1 то 1
Если период M2 то 2
...
Если период M30 то 30

Логично, что часовой период будет 60
двухчасовой 120
трёхчасовой 180
и т.д.

Но начиная с H1 выводит не те значения.

 
Roman:

Переменная _Period и функция Period() до M30 включительно, выводит значение в минутах.
Если период M1 то 1
Если период M2 то 2
...
Если период M30 то 30

Логично, что часовой период будет 60
двухчасовой 120
трёхчасовой 180
и т.д.

Но начиная с H1 выводит не те значения.

EnumToString(Period())

 
Сергей Таболин:

EnumToString(Period())

В справке говорится, что должно возвращаться значение таймфрейма, а не идентификатор преобразованный с помощью EnumToString()
Переменная _Period возвращает int.
ENUM_TIMEFRAMES  Period() тоже подразумевает, что возвращается int.