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

 
Alexey Viktorov #:

Василий, вы хоть что-то получите с ресурсного индикатора. Вы ничего не изменив в своём коде голословно возражаете.

Поймите наконец-то, что тик по ТФ не бывает. Только тик по инструменту. В понедельник я поменяю строку 

на 

Вы можете считать и ошибки, и некомпетентность разработчиков, и всё что угодно, но другого не будет.

Вы меня тоже не можете понять.

Мне нужны данные по CopyBuffer() со старшего ТФ с ресурсного индикатора на 1-м тике.  И я не могу их получить.

Хорошо, давайте дождемся понедельника. Надеюсь, у вас всё получится и вы сможете нам разъяснить, как этого добиться.

 
Vasiliy Pushkaryov #:

Вы меня тоже не можете понять.

Мне нужны данные по CopyBuffer() со старшего ТФ с ресурсного индикатора на 1-м тике.  И я не могу их получить.

Хорошо, давайте дождемся понедельника. Надеюсь, у вас всё получится и вы сможете нам разъяснить, как этого добиться.

И не получите данные с любого другого таймфрейма на первом тике.

Можно получить только с текущего, а любого другого - на втором тике.

https://www.mql5.com/ru/forum/6343/page1514#comment_53044551

--

Лечение

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2024.04.14 11:05

Спасибо, но вопрос о закрытом рынке - тиков нет, и OnCalculate срабатывает один раз при переключении таймфорейма

Я сделал так и это работает, но это не совсем нормальное условие

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[])
{
  if(rates_total-prev_calculated==0)
    return(rates_total);
  int res=Start(rates_total); // если "0" - то данные от МА не получены
  if(fl && res==0) {
    ChartSetSymbolPeriod(0,Symbol(),PERIOD_CURRENT);
    ChartRedraw();
    fl=false;
    return(0);
  }
  return(rates_total);
}

 
Vitaly Muzichenko #:

И не получите данные с любого другого таймфрейма на первом тике.

Можно получить только с текущего, а любого другого - на втором тике.


Спасибо за свое решение.

Я подал эту проблему для "лечения" в ветку с текущим билдом. Но вот Алексей стал уверять, что у него есть решение, поэтому пока жду.

Кстати, в процессе дискусси и проверок выяснилось, что с младшего ТФ можно получить данные на первом тике.Что для меня - тоже странно и склоняет в сторону того, что это все-таки "поломка", а не особенность.

 
Vitaly Muzichenko #:

И не получите данные с любого другого таймфрейма на первом тике.

Можно получить только с текущего, а любого другого - на втором тике.

https://www.mql5.com/ru/forum/6343/page1514#comment_53044551

--

Лечение


Виталий, не путайте первый тик при запуске индикатора и первый тик нового бара определённого ТФ.

 
Vitaly Muzichenko #:

И не получите данные с любого другого таймфрейма на первом тике.

Можно получить только с текущего, а любого другого - на втором тике.

https://www.mql5.com/ru/forum/6343/page1514#comment_53044551

--

Лечение


для индикаторов не вполне хорошее. Есть сайд эффект -  визуально график будет передвинут в самый конец (к текущему бару). Если пользователь отскроллил график влево то всё скаканёт обратно, а пользователь будет ругаться и возможно матом

 
Alexey Viktorov #:

Виталий, не путайте первый тик при запуске индикатора и первый тик нового бара определённого ТФ.

Да

 
Vitaly Muzichenko #:

Да

Что «да»? Мы обсуждали получение данных на новом баре, а по вашей ссылке вроде как о первом тике при запуске индикатора…

 

MT5 Build 4420

template< typename T >
class A
{
public:
   A(){}
   
   void f( const T& )
   {
   }
};

const double RAND_MAX = 32767.0;

void OnStart()
{
  A< double > a;
  
  a.f( 1.0 );                    // OK
  
  double x = rand() / RAND_MAX;
  a.f( x );                      // OK
  
  a.f( rand() / RAND_MAX );      //  '/' - parameter passed as reference, variable expected
}
 
Koldun Zloy #:

MT5 Build 4420

Смутил слэш в тексте ошибки?

 
fxsaber #:

Смутил слэш в тексте ошибки?

Там не должно быть ошибки.