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

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

Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 41 След.
Кривые шибки в QLua
 
Ну просто зла не хватает!

Различные глюки Квика, к сожалению, давно стали привычными - то у него какой-то сертификат просрочен (при повторной аутентификации всё волшебным образом становится зашибись), то какой-то message size считать не может, но больше всего достаёт, когда после обрыва связи при попытке законнектиться этот придурок выдаёт "вы уже работаете в системе" и рвёт, падла, связь. Ты что, не видишь, козёл, что связи нет, что именно поэтому я и пытаюсь подключиться? Перезапускаю Квик - пофиг, "вы уже работаете в системе"! Снова выхожу, и через пару-тройку минут успокаивается и нормально входит, теперь я уже "в системе не работаю". Да ещё предупреждает, скотина, что была неудачная попытка аутентификации - это та самая, которую он и оборвал. Как можно ТАКОЕ запрограммировать?
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
nikolz, Лапуль, судя по всему, Ваша квалификация не только в программировании, но и в торговле близка к абсолютному нулю. Никто и не говорит, что на рынке есть халява. Мой скрипт, например, работает в поте лица, но это ОН работает, а не я. Вчера, например, он нарастил мой портфель на два процента, сегодня с утра тоже было более процента, но потом рынок качнулся вниз, и сейчас у него чуть меньше полпроцента прибыли. На фьючерсах тоже с утра небольшая прибыль имеется, за сегодня он совершил на этих двух рынках порядка сотни сделок. А я его только включил, и забыл. Ой, извиняюсь - на одном из Квиков связь разорвалась, так я его перезапускал. И четыре новых фьючерса добавил. Так что сегодня я всё-таки с терминалом дело имел, Ваша правда. :smile: Только вот не требует мой способ затрат ни времени, ни денег: время исчисляется минутами в сутки, а денег я ему уж и не помню когда последний раз давал.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
nikolz, это скрипт имеет дело с терминалом, а Quikos, как и я, имеем с ним дело только при нажатии кнопок  "Запустить" или "Остановить". Вот сегодня утром я запустил скрипт на двух Квиках, вечером выключу, и больше я никакого дело с терминалом не имею.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Nikolay, Это ТАК! По крайней мере, в единственном колбеке, которым я пользуюсь OnTrade это именно так. Мне даже когда-то техподдержка отвечала, что при этом якобы изменяются какие-то недоступные пользователю (!!!) поля, на что я возмущался: так не давайте, блин, этому самому пользователю прерывание, пока не подготовите все данные, которые требуются ему! А на все эти бары мне вообще плевать.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
nikolz, Лапуль, шевельните извилиной. Колбек МНОГОКРАТНО вызывается когда наступило событие связанное с данным колбеком, и это УЖЕ приговор софту. При этом данные, приходящие в прерывании, не так уж редко действительно бывают не готовы, и это уже ВТОРОЙ приговор софту. Так что получение последней сделки НЕ "будет сигналом, что все данные приняты". Про говно по кличке "свечи" я просто молчу - если с первым говном ещё как-то можно работать, то с этим могут работать только камикадзе.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Quikos, Какая ещё "таблица"?

А глюки меня настолько достали, что у меня в OnTrade(n) первым делом стоит:
if n==nil or n.trans_id==nil or n.order_num==nil or n.trade_num==nil or n.sec_code==nil or n.flags==nil or n.qty==nil or n.price==nil then ...
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Quikos, Это в теории. В реальности же на момент вызова данные готовы не всегда, а иногда и ни в одном из трёх вызовов на одно событие.
SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.
 
Quikos, У меня почти сразу не осталось ни малейших сомнений, что писать нужно на чистом Луа, который я в тот момент вообще в глаза не видел, а не на моём любимом Си, на котором я программирую десятки лет. Чуть позже я понял, что всё, что можно, нужно делать в потоке мейна. Ну и, наконец, завёл три стека для буферизации обмена данными с Квиком, после чего почти все проблемы исчезли - надеюсь, навсегда. Хотя появления новых версий боюсь ещё больше, чем раньше.
SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.
 
Quikos, Да потому, что ГОВНО этот CreateDataSource! Концептуально, идеологически, алгоритмически, фактически, и вообще относится к разделу "Функции для работы с графиками". Что Вы вообще хотите узнать, наплодив чуть не половину новых веток за последнюю неделю-две? У Вас на 34 сообщения12 новых тем! Хотите получить работающий скрипт? Забудьте про это говно - с ним Вы не получите его НИКОГДА! Хотите поисследовать глюки Квика? Исследуйте на здоровье, только крайне желательно в ОДНОЙ ветке - я полагаю, что эта тема бесконечна и мало интересна кому-то, кроме Вас. Ещё что-то?
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
nikolz, Какой-то клинический бред.

1. Я уже говорил, что Ваше выставление и снятие 200 тысяч заявок за 4 часа иллюстрирует лишь полную беспомощность алгоритма торговли - у нормальных людей заявки ставятся не для того, чтобы их снимать, а для того, чтобы они исполнялись. Мои заявки, например, исполняются в 90% случаев и более.

2. В моем роботе задействован ОДИН колбек, и он называется OnTrade. Есть, правда, ещё и OnStop, но только для того, чтобы не было потери данных, поскольку при нажатии кнопки "Остановить" скрипт теряет управление - Антон в своё время подробно рассказывал, почему. Так что заверяю Вас, что ВСЕ колбеки лишние, кроме этих двух, да и то второй нужен только для компенсации глюка в софте Квика. Это рудиментарные органы и должны быть вырезаны к чертям собачьим для блага человека. :smile:

3. Я выбросил (точнее, даже не задействовал) все остальные колбеки, перенёс все расчёты в поток main (избавился от этого маразма с потоками), и давно уже забыл, что такое зависание Квика, хотя ранее доводилось видеть и internal error, и unknown hard error, и даже general protection error. А вот если Вы подключите всю эту дребедень, тогда Ваш робот вообще ничего не увидит и просто зависнет в один прекрасный момент. И таких прекрасных моментов будет ой как много!

4. Я вообще не контролирую исполнение заявки: пришёл OnTrade - значит, исполняется, а на нет и суда нет. И в таблицу заявок лезу крайне редко, только для снятия активных заявок. И снятие заявки не контролирую: послал KILL_ORDER - и пусть канает! И это ЕДИНСТВЕННАЯЯ таблица, в которую я вообще лезу (не считая ТТТ, конечно).

5. Выставление заявки НИКАК не зависит от того, активна ли предыдущая. Вернее, у меня-то как раз зависит, но это алгоритм такой: новая заявка не выставляется, если не исполнена или не снята предыдущая по этому тикеру и даже если курс не сдвинулся относительно предыдущей сделки на какую-то величину, а вот выставляется она не потому, что нет активных заявок, а по целой куче других критериев, чтобы сделка была не абы какой, а прибыльной. А вот Борис, например, выставляет целый веер заявок, многие из которых остаются активными в течение достаточно длительного времени.

Короче, "смотри пункт первый". :smile:  
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Alexander, Я вообще не использую OnOrder. Никогда не использовал. :smile: Только OnTrade.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Alexander, У меня заявки могут исполняться за произвольное количество сделок, так что любой приход OnTrade, не отфильтрованный как дубль, корректирует оставшееся количество лотов в заявке, а сам элемент стека удаляется уже в другом месте - либо по снятию, либо действительно по нулевому остатку.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Alexander, Почему нельзя? Можно. Только вот мой личный "рекорд" в ожидании подтверждения исполнения заявки составляет семнадцать с половиной минут, и это наверняка не предел. А робот, тем не менее, написан и работает "вот прям ща". Не со 100%-ной уверенностью, поменьше, но работает. И написан он с головы до пят на чистейшем Lua. :smile:

Нет, Вы не путайте заявку и сделку. Если заявка именно в 1 лот, то остаток гарантированно в нуле, и сам факт прихода OnTrade говорит о том, что заявка исполнена (обычно в трёх экземплярах). По большому счёту, гарантирует идентификацию только совпадение trans_id, поскольку order_num формируется не нами, и я его, как правило, вообще не знаю. А вот для контроля исполнения заявки лично у меня заведён специальный стек активных заявок, из которого полностью исполненные или снятые заявки удаляются уже по таймеру.
debugging для терминала ^9
 
TGB, Прям уж! Мне довелось видеть в работе поистине виртуозов программирования, с совершенно фантастическими мозгами, а что мы видим сейчас? Уровень программирования рухнул просто до полного нуля. Помницца, Кодд рассматривал SQL как средство для работы конечных пользователей с базами данных, чтобы избавить их от необходимости в прослойке программистов, а сейчас целая кодла посредников обосновалась именно там и нагло называет себя именно программистами. Я не раз своими ушами слышал, что не только SQL, но даже HTML называли "языком программирования". А взять здешний Lua? Если ЭТО "язык", то что тогда "говно"? Программисты ВЫМЕРЛИ!

Я сам когда-то писал загрузчик и пошаговый отладчик для программ, прошиваемых в электронных модулях с собственными микропроцессорами со стороны персоналки, к которой они подключались, но это для электронщиков, они там смотрели на состояние системной шины и памяти после каждого шага того процессора. А я ещё задолго до того случая запускал в отладчике программу, которая работала с буфером клавиатуры и у меня просто крыша ехала, пока я, наконец, не врубился, что ошибка вовсе не в моей программе, а в том, что я запускал её через этого гадёныша, который и гадил. С тех пор я ни разу не пользовался никакими отладчиками и ни разу об этом не пожалел.
debugging для терминала ^9
 
Константин, Я отказался от всех дебаггеров ещё лет 40 назад, по той простой причине, что они сами глючат. Точнее, корректно работают лишь в достаточно простых случаях, когда и сам программист в состоянии легко обнаружить ошибку простым чтением своего кода. А уж в lua ошибки нередко проявляются даже при исполнении кода, написанного без ошибок. Так что единственным нормальным средством отладки всегда считал и считаю отладочную печать. Даже когда сам писал пошаговый отладчик. :smile:  
Приведение строки к числу
 
Не испытывал проблем, разумеется.
Приведение строки к числу
 
Константин, Никогда не использовал запятых в данных и никогда не использовал проблем с преобразованием.
Получение цены инструмента
 
Kolossi, С ТТТ ещё проще: и на время плевать, и на статус, и даже на ликвидность - она ведь тоже плавает. :smile:  
debugging для терминала ^9
 
Константин, Блокнот, запуск скрипта и вывод отладочной печати в лог-файл или хотя бы в message. Всё остальное - практически бесполезный и почти наверняка глючный онанизм.
Получение цены инструмента
 
Kolossi, Так в чём, собссно, задача? Если это "возможность получения цены последней сделки по инструменту", то однозначно нужно читать ТТТ. А если "статус торговой сессии", то мне кажется, что его нужно получать именно "по определённому инструменту, а не в общим параметром", причём ТОЖЕ из ТТТ и тоже "чтением цены последней сделки по инструменту". Простейший вариант: если LAST или BID или OFFER в нуле, значит ЭТОТ инструмент в данный момент не торгуется. Хотя я определяю возможность торгов по инструменту более сложным способом: раз в секунду я опрашиваю LAST из ТТТ и по количеству её изменений раз в минуту приблизительно оцениваю текущую ликвидность тикера. Точнее, ранг ликвидности: говно, плохая, нормальная, хорошая или отличная. Если ликвидность "говно" (ни одной пойманной сделки за период), значит инструмент не торгуется. Во время перерывов в торговле или при запуске скрипта все тикеры уходят в "говно", а во время её возобновления снова постепенно начинают торговаться. Например, с началом вечерней сессии это происходит только с "голубыми фишками", а все остальные так и остаются "говном". Малоликвидные тикеры частенько превращаются в "говно" и во время торгов (обычно в середине дня, когда сделок мало) - и слава богу. Вот прямо сейчас один из моих фьючерсов находится в "говне", хотя с утра он немного поторговался. Таким образом, мне совершенно плевать на статус сессии: нет сделок - не обращаем внимания на тикер. А вот если там началась какая-то возня, это и есть повод "навострить уши". Очень удобно, просто, надёжно, всем рекомендую. :smile:  
Создать новый стек Lua, Создать новый стек Lua
 
Quikos, Мне - никакого, я здесь вообще пишу на чистом Луа, чего и всем советую.
Создать новый стек Lua, Создать новый стек Lua
 
Quikos,

Ну не повторять же мне здесь ту ветку. :smile:

1) Классы МЕНЕЕ удобны, чем структуры. К тому же, насколько я помню, они более функциональны. Я тогда говорил, что всё, что мне предложат на плюсах, я реализую на чистом Си, а вот то, что я напишу на Си, повторить на плюсах не сможет никто.
2) Я и не использую. И даже писал в 2001 году: Мужики! Мне просто страшно читать о проблемах, какие при этом возникают! Да на кой нужно такое счастье? Завязывайте вы с этими исключениями!

Ах, да - это же придурок стал заводить длкальные элементы в блоке! И тут же полезли проблемы с видимостью переменных и меток. Короче, в мусоропровод!
Создать новый стек Lua, Создать новый стек Lua
 
Quikos, Нет, это сразу была жопа: какая-то инициализация, выполняемая до мейн, потом эти дурацкие эесепшены... в общем, "говно как говно". :smile: А классы - это пародия на сишные структуры.
Создать новый стек Lua, Создать новый стек Lua
 
Quikos, Моя фраза из тех времён: "Указатель на структуру покрывает все "классовые" потуги Страуструпа как бык овцу".
Создать новый стек Lua, Создать новый стек Lua
 
Quikos, дык со Страуструпа я и начинал.  :smile: А без полной совместимости это говно не продержалось бы и недели. Кстати, я почти всю жизнь пользовался именно компиляторами С++, но только потому, что там есть строчные комментарии.
Создать новый стек Lua, Создать новый стек Lua
 
В кои-то веки я снова согласен с nikolz - это насчёт "каши из С и С++". Когда-то давно я два года вёл ветку "С vs С++", где мочил "плюсовиков" со всей дури. :smile:  
Не работает простейший скрипт вывода сообщения
 
Nikolay,
Тут Иванушка вскочил.
«Я того не говорил! —
Закричал он, утираясь. —
О пере не запираюсь,
Но о птице, как ты хошь,
Ты напраслину ведешь».

Я примерно так же дёрнулся, увидев эту ветку со "своим" ником. :smile:  
Получение цены инструмента
 
Kolossi, А куда он, нафиг, денется? Николай же сказал: "Тогда можно не открывать ни одной таблица, ни один график". Я тыщу лет как перестал обращать внимание, что там у меня в ТТТ и даже открыта ли она. getParamEx работает - и слава богу.
Получение цены инструмента
 
Даже если она и есть, пользоваться этим было бы глупо: получение данных из ТТТ наиболее простой, надёжный и вполне эффективный способ. Кстати, руками в ТТТ занести ничего нельзя, таблица только для чтения.
Какой должен быть trans_id у заявки после её снятия, снятие заявки
 
Тимур, TRANS_ID у этой заявки должен быть "777", как и указано в коде. А вот ORDER_KEY должен быть равен order_num снимаемой заявки, при этом не нужно указывать ни ACCOUNT, ни CLIENT_CODE, ни CLASSCODE, ни SECCODE - только ACTION и ORDER_KEY. Наконец, что там придёт "в соответствующем событии OnOrder" можно узнать только по его приходу - там может быть всё, что угодно. А можно и не узнавать - мой скрипт вообще не использует OnOrder.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, Понятно. Искусство ради искусства меня не интересует. Моё появление в Квике, Луа и на этом форуме имело сугубо практический интерес, а потому мне всегда было насрать и на SetUpdateCallback, и на CreateDataSource, и на потоки, и почти на всё остальное. А для людей с Вашими наклонностями софт идеален - подобными исследованиями здесь можно заниматься ВЕЧНО. И пересматривать полученные знания с каждой новой версией. :smile:  
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, То есть всё, что угодно, кроме самой торговли. :smile: А зачем Вам тогда Квик и Луа? Лично мне вне торговли ни то, ни другое тыщу лет и даром не надо.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, А что душе угодно?  :smile: Моей душе угодно, чтобы скрипт зарабатывал деньги, и, желательно, вообще без моего участия. И никакой Си для этого нафиг не нужен.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, А ЗАЧЕМ? Зачем использовать Си для решения столь примитивной задачи как организация торговли на бирже? Зачем связываться с компиляторами, библиотеками и всем прочим?
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
И никаким Си я не пользуюсь от слова совсем.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, Я же сказал, что я использую - только минимально необходимое: sendTransaction, OnTrade и getParamEx. Т.е. то, что пока ещё работает, хотя даже здесь всякого говна предостаточно, вроде прихода нескольких прерываний на одно событие.
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, Я с самого начала говорил, что несмотря на то, что Си мой наилюбимейший язык на протяжении десятилетий, а Lua, пожалуй, наихудший из всех, которые я знаю, писать нужно на чистом Lua, именно с целью обеспечения максимальной надёжности. Именно поэтому (а также потому, что я в своё время вывел всю обработку в поток main) мой скрипт всё ещё работает, и ему почти безразлична как версия языка, так и версия терминала. Не говоря уже про "неудачные сборки библиотек".
Поток в котором вызывается SetUpdateCallback, Поток в котором вызывается SetUpdateCallback
 
Quikos, Да перестаньте Вы фигнёй страдать, забудьте про С, потоки, dll и вообще любые библиотеки. Пишите на чистом Lua, а там пользуйтесь только sendTransaction, OnTrade и ТТТ - тогда, возможно, Ваш скрипт более-менее нормально ещё проработает некоторое время. И пользуйтесь максимально возможными старыми версиями Квика - по той же причине. Система давно пошла вразнос, её нужно переписывать полностью, с абсолютного нуля.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777, А что тут непонятного? Ценных бумаг разных видов на рынке, мягко говоря, до хрена, в портфеле их должно быть уж никак не менее десятка (у меня их обычно где-то в районе полусотни), каждая из них в разные моменты времени ведёт себя по-разному, причём даже поведение одного и того же тикера в один и тот же момент времени на минутных, часовых, дневных, недельных свечах может быть совершенно различным. Всё это программа должна бы учитывать и работать с самыми интересными тикерами, от которых в данный момент можно ожидать максимальной прибыли, и работать с ними на тех таймфреймах, для которых вероятность получения этой прибыли наиболее высока. Таким образом, речь должна идти о многих сотнях и тысячах отслеживаемых таймфреймов, и потому ценность имеющегося здесь софта для получения свечей даже не просто равна нулю - она отрицательная.

А зачем Вам "именно индикатор"? Мой скрипт не только следит за рынком, но и принимает решения, он сам торгует - мне остаётся только его включать и выключать, хотя даже это не обязательно. За каким хреном мне нужно, "чтобы видно было что происходит и следить за ситуацией"? Я для того и написал скрипт, чтобы этой фигнёй не заниматься - пусть железяка работает! Не говоря уже про "заходить в настройки каждого (!) индикатора, чтобы он заработал". На кой МНЕ все эти "советники"? Пущай скрипт советуется с кем хочет, а мне чтоб только деньги приносил - "подробности меня не интересуют". :smile:  
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777, Да забудьте Вы и про getCandlesByIndex, и про индикаторы - этим дерьмом в принципе пользоваться невозможно, и оно в принципе неремонтопригодно. Я пару дней пытался получать свечи отсюда, но быстро всё понял, и давным-давно считаю все свечи сам, по нескольким сотням тикеров и по десятку таймфреймов у каждого из них. А это убожество неизбежно будет глючить даже на одном таймфрейме одного тикера. Оно Вам надо?
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
nikolz, Это с какого бодуна, лапуль? В этом дурацком языке ВААПЩЕ НЕ БЫВАЕТ таблиц с дырками. Опять полуграмотные идиоты путают ключи с индексами? В одном из самых первых моих сообщений на этом форуме я писал:
В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив - нельзя.

Лично я действительно всегда создавал столбцы по порядку, начиная с нулевого, а анализируя с минус первого - просто так удобнее. Но мне и в страшном сне не могло присниться, что они должны быть созданы ВСЕ. АУ! ТЕХПОДДЕРЖКА! Неужели этот бред действительно правда? Неужели софт НАСТОЛЬКО убог?
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Сергей, А там может быть вообще всё, что угодно. Я не так давно поменял девятку снова на восьмёрку - там было и Internal error, и Unknown hard error, и General protection error, и, возможно, ещё что-то.
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Да, ещё момент: ГДЕ ИМЕННО Вы это дело красите? Всё это дело нужно выполнять в потоке мейна.
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Нет, кажется, это я обсчитался с количеством аргументов.  :smile:  
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Сергей, Не знаю, я никогда не пользовался RGB - я сразу давал на вход число вместо функции.
Нет, должно быть ЕЩЁ ДВА аргумента, типа:
SetColor(KomCentrID,1,20,RGB(217,255,217),RGB(1,1,1),RGB(220,220,220),RGB(0,0,0),-1,-1)
Или вот, например, фрагмент кода моего скрипта:
SetColor(T,a[i][0][9],4,D[X(a[i][2][2])],0,-1,-1);
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Сергей, Во-первых, уберите нафиг RGB - эта, с позволения сказать, функция возвращает трёхбайтовое число, старший байт которого - B, а младший - R. Во-вторых, в SetColor добавьте ещё два аргумента: -1, он же QTABLE_NO_INDEX.
Как создать свою форму (окно) и разместить на ней элементы формы (чекбокс, список, кнопка, поле для ввода и тд), Создание новых элементов интерфейса
 
1. Форум называется "Программирование на языке Lua".
2. Средства для организации диалога здесь убогие, если не сказать "никакие".
3. Задачи организации торговли достаточно примитивны, а потому требования к диалогу тоже практически "никакие", и потому могут быть вполне удовлетворительно эмулированы даже на тех кастрированных возможностях, которые здесь имеются (даже поля ввода, довольно громоздкий код которых здесь когда-то приводился и которым лично я никогда не пользовался и пользоваться не собираюсь).
4. Диалог на чистом Lua может быть построен с использованием таблиц QUIK и обработчиков событий, устанавливаемых для них по SetTableNotificationCallback (разумеется, тоже кастрированный, но вполне приемлемый для практических задач). Например, чекбокс я эмулирую изменением цвета фона ячейки таблицы, список - с помощью выпадающего меню, кнопки - тоже ячейки таблиц, горячие клавиши (точнее, их доступный огрызок) в коде самого обработчика и т.д.
5. Пользоваться сторонними библиотеками категорически не рекомендую по ряду причин, главная из которых - уменьшение надёжности работы скрипта, что многократно подтверждается прямо в этой ветке.
Рассчитать данные индикатора ИЛИ брать с графика?
 
Сергей, Лапуль, мне совершенно по барабану, что ты там можешь и чего не можешь - это ты до меня докопался, а не я до тебя. Точнее, побежал сразу жаловаться модераторам, а это неубиенный признак труса. И кто бы ни был я, это никак не влияет на тот медицинский факт, что ты дурак и трус. Кстати, ты ведь уже попрощался - не забыл? А я тыщу лет знаю, что прощание подобной шушеры, мягко говоря, затяжное. И ещё лет двадцать назад написал "методику вытравливания головожопых", дабы оно не слишком затягивалось. А "лапуля" - это термин такой, доказавший за долгие годы применения свою высочайшую эффективность в вытравливании головожопых и одновременно индикатор, что я уже не испытываю к собеседнику никаких чувств, кроме презрения.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Alexander, Да, у меня тоже стояла (а на срочном рынке до сих пор стоит) заглушка 1 заявка - 1 лот, но это не так уж сильно упрощает задачу и не гарантирует на 100% исполнение. Там масса всяких неприятных нюансов. Бегать по таблицам я категорически не хочу, у меня торговля довольно агрессивная, а задержки при обновлении данных в таблицах могут составлять минуты. Блокировка ставится в момент подачи заявки в Квик и снимается либо в OnTrade, если она полностью исполнена, либо после снятия по таймеру. Кроме того, у меня заведено аж три стека, чтобы практически вся обработка выполнялась в потоке мейна, а в таблицу сделок не заглядываю вообще никогда. И я уже говорил, что самый первый вызов OnTrade вовсе не означает, что данные там правильные, и проверка цены на ноль тоже ничего не гарантирует. Я хотел когда-то обсудить как лучше и создать совместными усилиями библиотеку функций на Луа по подаче и контролю исполнения заявок, по организации диалога - в общем, всю техническую часть, не касающуюся алгоритмов торговли, но тут же прибежала распальцованная шушера и засрала ветку поросячьим визгом. После двух попыток я плюнул на это дело, и лучшим считаю то, что использую сам. А от разработчиков хочу только одного: чтобы они перестали плодить новые версии, пока система ещё хоть как-то работает.
Зависание QUIK
 
Alexander, Ну уж что-что, а вывести данные в таблицы, посчитав там всё, что душе угодно, проблем не представляет. Как и "чтобы быстро например щёлк мышкой - купил, щёлк - продал, без всяких там окон ввода заявок, чтобы быстро" - у меня там и цена и объём сделки считается автоматически. Только пользоваться этой возможностью я давным-давно перестал: скрипт торгует лучше меня, и нефиг путаться у него под ногами. А насчёт "всяких там зависаний" - классика:
- У вас на стройке несчастные случаи были?
- Нет.
- Будут!
Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 41 След.
Наверх