Как в Quik получить котировки свечи по номеру бараПржде чем критиковать кого-то, необходимо его за что то похвалить. Например: «Классный ты парень, но дураааак….». Я всегда придерживаюсь этого правила и Вам советую. Сейчас я немного покритикую разработчиков Quik.

Всегда идя навстречу пожеланиям трейдеров, они встроили в свой терминал возможность создавать механические торговые системы и разработали для этого новый язык программирования – Qpile. В этом языке они даже реализовали поддержку ассоциативных массивов, этого нет даже в Delphi! Но при этом упустили из внимания такие элементарные вещи, что написание хоть сколько-нибудь серьезных программ требует хорошей смекалки.

Например – если уж ты начал цикл, то не выйдешь из него, пока цикл не отработает полностью. Цикла типа “while ” нет вообще, а ведь он, в большинстве случаев, удобнее и универсальнее, чем “for“. Переменные превращаются из строковых в вещественные, и наоборот, совершенно незаметно для неподготовленных трейдеров, и даже сами разработчики в своих примерах прибавляют 0 к переменным, чтобы быть уверенными, что используют вещественный тип в условии.

Но это все мелочи, пока дело не доходит до самого главного инструмента трейдеров – графика котировок. В техническом анализе принято анализировать рынок за несколько последних баров (дней, часов или минут), и все программы технического анализа используют такой же подход. А в языке Qpile мы можем обращаться к свечам (барам) по дате и времени, но не по номеру. Хотите узнать, какая была цена закрытия три бара назад? Хотите узнать максимально высокую цену (экстремум) за последние 7 баров? Ох и непросто это вычислить.

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

PORTFOLIO_EX OHLC;
DESCRIPTION OHLC;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;

PROGRAM
' Настраиваемые параметры
ClassCodeList="SPBFUT" ' код класса инструмента
Instrument="RIM7" ' название инструмента
Interval=5 ' интервал (таймфрейм) на графике
DayToFind=30 ' сколько дней назад искать свечи (можно уменьшить, чтоы ускорить работу программы)
CandleToFind=10 ' сколько свечей надо найти
OutFile = "c:\quotes.csv"	 ' файл, куда записывать данные в формате CSV

DELETE_ALL_ITEMS()
CandleCount=0
CurYear=get_value(GET_DATETIME(), "YEAR")
CurMonth=get_value(GET_DATETIME(), "MONTH")
CurDay=get_value(GET_DATETIME(), "DAY")
CurHour = GET_VALUE(GET_DATETIME(), "Hour")
CurMin = GET_VALUE(GET_DATETIME(), "Min")
CurMin = Interval*Floor(CurMin/Interval) ' округляем минуты до "интервальных"
for i from 1 to (DayToFind*24)*(Floor(60/Interval))
  TextData=fTextData(CurYear,CurMonth,CurDay) &""
  TextTime=fTextTime(CurHour,CurMin) & ""
  if (CandleCount<CandleToFind) ' если нашли сколько нам надо свечей - гоняем пустой цикл
    Candle=GET_CANDLE(ClassCodeList,Instrument, "", Interval & "", "PRICE", TextData, TextTime)
    Open=GET_VALUE (Candle, "Open")+0
    if (Open>0)
      CandleCount=CandleCount+1
      High=GET_VALUE (Candle, "High")+0
      Low=GET_VALUE (Candle, "Low")+0
      Close=GET_VALUE (Candle, "Close")+0
      output=CREATE_MAP()
      output=SET_VALUE(output,"Date",TextData)
      output=SET_VALUE(output,"Time",TextTime)
      output=SET_VALUE(output,"Open",Open)
      output=SET_VALUE(output,"High",High)
      output=SET_VALUE(output,"Low",Low)
      output=SET_VALUE(output,"Close",Close)
      ADD_ITEM(CandleCount,output)
      WRITELN(OutFile, TextData  & "," & TextTime & "," & Open & "," & High & "," & Low & "," & Close)
    end if
    ' откат на "интервал" назад
    CurMin=CurMin-Interval
    if CurMin<0
      CurMin=60+CurMin
      CurHour=CurHour-1
      if CurHour<0
        CurHour=23
        CurDay=CurDay-1
        if curDay<1
          CurDay=31
          CurMonth=CurMonth-1
          if CurMonth<1
            CurMonth=12
            CurYear=CurYear-1
            if CurYear<0
              message ("Не найдены котировки до рождества Христова! :-D ",1)
            end if
          end if
        end if
      end if
    end if
  end if
end for

' функция перевода даты в текстовый формат
func fTextData(Year,Month,Day)
  if (LEN(Month) < 2)
    Month = "0" & Month
  end if
    if (LEN(Day) < 2)
    Day = "0" & Day
  end if
  result = Year & Month & Day
end func

' функция перевода времени в текстовый формат
func fTextTime(Hour,Min,Sec)
  if (LEN(Hour) < 2)
    Hour = "0" & Hour
  end if
    if (LEN(Min) < 2)
    Min = "0" & Min
  end if
  result = Hour & Min & "00"
end func

END_PROGRAM

PARAMETER Date;
PARAMETER_TITLE Дата;
PARAMETER_DESCRIPTION Дата;
PARAMETER_TYPE STRING(30);
END

PARAMETER Time;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Время;
PARAMETER_TYPE STRING(30);
END

PARAMETER Open;
PARAMETER_TITLE Open;
PARAMETER_DESCRIPTION Open;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER High;
PARAMETER_TITLE High;
PARAMETER_DESCRIPTION High;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER Low;
PARAMETER_TITLE Low;
PARAMETER_DESCRIPTION Low;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER Close;
PARAMETER_TITLE Close;
PARAMETER_DESCRIPTION Close;
PARAMETER_TYPE NUMERIC(10,2);
END

END_PORTFOLIO_EX

Перед запуском программы (портфеля) выведите график по нужному вам инструменту (бумаге) в выбранном временном интервале.

Настройка таймфрема графика в Quik

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

Теперь мы имеем таблицу, в которой свечи с графика представлены в текстовом виде и имеют нумерацию от 1 до 10 (или сколько вы указали в параметрах).

Таблица OHLC в Quik

Эту таблицу можно экспортировать в Excel (с просьбы об этом от «Репликатора САС-П001-01», постоянного читателя блога, я и решил написать эту программу), а можно обращаться к этой табличке из своей программы, не заботясь о дате, а оперируя номером свечи (строки в таблице). Пожелания подобного рода часто встречаются от трейдеров на форуме Quik, надеюсь, эта программа будет полезна и им.

К сожалению, сейчас у меня нет возможности всесторонне протестировать программу, поэтому если обнаружите ошибку, напишите, пожалуйста, об этом в комментариях.

На правах рекламы: Заказывайте двери из гнб от изготовителя.

Читайте также:

  • Торговая стратегия 1-2-3 Reversal
  • Торговая стратегия "1-2-3 Reversal" написана по книге "How I Tripled My Money In The Futures Market" автор Ulf Jensen, страница...
  • Тестируем возможности индикатора RSI
  • В прошлом нашем выпуске мы ознакомились с индикатором RSI, где Чак Лебо предложил несколько способов использования этого индикатора. Сегодня я...
  • Учебный счет для интернет-трейдинга
  • Прежде чем окунаться в интернет трейдинг с головой, и самое важное - прежде чем начать торговать на свои настоящие деньги,...
  • Как начать играть на бирже
  • Начать играть на бирже не сложно, сложнее не проиграть свой капитал в первые несколько дней торговли. Чтобы избежать этого тщательно...


    Отзывов: 48 на “Как в Quik получить котировки по номеру свечи (бара)”

    1. репликатор САС-П001-01 пишет:

      (улыбаясь)С Вами говорит САС-П001-01.Вы Человек?Моим сенсорам было приятно почувствовать уважение к своей просьбе.(серьёзно)Спасибо!Будет время обязательно протестируем.Мне очень приятно, что Вы проделали эту работу для меня…ну, и для других конечно!(Простите за глупый вопрос)А какой компилятор лучше использовать?

    2. Торговый робот пишет:

      Рад оказаться полезным :-)
      Компилятор никакой не нужен, qpile не компилируемый язык. Надо всего-лишь сохранить сей код в текстовый файл с расширением qpl и потом в Квике загрузить “портфель” (CTRL+F10 – “Загрузить локально”, CTRL+F11 – указать период расчета и “Применить”, CTRL+F12 – “Добавить все” и “Да”)
      Только график надо вывести заранее, в соответствии с интервалом, указанном в программе в 10 строке.

    3. репликатор САС-П001-01 пишет:

      (провокационно)Будущее за роботами?(Смех робота Вертера из к/ф “Гостья из будущегог”)

    4. Виктор пишет:

      Было бы интересно узнать поподробнее

    5. IAD пишет:

      Но следует учитывать, что в Excel вмещается только 65535 строк. Возможно на следующей строке будет ошибка.

    6. Торговый робот пишет:

      Виктор, подробнее о чем хотелось бы узнать?
      IAD, 65535 строк эта программа и не выведет, ввиду универсальности перебор свечек идет весьма не быстро, поэтому 65 тысяч строк будут просчитываться с минут 10 наверное.
      Я думаю, оптимальнее всего использовать эту программу для вывода 10-30 свечей, обычно больше и не надо.

    7. репликатор САС-П001-01 пишет:

      (огорчённо)Торговый робот, это САС-П001-01.Программа считает неверно, а именно, округляет котировки до целых чисел.Например, max=63.57,программа пишет 64.Ну, а в целом это то , что и надо.Я восхищён!Правда не проверял экспорт в Excel.

    8. Торговый робот пишет:

      Исправлю, я проверял на фьючерсах, там нет копеек. Вот только до компьютера доберусь :-)

    9. Торговый робот пишет:

      Поправил, теперь котировки показываются с точностью до 2 знаков после запятой.
      Если кому-то это не надо или наоборот, слишком мало – укажите сколько знаков вам надо, изменив 2 на количество знаков в PARAMETER_TYPE NUMERIC(10,2) (строки 107, 113, 119 и 125)

    10. репликатор САС-П001-01 пишет:

      (задумчиво)Мда-а-а…Есть проблемы.Чтобы использовать данную программу “внутри дня” необходимо ограничивать работу цикла не по количеству “Candle”, а по “Date”.Вот в таком виде она “залезает” на другую дату, а хотелось бы остановить её, как только, например, 09.06.2008 заканчивается и появляется 08.06.2008, независимо от того сколько “Candle” она нашла, но при этом оставить ввод параметра “Candle” так, как он есть сейчас, ну, самому задавать количество свечей.И ещё, что-то непонятно почему при экспорте в Excel в колонке “Open” совсем не то, что вижу в Quik.В целом конечно вещь нужная т.к. позволяет “лопатить кучу всякой чепухи” и использовать в дальнейшей обработке….(улыбаясь)Чёрт!Придётся почитать про Qpile.

    11. Торговый робот пишет:

      В этом и суть универсальной программы, что она собирает котировки “по штукам” независимо от дня. Если нужны котировки только за сегодня, то такая программа будет в 5 раз меньше.
      В твоем случае, коллега, можно в программе в 50 строке

      CurHour=23
      заменить на

      CandleCount=CandleToFind

      Таким образом при смене дня прекратится поиск котировок и потом еще немного погоняется пустой цикл.

      А про Qpile почитай обязательно :-)

    12. Alex пишет:

      Пардон, а какой интервал ставить, если данные дневные?

    13. Торговый робот пишет:

      Alex, сейчас у меня Quik нет под рукой, чтобы проверить, но осмелюсь предположить, что 1440 (24*60)
      Попробуйте, заодно проверим, действительно ли универсальная программа получилась?
      Если что-то не так будет – напишите здесь, я тогда исправлю.

    14. Alex пишет:

      Я тоже так подумал. Но выдает пустую таблицу в результате. На внутридневных данных вроде работает хорошо. Очень полезную работу Вы проделали. Хочется выразить искренний респект. Еще бы данные объемов приделать.

    15. kavolorn пишет:

      Спасибо автору за скрипт! Мне в данный момент нужен именно он :) и чтобы искал последние бары независимо от дня.. главное, чтобы последние!
      Еще раз благодарствую :)

      P.S. Qpile очень страшный язык, если приходится для таких вещей столько наворотов придумывать..

    16. Торговый робот пишет:

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

      P.S. Да, язык я правда ужасный, но я на бейсике в свое время много писал программ, потому привык к подобного рода “ухищрениям” :-)

    17. Паша пишет:

      а как получить данные из окна котировок?

    18. Торговый робот пишет:

      Не совсем понятен вопрос. В Quik из любого окна можно получить данные в свою программу на Qpile (см.хелп к программе) либо в сторонние программы, вроде Excel через DDE или ODBC

    19. Паша пишет:

      Мне для программы на Qpile. Все, нашел такую функцию. Спасибо.

    20. QD пишет:

      Gracias! Реально помогло в написании робота! Спасибо еще раз! Внедряем))

    21. NRV пишет:

      Очень полезная вещь, qpile начал тока вникать, а пока не нашел твою чудо вещь извращался с периодами в эксель VBA. Возникла проблема с твоей табличкой хочу ее вывести в эксель “Вывести через DDE сервер” а он пишет ошибку и вообще закрывает квик иногда вроде все ок? не подскажешь в чем может быть ошибка?

    22. Торговый робот пишет:

      NRV, сказать по правде, вывод в Excel этой таблицы я не проверял, ибо был на все 100 уверен, что тут нет проблем. Таблица сформирована по всем “стандартам”… Сегодня доберусь до комп��ютера с quik’ом, проверю что к чему.

    23. Робот в Проекте пишет:

      Эта… А где продолжение марафоника.. Так все интересна шло, бац! и разрыв соединения (образна). Я вот только хотел бы сделать роботика и для меня все Ваши стататьи и комментарии оч и оч актуальны. Все аргументы и споры я воспринимаю оч положительно. Для меня это все! интересно. Спасибо большое за такой интересный и толерантный сайт!

      Мы (я) требуем продолжение “банкета”!

      PS
      Сорри, что не совсем по теме. Просто не нашел, где с этим можно было обратиться напрямую. Если подскажете, буду признателен и корректен.

    24. NRV пишет:

      Блин вывод в эксель гючит ваще не понятно почему то вы водит то ошибку выдает и ваще квик полностью закрывает!!!

    25. Робот в Проекте пишет:

      для NRV. А я вот читал на одном из форумов, что от версии Экселя зависеть может. Может попробовать предыдущую версию офиса? (как вариант, а вдруг поможет) В других вариантах я пока не специалист – буду учиться.

    26. NRV пишет:

      дык офис 2003 sp2 (11.6560), далеко не новый и такая трабла тока с этой табличкой до этого даж не знал что такой глюк есть

    27. Андрей пишет:

      Окажу помощь в написании программы на QPILE. Если кому-то интересно, обращайтесь – qpile@mail.ru

    28. Toshkin пишет:

      Хм.. не нашел в описании qpile функции get_candle. Не просветите случаем?

    29. Toshkin пишет:

      Уже нашел на сайте квика. А у тройки до сих пор старая версия лежит ((.

    30. urpok пишет:

      Добрый день, Торговый робрт!
      Не могли бы помочь написать робота на языке Qpile? Суть системы: Покупка при закрытие короткой скользящей средней выше длинной скользящей средней и продажа при закрытие короткой ниже длинной средней.

    31. Торговый робот пишет:

      Здравствуйте, urpok!
      Торговая система, которую вы предлагаете, очень примитивна, не вздумайте сразу торговать по ней настоящими деньгами, проверьте сперва, уверен, что разочаруетесь :-)
      Но для изучения qpile такая система в самый раз. В ближайшие дни напишу программу по вашему алгоритму и выложу на этом сайте

    32. Влад пишет:

      Все вроде сделал правильно:
      -ввел инструмент;
      -открыл график с нужным интервалом;
      - загрузил “портфель” (CTRL+F10 – “Загрузить локально”;
      период расчета указал 10 сек; и т.д.
      А при запуске таблицы: таблица со всеми названиями есть , а поля пустые

    33. Влад пишет:

      Проба пера! Оставил коммент. он попал

    34. NRV пишет:

      вопрос к разработчику: А как можно к этой табличке (просто замечательная) прикрутить еще и объем очень нужно?

    35. Штурман пишет:

      Спасибо тебе, добрый человек!
      Нет, реально я полный новичек в QPILE, поэтому твой код мне очень помог начать. Я посидел и понял, почему ты используешь некоторое количество дней назад, а потом гоняешь пустой цикл. Это не очень корректно и самое главное это можно исправить, п��тем некорректности самого QPILE. А все дело в том, что переменную цикла можно менять в самом теле цикла. Тогда в нашем случае он получается легче и быстрее. Вот, собственно, сам измененный код:

      ————————–
      PORTFOLIO_EX Ref;
      DESCRIPTION Ref;
      CLIENTS_LIST ALL_CLIENTS;
      FIRMS_LIST ALL_FIRMS;

      INCLUDE functions.inc;
      PROGRAM
      ‘ ————————————————
      ‘ Настраиваемые параметры
      ‘ ————————————————
      ClassCodeList=”SPBFUT” ‘ код класса инструмента
      Instrument=”RIM9″ ‘ название инструмента

      Interval=30 ‘ интервал (таймфрейм) на графике
      N=50 ‘ сколько свечей надо найти

      DELETE_ALL_ITEMS()

      InitDateTime()

      output=CREATE_MAP()

      for i from 1 to N

      TextData=fTextData(CurYear,CurMonth,CurDay) &”"
      TextTime=fTextTime(CurHour,CurMin) & “”

      Candle=GET_CANDLE(ClassCodeList, Instrument, “”, Interval & “”, “PRICE”, TextData, TextTime)
      Open=GET_VALUE (Candle, “Open”)+0

      if (Open>0)
      Reference=GET_VALUE (Candle, “Close”)+0
      output=SET_VALUE(output,”Date”,TextData)
      output=SET_VALUE(output,”Time”,TextTime)
      output=SET_VALUE(output,”Price”,Reference)
      ADD_ITEM(i,output)
      else
      i = i – 1 ‘ Если бара нет (нет торгов), то счетчик баров уменьшаем
      end if

      ‘ откат на “интервал” назад
      CurMin=CurMin-Interval
      if CurMin<0
      CurMin=60+CurMin
      CurHour=CurHour-1
      if CurHour<0
      CurHour=23
      CurDay=CurDay-1
      if curDay<1
      CurDay=31
      CurMonth=CurMonth-1
      if CurMonth<1
      CurMonth=12
      CurYear=CurYear-1
      if CurYear<0
      message (”Не найдены котировки”,1)
      end if
      end if
      end if
      end if
      end if
      end if
      end for

      END_PROGRAM

      PARAMETER Date;
      PARAMETER_TITLE Дата;
      PARAMETER_DESCRIPTION Дата;
      PARAMETER_TYPE STRING(30);
      END

      PARAMETER Time;
      PARAMETER_TITLE Время;
      PARAMETER_DESCRIPTION Время;
      PARAMETER_TYPE STRING(30);
      END

      PARAMETER Price;
      PARAMETER_TITLE Price;
      PARAMETER_DESCRIPTION Price;
      PARAMETER_TYPE NUMERIC(10,2);
      END

      END_PORTFOLIO_EX
      ————————–

      И подгружаемый модуль с функциями (я всегда вспомогательное стараюсь вынести, чтобы читать легче было):
      ————————–
      ‘ Функция инициализации даты и времени
      func InitDateTime()
      CurYear=get_value(GET_DATETIME(), “YEAR”)
      CurMonth=get_value(GET_DATETIME(), “MONTH”)
      CurDay=get_value(GET_DATETIME(), “DAY”)
      CurHour = GET_VALUE(GET_DATETIME(), “Hour”)
      CurMin = GET_VALUE(GET_DATETIME(), “Min”)
      CurMin = Interval*Floor(CurMin/Interval) ‘ округляем минуты до “интервальных”
      end func

      ‘ функция перевода даты в текстовый формат
      func fTextData(Year,Month,Day)
      if (LEN(Month) < 2)
      Month = “0″ & Month
      end if
      if (LEN(Day) < 2)
      Day = “0″ & Day
      end if
      result = Year & Month & Day
      end func

      ‘ функция перевода времени в текстовый формат
      func fTextTime(Hour,Min,Sec)
      if (LEN(Hour) < 2)
      Hour = “0″ & Hour
      end if
      if (LEN(Min) < 2)
      Min = “0″ & Min
      end if
      result = Hour & Min & “00″
      end func
      ————————–

      P.S. Надеюсь, что внес свою посильную лепту. Лично я эту программу также оформил в виде функции Ref(массив,бары), которую использую для дальнейших расчетов.

    36. Торговый робот пишет:

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

    37. Toshkin пишет:

      В qpile давно уже есть оператор прерывания цикла, хватит фигней маяться )). Удачи!

    38. Штурман пишет:

      Во-первых, этого не т в мануале. Какой оператор? Приведи пример. Во-вторых, при чем тут прерывание цикла, если нам надо его наоборот продлить? Можно конечно сразу его пускать до царя гороха, а потом рвать, но имхо это бизнес логику нарушает. Если бы они сделали полноценный while, тогда другое дело.

    39. Toshkin пишет:

      В приложении 1 (Синтаксис команд) все есть – continue, break, return – все как обычно. Enjoy :)

    40. GLDA пишет:

      В модинге кода ошибка в строке где идут подряд все end if 6 штук.Один лишний,должно быть пять

    41. Сергей пишет:

      Есть собственная стратегия, закажу под неё MTC программу вязка quik ser-martynov@yandex.ru

    42. Чапаев пишет:

      Блин ниче не работает ((((( ни первый скрипт ни второй
      бьюсь как головой об стену!
      В первом скрипте гет кэндл нихера не возвращает? а во втором отказывается выполнять initdatetime

    43. Шаган пишет:

      В Квике работает таблица создается… Вот только – !

      Кто нить смог экспортировать эту таблицу в Эксель по DDE?
      Пишет – Ексель книга не открыта или отсутствует Лист… хотя все открыто и присутствует.
      комент по 1 -му коду.

    44. Штурман пишет:

      2 Чапаев
      Все работает. :)

      2 Шаган
      Открой новый файл в экселе и сохрани его, а в окне укажи название файла. Если просто запустить эксель, то квик не видит по-умолчанию не сохраненную книгу.

    45. Шаган пишет:

      2 Штурман
      не помогло, взял стрый фаил с макросами – вот его видит, а новые не видит хоть сохраняй, хоть не сохраняй… придется множить этот старый фаил. ))

      Народ помогите разобраться в коде, этот кусок рельно не работет… т.е. текущая поз. не определяется. уже голову сломал.. может свежим взглядом чего увидите?

      fu=GET_ITEM(”FUTURES_CLIENT_HOLDINGS”, i)
      IF GET_VALUE(fu, “TRDACCID”) = Account and GET_VALUE(fu, “SEC_SHORT_NAME”) = Sec_Code
      CurPos = GET_VALUE(fu, “TOTAL_NET”)
      VMargin= 0+GET_VALUE(fu, “VARMARGIN”)
      END IF

    46. Алексей пишет:

      Может кто подскажет как реализовать в QPILE возможность сравнивать две переменные (Double и Any)?

    47. index пишет:

      Всем привет. Я тоже голову сломал, пытаясь программно определить кол-во бумаг в текущей открытой позиции на рынке Фортс (по определенному инструменту). Добрые люди, подскажите, какую функцию использовать. Спасибо заранее.

    48. Гргорий пишет:

      Добрый день, Торговый робот!
      Alex уже поднимал вопрос:
      09 Июля 2008 в 16:43:
      “Пардон, а какой интервал ставить, если данные дневные?”
      Поддерживаю.
      Какой интервал ставить?
      (при 1440 выдает пустую таблицу в результате)

    Оставьте свой отзыв

    Да человек я, человек! =)