Алексей Украинцев написал: вернее сказать: и так бывает, и наоборот - в квике есть - в БД нет...именно это поле
В качестве рабочей гипотезы могу предложить следующее: Если внимательно посмотреть на приведенные случаи то заметим следующее: Потеря id происходит в пакетах по одной цене и с разницей времени в миллисекунды. Возможно, что id не переносит сервер биржи по этой причине, или сервер КВИК и очень маловероятно, что ошибка на стороне терминала.
И опять же вопрос к разработчикам и писателям документации: почему такие важные моменты не отражаются в документации? т.е. вообще, ноль. По умолчанию полагаешь, что установил хэндлер и спишь спокойно, а на практике - возможные лоси. Это безответственный подход в отношении софта, работающего с живыми деньгами.
Поделюсь опытом. У меня реализована специальная функция - начало сессии. Она учитывает не только смену даты, но и наличие свечей с неравными High и Low. Таким образом, я различаю предторговый период, послеторговый период предыдущего дня и начало торгов.
Знаю что Вы очень заняты, и у Вас очень много важных дел. Тем не менее сохраняю надежду на вашу доброту и милость.
Почему бы Вам не добавить в качестве скриптового языка PHP. А не этот недоязык LUA, который чисто по недоразумению стал таким популярным.
Тем более что готовые решения уже есть нужно только DLL откомпилировать. Работы на пару недель всего то.
Спасибо!
Полагаю, что если очень хочется, то можно писать на джава. В луа непосредственно либо через СИ можно запускать любые проги в т ч и на джава. Правда не знаю зачем это надо, но если хочется, то можно.
Александр Пупкин написал: Здравствуйте, может кто - то показать пример работы стоп приказа тейк профит + стоп лимит
Если в тейк профите к примеру я укажу цену >=67000 Отступ от max = 50, и стоит галочка "по рыночной цене"
Что это будет значить?.. читал в справке, но что - то не совсем понял как работает отступ ((
из документации:
«Тэйк-профит» – это заявка с условием вида «исполнить при ухудшении цены на заданную величину от достигнутого максимума (на продажу) или минимума (на покупку)». Заявка работает следующим образом (пример для заявки на продажу): после достижения ценой последней сделки условия стоп-цены начинается определение максимума цены последней сделки. Если цена последней сделки снижается от максимума на величину, превышающую установленный «отступ», то создается лимитированная заявка с ценой, меньшей цены последней сделки на величину «защитного спрэда». Величины «отступа» и «защитного спрэда» могут указываться как в значениях цены, так и в процентах. НАЗНАЧЕНИЕ: Закрытие позиции по инструменту с максимальной прибылью.
-------------------------------------------- Применительно к примеру: ------------------------------------- Рынок движется вверх. если цена сделки >=67000, то сервер начинает проверять условие отступа. Далее , если текущая цена ниже предыдущей на 50, то выставляется биржевая заявка по рыночной цене.
Александр Волфовиц написал: Николай Камынин , благодарю, это известно, просто индикатор планируется использовать с разными инструментами, неохота несколько экземпляров создавать. Я думал, м.б. есть что-то наподобие H L O C
УВЫ, HLOCV создает сервер квик. Больше он ничего не создает. Остальное все поступает с биржи либо срезами в ТТП,либо пакетами в ТВС.
Александр Волфовиц написал: Можно ли в индикаторе получить "Общ.спрос", "Общ.предл"?
getParamEx Функция предназначена для получения значений всех параметров биржевой информации из Таблицы текущих торгов. С помощью этой функции можно получить любое из значений Таблицы текущих торгов для заданных кодов класса и бумаги. Формат вызова: getParamEx (STRING class_code, STRING sec_code, STRING param_name)
Как сохранить значение переменной (счетчик) чтобы при новой итерации программа обращалась к последнему сохраненному значению и считала от него счетчик далее.
Digit Service написал: Николай, пробовал.. при первом прогоне переменной COUNT присваивается значение 0.. и все.. В конце прогона программы хочу сохранить в переменную COUNT значение 1, но переменная не переназначается. При следующем запуске программы опять берется значение переменной 0. Как можно решить мою проблему?
глобальная переменная устанавливается в начальное значение при запуске и сохраняет значение в последующих циклах вычисления поэтому ее можно использовать в циклах расчета скрипта, но не в следующем запуске --------------------------------------------------. если хотите сохранять для следующего запуска, то пишите в файл и при запуске читайте.
Как сохранить значение переменной (счетчик) чтобы при новой итерации программа обращалась к последнему сохраненному значению и считала от него счетчик далее.
Полагаю, проблема в том, что getParamEx при каждом вызове ходит в хранилище текущих параметров, а это очень накладная операция. При медленном интернете, обновление ТТП будет медленнее и возможно getParamEx многократно читает одно и тоже значение из хранилища. О какой синхронности Вы говорите?
это не фьючерсы. Поэтому Вы не закрываете позицию а покупаете акции которые будут Вам зачислены через два дня и в результате чего Вы вернете брокеру взятые у него акции. Таким образом Вы закрыли то, что хотели.
Ильдус Серезетдинов написал: Ранее я мог построить мувинг на своём стационарном компьютере с периодом 39000 simpl. Но сейчас у меня идёт зависание. Я улучшил оперативную память до 4-х гигабайт, удалил все сторонние программы, но мувинг не грузится. Тиковый график без мувингов загружается, а с тяжёлым мувингом-нет. Обновление программы до версии 7.2.2.3 также не помогло. Брокер ничего толкового сказать не смог. Прошу помочь с решением данной проблемы.
Если график прямой линии не тормозит, то полагаю, что код Вашего мувинга можно облегчить от 10 до 100 раз, так как время расчета мувинга не должно зависеть от длины истории.
Как облегчить код мувинга? Как это делается?
пришлите код на почту или покажите здесь, посмотрю и скажу.
Ильдус Серезетдинов написал: Ранее я мог построить мувинг на своём стационарном компьютере с периодом 39000 simpl. Но сейчас у меня идёт зависание. Я улучшил оперативную память до 4-х гигабайт, удалил все сторонние программы, но мувинг не грузится. Тиковый график без мувингов загружается, а с тяжёлым мувингом-нет. Обновление программы до версии 7.2.2.3 также не помогло. Брокер ничего толкового сказать не смог. Прошу помочь с решением данной проблемы.
Если график прямой линии не тормозит, то полагаю, что код Вашего мувинга можно облегчить от 10 до 100 раз, так как время расчета мувинга не должно зависеть от длины истории.
Антон написал: Необходимо реализовать классическую конструкцию определения таймера по условию, после чего функция, определённая в таймере, запускается через определённый временной промежуток. Решения на основе циклов с sleep или os.time тормозят либо процессор в целом либо непосредственно поток QUIK. Подскажите, пожалуйста, адекватное решение ::
Уточните вопрос, так как Вы указали в посте , что конструкция классическая, следовательно Вам известная, а в названии просите подсказать конструкцию, т е она как бы вам неизвестная. ------------------------------------------------------- Есть много способов реализовать запуск функции в заданное время, но решение зависит от допустимой погрешности.
Sergey Denegin написал: А если он завис в результате отладки, то состояние макросов опять будет забыто.
И это абсолютно правильное поведение и меняться оно категорически не будет Ибо иначе скрипт бы постоянно приводил к зависанию. И избавиться от этого было бы нельзя. То есть терминал стал бы просто неработоспособен.
может быть сделать кнопку "запомнить список" или "обновить", а пользователь сам решит надо запоминать новый скрипт в списке или нет в текущем состоянии КВИКА?
Sergey Denegin написал: Николай, если спрашиваю, значит надо! Оставьте свои комментарии при себе.
Ваш ответ (впрочем как часто и бывает) бесполезен. Во-первых, о таком способе и так понятно было, а во-вторых, когда речь идет о массиве данных из 20-30 полей, да еще и структура данных с текстовыми индексами, то это вообще составляет целую проблему и потребует написания целой функции. Так что дайте, пожалуйста, ответить на этот вопрос тем, кто может дать дельный совет!
Вы зря обиделись. Я написал Вам ответ на ваш вопрос "как копировать таблицу"- цикл Вам предложили, поэтому я дал Вам вариант без цикла. Других вариантов не существует. -------------------------------- Если хотите получить более конструктивный ответ, то сформулируйте задачу. Как следует из дальнейших Ваших высказываний, вас интересует вообще-то не копирование таблицы, а организация обработки больших массивов данных. А это совершенно ругая задача, чем заявленная в Вашем вопросе. Так что, увы, Вам оно ( то что Вы спросили изначально), как раз и не нужно .
Космонавт написал: А если компьютер на ночь уходил в гибернацию без выключения КВИКА, а утром ожил? Запомнятся ли переменные и будет ли читаться код до функции main?
Код читается один раз при запуске скрипта. Поскольку перезапуска скрипта не произошло, то код продолжит выполняться с точки останова. При этом все переменные сохранят свои значения.
Цитата
Николай Камынин написал: Полагаю, что при смене сессии , все начнется сначала.
При смене сессии всё не начнётся сначала. Код будет работать в соответствии с заложенной в него логикой. Так, если в коде предусмотрено "обнулять" значения переменных при смене сессии, то так и будет. Если "обнуление" не предусмотрено, то значения сохранятся.
На самом деле все менее предсказуемо, так как при смене сессии или времени (как установлено) КВИК обновляет таблицы, индикаторы и сессия из текущей переходит во вчерашнюю. ---------------------------------------- Конечно, если Вы не перезагружали КВИК, то код до main исполнятся не будет, так он исполняется один раз при запуске квика или запуске скриптов . --------------------------------------------------------- Но так как при начале новой сессии, состояние робота внезапно превращается из сегодня во вчера, то логичнее выполнить инициализацию начала сессии, что фактически означает перезапуск робота. -------------------------------------------------- Подобный перезапуск целесообразно делать и при разрыве соединений, так как состояние робота внезапно переходит из текущего в устаревшее.
вместо этого A = arr_test[4] ---------------------------------- надо записать так: A={a=arr_test[4].a,b=arr_test[4].b} ----------------------------- но оно Вам надо?
Космонавт написал: А если компьютер на ночь уходил в гибернацию без выключения КВИКА, а утром ожил? Запомнятся ли переменные и будет ли читаться код до функции main?
Полагаю, что при смене сессии , все начнется сначала.
По-моему мнению - так и задумано изначально в QUIK. Дело в том, что Вы строите график по параметрам из TTП. Для строительства таких графиков информация сохраняется в info.log файле, который очищается на начало новой сессии. -------------------------- Выход лишь один - сохранять историю с помощью скрипта и отображать ее с помощью самописного индикатора.
когда-то давно реализовал этот индикатор в амиброкере. На самом деле, это индикатор заглядывает в будущее и перерисовывается поэтому для исторических данных он красивый, а для прогноза - бесполезный , как и большинство широко рекламируемых , например, ZigZag - который тоже красивый на истории по той же причине что и .Jurik Moving Average ----------------------------------------
файлы свечей хранятся в отдельных файлах, а в файле info.log хранится история параметров ТТП. Не стройте графиков по параметрам из ТТП и не будет большого файла. Я использую лишь свечи и индикаторы по ценам свои и встроенные . info.log -1 Мбайт всего
Николай Камынин написал: к тому же этой продвинутой аналитики для фондовых рынков не существует. Почитайте диссертации на эту тему, сразу станет ясно, что дело темное. --------------------------------------- Вся аналитика на российских рынках сводится к инсайдерской информации из ямы.
Что Вы такое глаголете страшное)))
Есть достаточное количество отечественных квант-фондов которые не имеют тайных каналов связи с ОПЕК и тп., тем не менее стабильно стригут маркет с шарпом больше 3-х, значит дело не только в инсайде, к тому же невозможно скрыть движуху на всех рынках к которым привязана наша фонда, если иметь в виду RI\Si…
Какой то неликвид наверняка шаманять мелкие мошеннички, на внутренней инфе, но это крохи. А знать наверняка куда нефть двинется в ближайшую неделю, таких людей в мире на пальцах пересчитать, но тех кто зарабатывают с рынка, всё таки намного больше этих куклов
А не говорил, что на рынке не делают деньги, я сказал, что нет аналитических программ для этого. Деньги делают деньги, а рынок делают большие деньги. А большим деньгам не нужен прогноз рынка, они его сами делают. Вот это я и хотел сказать про продвинутую аналитику.
к тому же этой продвинутой аналитики для фондовых рынков не существует. Почитайте диссертации на эту тему, сразу станет ясно, что дело темное. --------------------------------------- Вся аналитика на российских рынках сводится к инсайдерской информации из ямы.
это проблема не квик и не низкоуровневых языков, это проблема лишь дилетантов, а у знающих - это особенность хранения числе с плавающей точкой. --------------------------------------------------------------------------------------------------- Денис, читайте учебники, а не гордитесь собственным невежеством.
Вячеслав + написал: Я имею ввиду примеры FIX сообщений, чтобы можно было написать простого работающего робота, который, например, получал список инструментов и выдавал ордер на покупку какого-нибудь из них по фиксированной цене и объёму, заданному в коде, чтобы затем расширять функционал, зная, что базовые функции уже работают и если проблемы и будут, то не в коде, а в конфигурации.
Вячеслав + написал: Николай Камынин , А зачем нужно изучать руководство по QPILE? Навскидку, что там есть, чего нет в документации QLua?
Там есть таблица параметров получаемых с помощью функции GET_PARAM_EX кроме того, так как QLUA первоначально повторила все функции из QPILE, то в QPILE есть пояснения, которых нет в документации QLUA. Их можно и через DDЕ получить, тогда можно не читать.
вопрос не в тему, но по поводу. интересно, разработчики все продолжают утверждать, что QLUA сделана для не подготовленных пользователей, или они уже поняли, что нужна основательная подготовка не только в знании квик, но и в технологии разработки программ, синхронизации потоков, навыков создания событийных систем и т д. и т п
текст не на луа а на каком-то сленге. Нет в луа такого end for end if это из QPILE а в QPILE нет этого candles[i].datetime #candles это из луа. ------------------------------- Короче голова от крокодила, а ж...а от муравья, получилось хрень. ---------------------------
Полагаю, что Вы хотите учебник. Увы, его нет. чтобы разобраться с QLUA Вам полагаю надо изучить: 1) LUA 2) руководство по КВИК ( особо раздел 6 и раздел 8) 3) руководство по QPILE ---------------------- почитать книжку рихтера (так для понимания про потоки) почитать API C для Луа (так для понимания что можно делать еще)
kbrobot.ru написал: Добрый день! У меня в БКС почему то стакан стал обновляться медленно. Хорошо если раз в секунду. Может где — то какую-нибудь галочку поставить надо? И таблица сделок тоже прокачивается раз в 20-30 секунд только. Кто как решил данную проблему? А по акциям прокачка вроде живее идет
про задержки серверов БКС я писал. Полагаю, что у них загрузка серверов большая. Посмотрите пинги и время задержки обмена Если нормально то можете попробовать перейти на VIP сервер (есть такая услуга у БКС).
Николай Камынин написал: Можно проверять ошибки синтаксиса и ошибки алгоритма, отлаживать.
Скажите, а он сможет отлаживать робот, используя данные из Квика? А то действительно очень неудобно без нормального отладчика
Нет, разработчики SCiTe не знают про квик и ничего не сделали для отладки с QLUA и данными из квик. Поэтому это работа для энтузиастов. Вообще-то, есть набор типовых операций, которые нужны в любом роботе. их надо сделать один раз.