nikolz (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 69 70 71 72 73 74 75 76 77 78 79 80 След.
Обращение к произвольной ТТП, есть возможность?
 
еще можно хуком.
но это для любителей экзотики.
Синхронизация данных от SetUpdateCallback
 
можно сделать очередь
либо использовать кораунды
а еще лучше переделать весь алгоритм
OnOrder выдает ошибку
 
Вы пишите скрипт или индикатор?
Одна сделка - OnTrade() два колбека
 
примерно так:
Скрытый текст
Куда быстрее попадают новые данные, в стакан или таблицу текущих параметров?, Интересуют лучший спрос и лучшее предложение - спред в стакане.
 
вопрос скорее будет в том, как быстро Вы сможете отреагировать на изменение данных.
Полагаю, что это время составит в среднем не менее 100 мс.
Поэтому разницы нет, если Вам не имеет значения очередь берите из ТТП
HHV, LLV за период в LUa ?, Реализация в Луа в виде индикатора HHV LLV
 
Вопрос к знатокам китайского языка.
Кто-нибудь может написать что-нибудь на китайском, чтобы я это понял.
Я  в китайском - ноль.
Функция обратного вызова OnFuturesClientHolding
 
1) С ошибкой в скрипте.
2) С ошибкой в понимании того, что запрограммировано.
Функция CreateDataSource
 
можно использовать:
1) getParamEx  – значения всех параметров биржевой информации из Таблицы текущих значений параметров,
2) getQuoteLevel2  – стакан по указанному классу и бумаге,
3) getItem  – для таблицы all_trades
Получение количество лотов в позиции
 
примерно так:
Скрытый текст
Перестают отображаться графики после многократного вызова CreateDataSource() - ds:Close()
 
а закрытие источников перенести в закрытие скрипта
Перестают отображаться графики после многократного вызова CreateDataSource() - ds:Close()
 
пардон, опечатка
надо сделать так:
Скрытый текст
Перестают отображаться графики после многократного вызова CreateDataSource() - ds:Close()
 
чтобы не было указанной проблемы надо сделать примерно так:

Скрытый текст
 
Обращение к произвольной ТТП, есть возможность?
 
можно через DDE
Синхронизация данных от SetUpdateCallback
 
swerg,
так как текст программы не приведен, то Ваше замечание тоже не верно.
Например, если обработка данных от колбека делается в main.
Тогда очередной вызов колбека может изменить данные в таблице,
через которую они передаются  в функцию в майн.
Т е теоретически указанная выше ситуация возможна.
Но, повторюсь, из приведенного рассказа автора это явно не следует.
Синхронизация данных от SetUpdateCallback
 
Из рассказа не очень понятна проблема.
из понятого, попробуйте использовать Coroutines
QUIK(версия 7.0.4.10), приколы
 
рекомендую всем сделать также, чтобы не трахаться с  версией 7
QUIK(версия 7.0.4.10), приколы
 
откатился на 6.17.3.6
подожду когда все приколы уберут из  версии 7.0.4...
QUIK(версия 7.0.4.10), приколы
 
Я отослал Вам дампы как Вы и просили.
Могу еще прислать.
скажите, что Вы в них нашли.
В чем причина крушения КВИКА?
QUIK(версия 7.0.4.10), приколы
 
Michael Bulychev,
1) А Вы полагаете, что аварийный вылет КВИКА на скрптах VMLua - это нормальная обработка ошибок ?
2) Как убрать линии на первом графике?
 
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
дело в том, что раньше в версии 6 я вообще последние полгода не получал аварийных сообщений
поставил 7.0.4.10 и за 2 дня 30 штук дампов.
просто уже задолбало.
--------------------------------
Уж лучше бы оставили как было. Нет функции скрипт молча ничего не сообщает и не вылетает.
Долго приходтся соображать почему ничего не рисует. Но найти ошибку все же проще, не надо каждый раз снова грузить КВИК.
-----------------------------------
При этом размещаю индикатор на графике.
все нормально. снимаю индикатор. ставлю его же снова - получаю дамп. снова загружаюсь. Ставлю тот же индикатор - все нормально.
Потом может и не вылететь при повторной установке а может и слететь.
все дампы отослал Вам как и просили в сообщении на почту support.
QUIK(версия 7.0.4.10), приколы
 
еще приколы.
"чтобы жизнь не была скучной"
данную версию поставил недавно.
но сразу обнаружилось ее неустойчивая работа.
теперь очень часто выскакивает аварийное завершение без внятной диагностики ошибки а лишь с предложением отправить дамп.
например,
1) можно один и тот же скрипт индикатора загрузить и снять 3 раза а на четвертый квик аварийно вылетает.
2) можно закрыть квик в конце дня. И после закрытия пытаться его загрузить снова.
Но он будет аварийно вылетать.
Лишь удаление файла info.log позволяет его загрузить повторно.
3) Ранее уже указывал, повотрю здесь "до кучи"
Теперь обращение в скрипте к несуществующей функции вызывает аварийное завершения КВИКА.
QUIK(версия 7.0.4.10), приколы
 
Обнаружил очередной прикол.
На картинке есть линии тренда - горизонтальные белые линии внизу. А в меню нет пункта "удалить все тренды в текущем окне"
Вопрос к знатокам:  Как удалить данные тренды?
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
В версии 7.0.4.10 есть такой прикол.
-------------------------------------
Если происходит обращение к функции, которой нет, т е по адресу nil,
то вместо сообщения типа "отсутствует функция XXX" ,
происходит аварийное завершение квика с предложением послать дамп разработчикам.
--------------------------------
В версиях 6 такая ситуация обходилась молчанием и без аварии.
Тоже было прикольно.
------------------------------
Предложение:
Реализовать нормальное обработки такой ошибки,
с сообщением об отсутствии функции
и без аварийного завершения КВИКА.
Спасибо
Реагировать на Tick
 
проще делать робота в индикаторе
ОnCalculate(NUMBER index)  - реагирует на каждый чих.
Как эффективнее разгрузить КВИК
 
Поясняю.
В ТВС данные заезжают не срезами, а пакетами.
Разница между этими понятиями следующая.
срез делается по времени например через каждые 100 мс передаем некоторый набор параметров. Для сжатия трафика передаем лишь изменения.
При этом если какой-то параметр меняется раз в 10 мс, то в срезе будет каждое 10-е изменение параметра
--------------------------
При передаче пакетами, передаются все изменения параметров, но момент отправки этих значений определяется не временем, а количеством (размером пакета)
Например, размер пакета 10 значений (число взято произвольно) У нас совершается 1 сделка в 100 мс.
Пакет сформируется и будет отправлен через 1 секунду от первой сделки.
Еще пример, сделки совершаются через 1 мс, пакет будет сформирован и отправлен через 10 мс.
Последний пример не совсем верен для биржи. Есть информация, которую биржа рассылает всем по времени, но пакетами. Т е набирается пакет 500 мс и отсылается всем.  Т е получаем пакеты , т е без пропусков, но не ранее чем через установленный на бирже интервал.
------------------------
Примерно так.
Перерисовка индикатора на графике без изменения свечек возможна ?
 
В этом случае надо перезапустить индикатор .
Мелкие утилиты и индикаторы, Может кому пригодится
 
это штриховая линия, тип 4 .
толщину можно менять.
Неизвестная ошибка при запуске скрипта
 
Это сообщение, системное. Т е VMLua не перехватывает ошибку и не распознает.
Предположу что нет какой-то библиотеки. Возможно не прописан путь.
попробуйте проверить зависимость библиотек и увидите чего не хватает.
Как эффективнее разгрузить КВИК
 
если указать один инструмент, то будет приходить один.
Относительно скорости прихода данных Вы немного заблуждаетесь.
Данные в ленте (ТВС) приходят тоже не быстрее чем раз в 50 мс. когда-то давно я делал такие исследования и получил большие времена.
Дело в том, что эти данные приходят пакетом.
Т е вместе могут прийти сделки которые выполнены через 100 мс или даже больше.
Но Вы смотрите на время заключение этих сделок на бирже, а не на время прихода этой информации к Вам
Кроме того, даже если к Вам придут сделки быстрее чем через 50 мс, Ваш комп отправит Ваши заявки тоже пакетом и если Вы ничего не предпринимаете с его настройкой то скорее всего среднее время будет 100-200 мc. плюс задержка  ответа сервера кквик на ваши запросы (у меня она минимум 30 мс).
Поэтому реально считайте, что реакция Вашего робота будет 100-200 мс.

 
Подскажите как перебрать в цикле строку со значениями разделенными ; (точка с запятой)
 
если сохраним строку то при переборе будет выполнятся обработка и поиск в строке
если сохраним в массиве, то в массиве будет хранится хеш т е числа. Перебор будет выполнятся не строк а чисел .
Поэтому первый способ медленнее, второй потребует больше памяти.
Выбор за вами.
Но если у Вас объем перебираемых данных небольшой то делаете так, как Вам привычнее и понятнее
Перерисовка индикатора на графике без изменения свечек возможна ?
 
используйте функции SetValue(NUMBER index, NUMBER line_number, NUMBER value)
Но есть небольшой баг в применении этой функции при формате линий - штрих
почему-то исправляется лишь вторая половинка штриха.
Как в Lua сделать безусловный переход ? Или такой возможности нет ?
 
Цитата
Imersio Arrigo пишет:
Цитата
Николай Камынин пишет:
оператор goto считается в программировании самым мощным оператором перехода.
Поэтому он в неумелых руках может так разрушить и запутать программу,
что потом будете долго искать ошибки.
------------------------------
Поэтому применение данного оператора считается признаком неумения разрабатывать алгоритмы.
---------------------------------
многие языки по указанным ранее причинам не содержат данный оператор.
---------------------------------------------
Учитесь печь правильные программы без этого оператора.
Смеялсо. Ох уж эта философия...
есть миллион примеров, где использование одного-единственного goto позволяет сделать простой и быстрый код, а не городить огород из иных конструкций, развивая в себе "неумения разрабатывать алгоритмы"

Еще программистам на ассемблере расскажите что безусловный переход это плохо.
Не буду вдаваться в полемику.
Но замечу простой и быстрый код - это не критерий правильности его работы и возможности развития и сопровождения в дальнейшем.
GOTO  позволяет  делать непредсказуемые и не очевидные выходы в любые места и из любых мест.
В таких программах бывает сложно проследить такие выходы о которых разработчик и сам порою забывает. Дальнейшая модернизация таких программ при коллективной разработке более сложна чем программы созданные по модульному принципу (один вход -один выход)
Но конечно, каждый пишет , как умеет.
Я тоже, когда начинал разрабатывать программы еще на ассемблерах часто использовал безусловный goto.
теперь - никогда его не применяю, хотя люблю писать на СИ,С++.
Правильно ли я понимаю общую концепцию QUIK + DDE/QLua?, Впрос по концептуальному видению
 
Цитата
Edunon пишет:
Николай , большое спасибо за развёрнутый ответ! Пока есть несколько непонятных моментов, которые опускаются в объяснениях, буду рад, если вкратце поясните их.
В QLua и через DDE можно смотреть открытые таблицы или открывать новые. Правильно ли я понимаю, что нужно учитывать, что пользователь может случайно закрыть таблицы, забыться и поменять состав столбцов, или ещё как-либо непреднамеренно повлиять на области видимости робота? Я пока плохо знаю QUIK, потому есть опасения.
Пока писал ответ, нашёл как отправлять заявку: sendTransaction(), значит есть всё таки «не табличные» функции? Как это укладывается в общую парадигму? Вы написали, что QUIK хранит данные, полученные от серверов биржи. Правильно ли я понимаю, что таким образом можно смотреть историю?

Спасибо за помощь!
В своем ответе под таблицами я имел ввиду внутреннее хранилище.
Поясню свое видение QUIK
В квике есть хранилище и есть внешнее отображение данных из него.
Как сделано хранилище я не знаю. Учитавая с какими напрягами туда надо лазить, полагаю что как-то через что-то.
Но это не важно
Если память мне не изменяет (уже давно не работаю с DDE) DDE экспорт во внешние программы работает с форматом отображаемых таблиц . Т е есть меняем порядок столбцов то и в DDE будет меняться
При работе c библиотекой QLUA обращение осуществляется к хранилищу по именам
Следовательно никакого значения порядок столбцов на экране для QLUA не имеет
Т к данные в колбек отдаются практически перед отображением на экране и перед передачей в DDE, то QLUA получается более удобнее , чем DDE
----------------------
sendTransaction() - эта функция отправки заявки на биржу. Никакого отношения к хранению данных не имеет.
Конечно в QLUA есть множество функций прикладного назначения, а не только обращения к хранилищу данных.
----------------------
В целом, LUA с библиотекой QLUA и расширениями DLL на Си позволяют написать любого робота или эксперта или индикатор.
Как эффективнее разгрузить КВИК
 
существенно разгрузить можно отказавшись от потока всех сделок.
Так как Вы торгуете лишь акциями , то возможно торговать и без этого потока.
 
Как в Lua сделать безусловный переход ? Или такой возможности нет ?
 
оператор goto считается в программировании самым мощным оператором перехода.
Поэтому он в неумелых руках может так разрушить и запутать программу,
что потом будете долго искать ошибки.
------------------------------
Поэтому применение данного оператора считается признаком неумения разрабатывать алгоритмы.
---------------------------------
многие языки по указанным ранее причинам не содержат данный оператор.
---------------------------------------------
Учитесь печь правильные  программы без этого оператора.
Активация стоп-заявки
 
Цитата
Denis пишет:
Добрый день. Не нашел в руководстве можно ли средствами Луа активировать активную стоп-заявку (аналог "правый клик-активировать стоп-заявку")?
Готовой функции нет. надо убрать стоп заявку и выставить безусловную заявку с такими же параметрами
Правильно ли я понимаю общую концепцию QUIK + DDE/QLua?, Впрос по концептуальному видению
 
Цитата
Edunon пишет:

Если это так, какие есть концептуальные особенности использования такой прослойки? Нормально ли живётся с таким подходом? В идеале я хотел работать через Plaza 2, на нормальном языке, с нормальной отладкой, с нормальным API, но ежемесячная оплата доступа охладила пыл. Можно ли с QLua как-то приблизиться к архитектурному уровню работы через Plaza 2 или всё-таки придётся оперировать таблицами QUIK?
Разница примерно в следующем.
когда Вы работаете с плазой, то реализуется схема клиент-сервер . Клиентом выступает ваш робот.
А сервером -сервер биржи  
В этой схеме сервер отдает вам ответы на запросы, а хранение переданной сервером информации Вы осуществляете сами в своей программе.
Т е создаете свою БазуДанных
------------------------------------------
В случае работы с квиком,  в качестве клиента выступает торговый терминал КВИК.
Он реализует хранение ответов и пересылку запросов на сервер
Сервером выступает сервер брокера, он транслирует ответы сервера биржи
Торговый терминал QUIK организует хранение полученной с сервера информации.
Поэтому появляются таблицы (как известно таблицы - это способ хранения в реляционных базах данных )
---------------------------------------
Таким образом, при работе с QUIK Вы обращаетесь за данными к базе данных терминала QUIK , а ваши запросы и ответы на них QUIK транслирует на сервер брокера и далее на сервер биржи.
Т е при работе с плазой у Вас нет готовой базы данных, а при работе с QUIK - есть - это таблицы терминала.
Массовая отправка заявок на сервер QUIK
 
Да, еще забыл сказать, что речь конечно о боевой работе,
а не ...изме на тестовом сервере или на ежегодных или месячных  тестах.
Массовая отправка заявок на сервер QUIK
 
Добрый вечер,
Объясняю для тех,кто не понял.
--------------------------
Речь идет не об отправлении пулеметом 1000 транзакций по 1 сделке в каждой,
а об отправлении 1000 транзакций по различным бумагам и различным счетам.
-------------------------------------
Кратко рассказываю про грабли.
-------------------
Для начала,
решите на основе какой информации будут отправляться эти 1000 транзакций.
-----------------------------
Если это информация по свечам, то она приходит не чаще, чем 10 раз в секунду.
Кроме того, на Вашем компе работает алгоритм энгл,
который обеспечит вам отправку транзакций примерно 10 раз в секунду
Ну и так далее...
====================
Кроме того, учтите ,
то время обработки транзакции ядром сервера брокера да и биржи примерно 1 ms.
А Вы в очереди не первый.
------------------------
После того, как учтете все это,
то можете попробовать отправить хотя бы 100 в секунду,
хотя бы по 10 бумагам,
хотя бы по 5 счетам.
-------------------------------------------
Успехов Вам мечтатели.
Массовая отправка заявок на сервер QUIK
 
1000 заявок в секунду по разным инструментам и разным счетам да еще через терминал КВИК?
Так Вы ж, батенька, фантазер!!!
Для начала попробуйте хотя бы 100 отправить.
CreateDataSource
 
Цитата
тот самый пишет:
почему я думаю, что CreateDatasource - автономна, т.е. имеет свой LUA-поток? Потому что она служит для прямого получения данных с сервера QUIK и имеет свои коллбеки, которые не связаны со стандартными QLUA-коллбеками, выполняющимися в основном потоке квика для всех скриптов.
полагаю, что отдельный поток может иметь (или не иметь ) луа машина.
У нас есть два потока -функция main и основной поток QUIK.
------------------------------------------
CreateDatasource запускается либо в Main,
либо вне ее ( в основном раньше не работало, поэтому сейчас запускаю лишь в main)
-------------------------------------
Таким образом, получаем  либо в потоке main,
либо в основном потоке.
------------------------------------
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Хочу добавить свою ложку в Вашу бочку.
Возможно мирное решение данной проблемы заключается в следующем.
-------------------
Создателям скриптов (т е нам, вам) взять за основу тот факт, что скрипты
работают с асинхронными событиями.
---------------------
Следовательно, пока событие не наступило,
его нет,
и гадать о его наступлении бессмысленно.
------------------------------
Например,
если trans_id=0 , то это означает, что "ноль"
если trans_id=nil , то это означает, что "nil"
А когда  поступит  trans_id не равен 0, то и будем его обрабатывать.
Т е либо мы обрабатываем интересующие нас события, либо игнорируем их.
------------------------------
При этом, безусловно,
список событий должен быть отражен в документации разработчиков.
----------------------------
Тогда нет проблемы в том,
что и сколько  раз обновляется.
Как обрезать число типа float до 2х знаков после запятой
 
или так
z=0.01*math.floor(100*x)
print(z)
----------------
1.11
Как обрезать число типа float до 2х знаков после запятой
 
лучше так:
x=1.1124432871741
y=string.sub(x,1,string.find(x,'.')+3)
print(y)
-------
1.11
Загрузка переменных в область файла, В файле 1 задать переменную, которую можно print в файле 2
 
А можно подробнее изложить, что Вы хотите?
------------------
Пишите решаемую задачу, а не желаемые финты над понятиями языка.
Можно ли сделать скрипт, который будет запрещать устанавливать более 1 заявки в 5 минут
 
Если проблема в отсутствии элементарной дисциплины, то надо быстрее уходить с рынка, пока депозит еще не слили.
сольете обязательно и даже если будете подавать лишь одну заявку в 5 минут.
Можно ли сделать скрипт, который будет запрещать устанавливать более 1 заявки в 5 минут
 
поэтому проще всего не подавать поручения чаще чем 1 раз в 5 минут.
Научится этому существенно проще, чем сделать защиту от дурака.
Можно ли сделать скрипт, который будет запрещать устанавливать более 1 заявки в 5 минут
 
Цитата
green_X5 пишет:
Сделать легко. Отслеживание окна заявки через WinApi, с появлением в окне заданного инструмента убивать окно заявки.
В тот же момент месага в пейджер -"Заявки чаще чем раз в 5 минут приводят к разорению депозита и приступу простатита! Ваши руки тяжелеют, пальцы немеют, резь в предстательной железе становится невыносимой... тик-так.. тик-так.. ".
Использование WinApi предполагает определенного уровня знаний у разработчика.
Полагаю,что у задавшего вопрос этих знаний нет.
Поэтому это не легко для него будет.
заполнение созданной таблицы
 
Надо начать с изучения луа на простых примерах без КВИК (взять Scite и делать примеры с массивами переменными , взять различные модули и делать примеры с графиками  с окнами)
После этого изучить модуль QLUA на простых примерах (читать свечи, обнаруживать пересечение линий выводить линии выводить метки и т д)
В процессе познания придет понимание как сделать то, что хотите.
Уровни страйков на график БА и изменение ОИ на страйке за день по всем действующим сериям, опционы страйки
 
Если хотите сделать это сами, то вариант действий всего один:
1) Изучить LUA на примерах не связанных с QUIK
2) Изучать библиотеку QLUA на простых примерах
3) Написать то, что хотите.
---------------------
Уйдет примерно от 3 до 6 месяцев.
Просить халяву - это тупиковый вариант.
Страницы: Пред. 1 ... 69 70 71 72 73 74 75 76 77 78 79 80 След.
Наверх