Не рекламы ради, а помощи для......... - страница 3

 

С тестером вроде как разобрался, хотя проблемы ещё есть. Тут другой вопрос....

Скачал функцию от МТ4

int TimeHourMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.hour);
  }  

Далее в начале ОнКалькулейтед сделал так.

   ArraySetAsSeries(time,true);

Потом собственно условие. Индикатор нужно считать когда час больше 15. Тоесть работаем когда часы больше 15. Но не работает. Вопрос??? ЧТо не так?????

      for(i=limit; i>=1; i--)
        {

if (TimeHourMQL4(time[i])>15){        
 
Mihail Marchukajtes:

С тестером вроде как разобрался, хотя проблемы ещё есть. Тут другой вопрос....

Скачал функцию от МТ4

Далее в начале ОнКалькулейтед сделал так.

Потом собственно условие. Индикатор нужно считать когда час больше 15. Тоесть работаем когда часы больше 15. Но не работает. Вопрос??? ЧТо не так?????


Всё очень просто. Тебе нужно оформить это так

int HH=TimeHourMQL4(time[i]);
if (HH>15){
//
}

Так будет работать, БРАТ!!!!

 
Mihail Marchukajtes:

Всё очень просто. Тебе нужно оформить это так

Так будет работать, БРАТ!!!!


Спасибо!!! Я знал что ты меня не подведёшь.....

 

Это писец, Ребята. Какой час уже бьюсь никак не могу решить задачу.

У меня в индикаторе идёт вызов данных из другого индикатора, но при вот такой конструкции происходит ошибка 4806. То есть сам индикатор данные которого нудно взять, подгружается из файла.

Причём соседний индюк точно такойже и у него всё ровно, а этот не хочет грузится хоть ты тресни. Что нужно делать в таких случаях. Потому как скриптом выгружаю данные, в ксв одни значениея, а в коменте при вызове в основной индюк, там значения совершенно другие. Что то в справке никак не могу найти. Может быть есть какието решения????

  double OI3(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(OI3_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the 111111111111111 indicator, error code %d",GetLastError());
      
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

После определения хендла копирую значение буфера вот таким образом. Вылитает это сообщение и всё, значения отличаются от тех которые выгружает скрипт, у которого стоит задержка выполнения, что ему и позволяет делать выгрузку без помех. Подскажите что нужно сделать чтобы данные в оконцовке подгрузились???

 

Всем привет!!! Процесс перехода на МТ5 идёт полным ходом и работа кипит, но прежде всего от недопонимания какихто вещей. А именно.

Пишем текстовый файл с разделителями запятая. Первое значение это дата, второе это ОИ. Ну вроде пишем и пишем чего тут такого, но эти данные отображает индикатор, который читает файл при инициализации и заполняет буфер. Далее в реалтайме требуется при появлении нового бара, открыть файл и подгрузить данные за бар номер 1. Эти данные находятся в конце файла. Вот собственно и вопрос. Как организовать чтение файла снизу вверх или с конца в началю и сделать это построчно. формат данных таков:

20171218,241381


Думаю это можно решить прочитав символ конца строки и как то переместить указатель вверх..... Но в справке об этом ничего не нашёл. Тут возникает вопрос, а возможно ли это в принципе..????

 

Ну или как установить указатель за 20 строк перед концом файла????

 
Mihail Marchukajtes:

Ну или как установить указатель за 20 строк перед концом файла????

Вот уже неделя прошла, а советов так и нет...

Надо посчитать сколько байт занимает строка и переместить файловый указатель на столько байт от конца, со знаком минус. Прочесть строку, переместить ещё на такое-же количество байт и так читать построчно с конца файла.

Какие переменные сколько байт занимают читать тута.
Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Mihail Marchukajtes:

Ну или как установить указатель за 20 строк перед концом файла????

В самую первую строку пишите указатели на последние 20(сколько необходимо) строк в нужном порядке, + еще какую нибудь нужную информацию. При добавлении новой строки будете переписывать эту строку актуальными значениями, а для чтения значений читаете первую строку.

Если что то глобальное, то: https://www.mql5.com/ru/articles/932 

Работа с СУБД MySQL из MQL5 (MQL4)
Работа с СУБД MySQL из MQL5 (MQL4)
  • 2014.10.15
  • Eugeniy Lugovoy
  • www.mql5.com
Проблема взаимодействия MQL с базами данных уже давно поднималась и актуальна по сей день. С использованием СУБД возможности платформы MetaTrader значительно расширяются: хранение и анализ истории котировок, копирование сделок с одной торговой платформы на другую, трансляция котировок/сделок в режиме реального времени, выполнение громоздких...
 
Petr Doroshenko:

В самую первую строку пишите указатели на последние 20(сколько необходимо) строк в нужном порядке, + еще какую нибудь нужную информацию. При добавлении новой строки будете переписывать эту строку актуальными значениями, а для чтения значений читаете первую строку.

Если что то глобальное, то: https://www.mql5.com/ru/articles/932 


Всем спасибо за ответы. Решил проблему другим способом, а ьпо текущему способу есть самый простой вариант. В ините, когда читаем фай и доходим до конца, записываем положение указателя в переменную. При последующем открытии файла, когда он уже дописан, переносим указатель по значению переменной, в итоге начинаем читать файл с места где начались новые данные и снова читаем до конца и снова сохраняем положение указателя. В итоге мы подгружаем файл в процессе работы, только то что было дополнено в него. Но я решил другим способом.