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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 41 След.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Да, вначале нужно создать. Что я и сделал. Я уже писал, что два раза пытался "создать лучше по принципу мухи отдельно, котлеты отдельно" (один раз сам, другой вместе с Борисом) - вылизать общими усилиями "техническую часть" вплоть до кодов, наслушался визгов по этому поводу и больше заниматься этим не намерен. Это и есть "часть скрипта, отвечающая за взаимодействие с QUIK". А торговые идеи здесь вообще никогда не обсуждались - это личное дело каждого, да ещё и, как правило, "ноухавное", которым мало кто намерен делиться, и всё сводится к обсуждению того или иного тыщу лет известного и никому не нужного говна вроде скользящего среднего или волн Эллиотта. Скажу больше: я вообще НИ РАЗУ не видел, чтобы здесь обсуждались действительно серьёзные вещи.

Никакой "вопрос третий" для меня не существует: человек НЕ ДОЛЖЕН принимать участие в торговле, не его это собачье дело. Он может давать задание скрипту, давать ему деньги или забирать их у него - и всё. Например, я не так давно дал задание своему скрипту вывести к чёртовой матери все бумаги у одного из моих брокеров. Что он и сделал дней за десять. А вот КАК он это сделал - это уже ЕГО проблемы.

ЛЮБАЯ программа состоит из разных частей, имеет модульную структуру и обладает определённой гибкостью. Даже такая простая и детерминированная как, скажем, программа сортировки. А торговая программа и вообще управляется потоком внешних данных - там тем более гибкость должна присутствовать, она просто не может себе позволить становиться раком в одну из этих поганых "стратегий" - тем более, что для разных тикеров, разных таймфреймов, разного времени суток и всего такого прочего стратегия должна изменяться (если, конечно, Вас интересует результат) - НЕПРЕРЫВНО изменяться, а не по каким-то сраным "переключателям".

Вот и вдыхайте в него жизнь, а не полагайтесь на дядю Васю - я ПОЛНОСТЬЮ написал свой скрипт, я ПОЛНОСТЬЮ властен над его поведением в ЛЮБОЙ его точке.

Ха-ха-ха! КОГДА ИМЕННО нужно "встать в направленное движение"? СКОЛЬКО ВРЕМЕНИ "курить бамбук"? И - О, УЖАС! - что делать, если этот "определитель тренда" нам просто соврал?

Ха-ха-ха! И что же нам говорит тех. анализ? Мне вот  в начале работы над скриптом казалось, что торговать нужно НА ВСЕХ таймфреймах одновременно. А уже много позже, через несколько месяцев, и не теханализом, а по результатам работы за это время, я пришёл к выводу, что не надо на всех, это почти никак не влияет на результат, но связывает больше средств, и теперь разрешаю торговать лишь трём младшим таймфреймам, которые при необходимости могут консультироваться со старшими.

Ах, вона как! Отвечает каждый трейдер, а со скрипта взятки гладки. Знакомая позиция, её разделяют все разработчики скриптов на заказ. А я вот на заказ не пишу, писал свой скрипт только для себя, любимого. Ну или для моих близких друзей - это ещё ответственнее
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Господи, что такое "движок" и на кой он кому нужен? По-моему, это дурацкое словечко появилось как раз тогда, когда программисты стали массово вымирать. И на кой нужно "переключались стратегии"? Скрипт - это И ЕСТЬ стратегия! И за каким хреном нужен этот вонючий тренд? На каком таймфрейме? А если у нас высокая волатильность, то какая, в жопу, разница, куда там направлен тренд? Да я вообще не знаю и знать не хочу, что такое трендовые стратегии, осцилляторы или скальпинг - ЕДИНСТВЕННОЕ, что требуется от скрипта - это давать ответы на вопрос: когда, сколько и чего нужно покупать, а когда продавать. Если он не умеет правильно отвечать на этот вопрос - это говно, а не скрипт. А если умеет, то пусть и реализует САМ свои же рекомендации - на кой ему вообще человек? Скрипт считает быстрее, точнее, внимательнее, он не устаёт, у него крепкие нервы - с какой радости он должен зависеть от какого-то полуслепого идиота, который ему будет "переключать стратегии" или давать советы вроде: "Лошадью ходи, век воли не видать"? На кой ему это "слабое звено"? На кой ему эти дурацкие графики и вообще всё, что предназначено для человека? Денег дал - отвали, остальное - не твоя забота! Мой скрипт позволяет торговать на любом рынке ВААПЩЕ БЕЗ ИЗМЕНЕНИЙ В СКРИПТЕ! И любой нормаьный скрипт должен делать то же самое.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, При чём тут пользователи? Не они меняют версии языка. И сам факт появления новых версий - лучший индикатор, что язык - говно.

Я говорил про режим по историческим данным. Мой скрипт работает в трёх режимах: боевой, тестовый (для отладки) и по историческим данным (для черновой обкатки новых идей). И в этом режиме sleep НЕ НУЖЕН ВААПЩЕ.

Да, "меняются рынки, меняются инструменты" - и что? У фьючерсов так и вообще обязаловка по смене инструмента. Скрипт-то на кой менять? Мой прекрасно уживается с любыми рынками и любыми инструментами. Пущай САМ разбирается со своими стратегиями - мне какое дело? Это ОН торгует, а не я. Ему ЛУЧШЕ знать, когда, что, сколько и почём ему открывать, лонг это будет или шорт, когда, что, сколько и почём ему закрывать. А что там будет вытворять эта долбаная "умная заявка" - то мне неведомо, исследовать её поведение не собираюсь и денег своих ей нипочём не доверю. Это как раз я "дальше занимаюсь своим прямым делом, а скрипт - своим: управляет позицией, меняет цены, меняет направление сделок. В общем, торгует. Забыв про все неурядицы с Киком.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Да мне и notepad не нужен, не говоря уже про SciTE. Текстовый редактор, в который понапихали всякого говна по определению хуже, чем просто текстовый редактор.

Ха-ха-ха! Луа сам почти ничего не знает. К тому же, там постоянно меняются версии языка.

Вот уж точно: не Вам мне объяснять что такое OOP и преимущество такого подхода! Я много раз и много лет мочил в сортире всё это говно. Маккарти - да, это голова, а вот Страуструп и его последователи изуродовали все идеи ООП до полного несварения. Меня просто тошнило от их идиотской мантры "инкапсуляция-наследование-полиморфизм". Это же моя давняя фраза, что "указатель на структуру покрывает все "классовые" потуги Страуструпа как бык овцу".

Да, я сам всё хорошо знаю. Ничего тормозить не надо, никакого sleep(1) не надо, нигде ничего не виснет, а .sleep(250) отсчитывает четвертушки секунд для обработчиков событий. А а  режиме работы по историческим данным sleep вообще не используется, и двухмесячгый тиковый массив обрабатывается секунд за двадцать.

ЗА КАКИМ ХЕРОМ мне цеплять МОИ стратегии к какому-то говну? Что оно мне В ПРИНЦИПЕ может дать? И зачем мне менять свою стратегию, если она меня полностью устраивает? И какие проблемы поменять её при необходимости? Я менял её много раз, иногда по несколько раз на дню, пока не отладил. КАКИЕ ПРОБЛЕМЫ?! И я всю жизнь переделываю только необходимые модули. И вообще, вот цитата из моей книги:
Концепция единого пространства текстов позволяет максимально использовать наработки, выполненные ранее в других проектах: уже сам факт регистрации в системе очередной прикладной программы автоматически снабжает её перечнем необходимых инструментальных средств (файловый менеджер, преобразование типов данных, отладочные функции и т.п.). Ещё одним преимуществом данного подхода является повышение качества алгоритмов и программ за счёт более широкого тестирования модулей общего назначения на разных прикладных задачах. Эта же концепция позволяет ранее созданным программам простой перетрансляцией их кода, впитывать все последующие наработки. Например, при регистрации в системе модуля управления манипулятором «мышь» его получат сразу все «заинтересованные» программы. При регистрации каждого нового транслятора (GNU, BC, MSVC, WATCOM) или операционной системы (DOS, Windows, UNIX), сохраняется возможность компиляции всех ранее разработанных модулей без какой-либо переделки программного кода.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Самое ценное в жизни - это Время. И нефиг его тратить на всякое говно, если уже есть notepad.

Ну, ну, ЧТО этот придурок "текс без проблем"?

"рядом консоль куда выводится результат или ошибки"
Ха-ха-ха! И что делать с этой консолью? Есть ФАЙЛ, который у меня иногда занимал десятки мегабайт - там МОЖНО что-то найти, а в этом говне что?

Да за каким хером мне "эта свободная программа", если отладка без неё проще и эффективнее, чем с ней?

ЭТО ВЫ, ребятки, себя обкрадываете! А я написал, отладил, запустил и забыл. Как известно, "Самое ценное в жизни - это Время". И незачем его тратить на всякое говно.

"У кого оптимальней?" Это даже не вопрос! У меня оптимальнее в 100500 раз. А рабочий код моего скрипта состоит именно из ОДНОЙ строки. Можете Бориса спросить - он видел мой код. Хотя он давно отсюда свалил, и даже звонил на днях, высмеивал меня, что я опять сюда влез.

"А что это такое?"
А это тоже хрень какая-то, нафиг никому не нужная. И на Роберто Иерусалимского не надо кивать - полистал я его в самом начале знакомства с языком - он просто дурак. Кажется, тогда я расписывал - почему.

"Летает по тикам так что нужно тормозить!"
Кто летает? Зачем летает? Нафига нужно тормозить?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Ла не поможет никакой SciTe отловить ошибки в коде - разве что самые примитивные, описки. Вот, скажем, в моём скрипте идёт открытие внешнего файла и забор данных оттуда. И не только данных, но даже и некоторого кода. И что этот придурок может "проверить"?

А блокнот может всё. Код на Lua - это просто текст, и работать с ним нужно именно в ТЕКСТОВОМ редакторе. Желательно, не загаженным никаким "сопутствующим" говном. А отладка - это запуск скрипта в Квике и анализ получившегося при его работе лога. ТОЛЬКО ЭТО может реально отладить код. А графики и прочее подобное дерьмо меня не интересуют от слова "совсем" - я написал скрипт, чтобы тот САМ торговал, БЕЗ меня. И что значит "542 строки код!"? Это много или мало? Рабочий код моего скрипта состоит из ОДНОЙ строки.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, УХ, какое смелое заявление!

Задача создание робота с обычным блокнотом превращается в куда более тривиальную задачу. А редактор FAR Manager, пожалуй, лучшее из всего что попадалось в свободном доступе и вообще где бы то ни было. Это пример того как надо писать на lua. Всё настолько прекрасно работает, что никакие "двойные очереди в луа" нафиг не нужны.
Как запустить скрипт qlua из командной строки?
 
nikolz, Непонятно, зачем вообще запускать скрипт вне терминала, если он нужен ТОЛЬКО для роаботы с терминалом. А отладить реальный скрипт в таком говне как SciTe В ПРИНЦИПЕ невозможно. А если "хотелось просто иметь возможность запускать Lua-скрипт для отладки какого-то алгоритма или какой-то функции", то запихните этот алгорнитм и эту функцию в отдельный скрипт и отлаживайтесь там хоть до посинения. А после отладки вставите этот "отлаженный функционал уже в реальные торговые скрипты". Да и то непонятно: что мешает отлаживаться в самом торговом скрипте? Лично я только так и поступаю.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Да пошли они! Заголовка вполне достаточно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Нет, "объяснение 100-процентного успеха" - это в Кащенко. А торговля у меня и так без графиков.
Как запустить скрипт qlua из командной строки?
 
Alexander, FAR и как оболочка куда удобнее Total Commander, хотя идеология обоих передрана у дяди Нортона, но редактор FAR - это просто НЕЧТО! Макросы через Ctrl+"." настолько дико расширяют возможности, что ничего другого я и видеть не хочу, не то что искать. А что такое "приличный форматтер именно под Lua"? Я отлаженные блоки и функции просто схлопываю в одну строчку, чтобы не мельтещили перед глазами, с оставшимся работаю. Очень удобно, а полностью отлаженный скрипт состоит из одной строки.
Как запустить скрипт qlua из командной строки?
 
Alexander, Да и Вы всё верно пишете. Только... код Lua можно писать хоть в блокноте. Я лично пишу в редакторе FAR Manager, а там всё в порядке и с подсветкой, и с форматированием, и с показом нетекстовых символов. Скрипт я запускаю из Квика, утром в рабочие дни, но, в принципе, его можно и месяцами не выключать. А смотреть как он работает нужно только в процессе отладки, да и то удобнее всего по логам. То есть не только "среды VSC" - вообще ничего не надо. Вы, судя по всему, вполне профессиональны как программист - следовательно, Lua можете освоить за пару часов. Кстати, вовсе не обязательно "руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать" - записываете новую версию на место старой и кликаете на "остановить" и тут же на "запустить" - это максимум пара секунд. А "в запарке" пишется лишь самая первая, ещё толком не рабочая версия скрипта - дальше новые версии будут появляться через часы, дни, недели, месяцы, годы. Это и есть самое "нормальное простое решение для этого". И от разработчиков ничего не требуется.

Ах, так Вы не торгуете скриптом, используете его только как справочник для принятия рещений. Я сначала тоже выводил информацию на экран, раскрашивал таблицы, как попугая (цвет очень нагляден и информативен для принятия решений), но быстро понял, что скрипт с этой информацией разбирается  быстрее меня, точнее меня, принимаемые им решения почти всегда лучше моих, и мне незачем вообще путаться у него под ногами. И сейчас я заглядываю в Квик два-три раза в день, чисто "из спортивного интереса".
Как запустить скрипт qlua из командной строки?
 
Alexander, Вот скажите: зачем Вам всё это надо? Зачем связываться с библиотеками, что-то компилить, что-то собирать, разбираться с тем, как работает Квик, перелопачивать это всё с выходом очередной версии? КАКАЯ РАЗНИЦА, как работает Квик? Обилие глюков и обилие версий позволяет уверенно предположить, что работает всё это ПЛОХО. С другой стороны, это всё же РАБОТАЕТ, более-менее надёжно - система достаточно популярная, и искать что-либо иное просто не имеет смысла: как бы ни был убог Lua, он всё же обеспечивает возможность организации торговли на бирже, а больше от него ничего и не требуется. Юзеру от скрипта тоже почти ничего не нужно - запустил и забыл. И программисту тоже - написал и забыл. Я уже несколько месяцев вообще не прикасаюсь к коду, да и до этого полгода-год рихтовал лишь СВОИ алгоритмы торговли, "техника" уж тыщу лет работает безукоризненно: нужно было лишь сообразить, что не надо заниматься разной фигнёй с потоками, и всё, что можно, делать в потоке main - и всё, глюки закончились. И теперь мне плевать, что там за версия Квика, что за версия языка, что там за библиотеки водятся и на всё остальное. Зачем искать на свою задницу приключений?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Нет, я больше опытом не обмениваюсь: два раза попробовал - хватит.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, С чем работать? По моему опыту, только с тем, что написал сам.  :smile:  А "вот что пишут" подвергать тщательному сомнению вплоть до каждой запятой.

Сетка – это очень СЛОЖНАЯ система. Сеточных алгоритмов как собак нерезаных. В частности, мой тоже можно в какой-то степени обозвать "сеточным". Есть определённая закономерность: чем больше алгоритм способен заработать в идеальных условиях, тем быстрее он всё это может просрать при малейших отклонениях от идеала. И что ещё за "выигрыш в 100%"? Относительно ЧЕГО и за какое время?

Что там "трейдеры обычно используют" - это ИХ проблемы, а зарабатывать  должен НАШ алгоритм. И это при том, что рынку насрать на наши желания, он будет ходить по своим законам. А "для ускорения получения сигнала" данные нужно брать данные из ТТТ: BID, OFFER, SEC_PRICE_STEP или что там ещё надо. Быстрее не получится.
Как запустить скрипт qlua из командной строки?
 
nikolz, Вас, лапуль, можно не читайте просто увидев Ваш ник. И понимать тут нечего: тупое распальцованное ничтожество пыжится изобразить из себя что-то состоятельное, засирая все ветки подряд своими тупыми комментами. Тегом "код" не пользуется, поскольку в этом случае львиную долю вываливаемого говна сам браузер спрячет.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Нет тут никаких чудес, у таблиц Луа для адресации используются не индексы, а имена. Плюс ещё эта долбанутая динамическая типизация. Тем не менее, я ВСЕГДА использую в качестве имён ТОЛЬКО целочисленные индексы. Ах, да - эти же придурки даже тип integer отменили.

Господи, что ещё за "умная заявка"? Умные заявки нужны разве что тупому скрипту. Я бы такое говно НЕМЕДЛЕННО выбросил на помойку! Шоб не
умничало.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM,
1. OnOrder нафиг никому не нужен.
2. trans_id формирует сам скрипт и уж кто-кто, а он его знает.
3. Если заказ был выполнен - хоть немедленно, хоть нет - об этом расскажут сделки.
4. Всё это можно делать именно в main.
5. Лично у меня все индексы всех массивов числовые - это не всегда удобнее, но всегда надёжнее и практически всегда быстрее.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Ихде тут "порядок"? Совершенно бессмысленные действия.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Ну-ну, удачи. Nikolay, всё сказал, повторяться незачем..
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Да, "суперкаров" сейчас как собак нерезаных. Куча рекламы, что с его помощью МОЖНО СДЕЛАТЬ что-то жутко важное и полезное, но никогда не видел примероа, чтобы кто-то что-то с помощью этой херни РЕАЛЬНО СДЕЛАЛ. Как я писал аж в 11 далеком году (про браузеры):
Тупорылые успели так загадить клиента, что знаменитые Авгиевы конюшни выглядят на этом фоне чуть ли не благоухающим садом! Одних только лохотронов о браузере (о каждом из которых можно писать многотомные опупеи) бесчисленное множество - файловая система и менеджер вкладок, плагины и расширения, меню и библиотеки, редактирование и поиск, графика и анимация, асинхроность и синхронизация, тормоза и глюки, не говоря уже про более конкретный зверинец: DOM, jQuery, GWT, AJAX, PHP, SEAM, Wicket, Greasemonkey, Silverlight, и прочую мерзость. Но ведь нужно же когда-то заканчивать статью!
Дополнительная вонь - обсирание предшественников. То же самое будет говориться и о нынешних сверкающих образцах, и очень скоро - как только появится очередная версия. Быдло все схавает!
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Подумаешь, беда какая. Сегодня не сработала - завтра сработает, ещё и выгоднее. Подавать заявки задолго до события ещё более накладно: может, рынок схватит эту заявку и ломанёт ещё на пару сотен пунктов. Или, наоборот: подойдёт к ней и развернётся. Торговля - медленный процесс, а аварийные ситуации редки и быстро исправляются.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Задержки как раз от скрипта - он ведь работает в поте лица во всех этих обработчиках. А задержки от брокера и биржи нам по барабану. Рекордная задержка, которую я видел в их исполнении, если я правильно помню, была 17.5 МИНУТ! А отложенные вообще не вижу смысли использовать - скрипт же и так постоянно мониторит состояние рынка.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, А я не наблюдал. Только когда тестировал работу с 20 000 бумаг на Финаме были заметны задержки, да и то скорее из-за прорисовки в двухсекундном обработчике этой ЗДОРОВЕЕЕНОЙ таблицы. Тогда я и ввёл "спящий режим", в котором скрипт только торгует, но таблицу не рисует, только тики в заголовке небольшого окошка тикают, чтобы показать, что скрипт работает, а не висит.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, В алгоритме - да, закручено местами очень серьёзно. А это всего лишь техника. Можно и попроще, но мне хотелось, чтобы мой алгоритм ещё и зарабатывал. :smile:

Нет, конечно. В цикле мейна крутится только sleep(250). Вот ещё фрагмент из моего ТЗ:
Для балансировки нагрузки на процессор обработчики вызываются со сдвигом: 4 раза в секунду – обработчик стека сделок. Каждое нечётное срабатывание (2 раза в секунду) – обработчик стека заявок, каждое второе и шестое – секундный (не пересекаясь с 0.5-секундным), каждое восьмое – 2-секундный (не пересекаясь ни с секундным ни с 0.5-секундным). Свечной и более тяжёлые обработчики в случае необходимости вызываются из двухсекундного при помощи счётчиков.

Да, все заявки у меня лимитные и раскиданы по уровням. Да, "исполнение получаем в OnTrade, а Контроль Активных заявок по времени". Каждые 10 секунд проверяется стек активных заявок, и те из них, кто исчерпал свой лимит времени, проверяются на возможность снятия.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Так у меня и считается по всем таймфреймам в цикле: 10, 30, 60, 120, 300, 600, 1800 и 3600 секунд.

По поводу подачи заявок - у меня сделано так:
Каждый таймфрейм управляет своими ставками самостоятельно, но реальные сделки разрешены только для нулевого (10-секундного) таймфрейма, который находится ближе всего к текущему положению рынка. Остальные уровни могут лишь переносить к себе уже совершённые ставки с нижестоящих уровней. Закрытие сделок старшими таймфреймами осуществляется сбросом закрываемой сделки на нулевой уровень. Есть и более скоростная подача заявок, в секундном и двухсекундном обработчиках.

И далее:
В полусекундном обработчике обслуживается стек заявок: выбирается кандидат на подачу заявки в QUIK (приоритетом пользуются продажи, освобождение средств, а среди покупок выкуп шортов). Все заявки уже при попадании в стек блокируют тикер до их исполнения или отмены, поэтому при отклонении заявки блокировка снимается, а скрипт переходит к следующему элементу стека. Таймер устанавливается на три минуты, по истечении которых заявку можно снимать. Если рынок находится рядом с заявкой, таймер переустанавливается ещё на три минуты. При подаче заявки в QUIK заводится новый элемент стека активных заявок для контроля за их исполнением.

А вот robot quik ни одного письма мне ни разу не прислал. Да он и мыла моего не знает. :smile:  
В чём преимущество OnInit
 
nikolz, Лапуль, OnTrade - это ЕДИНСТВЕННЫЙ коллбек, на который можно потратить время: все остальные можно смело выбросить на помойку. А портфель нормальные люди ведут САМИ, а не читают его у брокера. Разве что для сверки портфелей, которая глючит со страшной силой, и лично я её тоже выбросил на помойку.
примеры колбеков
 
nikolz, Лапуль, опять визги поросячьи? Мне НАСРАТЬ, кто Вас считает учителем - это может быть ТОЛЬКО дебил, да и то редкостный. Борька, который вообще в программировании ни уха ни рыла, рассказывал мне немного о своих контактах с Вами. А с ним мы многократно созванивались и даже лично пересекались, он жил у меня некоторое время. Так вот: Борька не программист, но далеко не дурак - я даже считаю его своим соавтором. А Вы, лапуль, тоже не программист, но дурак в девственно чистом незамутнённом виде.

На днях мы тут спорили с TGB (а это, в отличие от Вас, программист, и весьма квалифицированный). Спорили о том, нужен ли в скрипте ОДИН коллбек или вообще НИ ОДНОГО. И где-то в это же время один распальцованный придурок написал: "Так как не только использую все колбеки QLua, но и пишу свои дополнительные колбеки для скриптов Lua, то попробую объяснить что это за зверь". Не подскажете, лапуль, как звали этого дебила?
В чём преимущество OnInit
 
VPM, Это ТАК работает: чем больше, тем лучше. А на бирже нет никаких зависимостей - тем более, линейных.

А затем, что "регулировать количество в открытой позиции" - это ОДИН тикер. А я хотел бы иметь МНОГО тикеров. Но, увы, возможности моего скрипта многократно превышают мои финансовые возможности.

Нет, МЫ на бирже за баблом НЕ гоняемся. Мы снижаем риски. :smile:

Да, общего между фондовым и срочным рынком разве что нужно покупать дешевле, а продавать дороже.


Игорь М, Да, я писал, что использую OnTrade и обрабатываю в мэйне, но в OnTrade у меня НЕТ никакой обработки, да и в мейне она не "аж 250 мс", а стократ быстрее - это обработчик сделок вызывается раз в 250 мс. Да, я не согласен с TGB, хотя в наших подходах только одно различие: я говорю, что нужен ОДИН коллбек, а он - что НИ ОДНОГО. Всего в единичку разница! :smile:  
В чём преимущество OnInit
 
VPM, А оптимальное количество зависит от размера кошелька - чем больше, тем лучше. Я бы с удовольствием имел в портфеле 500-1000 тикеров, но где же столько бабла найти. Да и биржа накрылась медным тазом - по крайней мере, мой любимый долларовый рынок и не особо любимый  евровый.

У меня все ордера только лимитные. А пассивные сделки - это сделки по заявкам, которые успели хоть немного полежать в стакане. А на срочном рынке плечо далеко не всегда 10, бывает и 3. Говорят, бывает ещё меньше, но я не видел. Да ещё клиринги, которые вымывают клиентов с малыми деньгами (точнее, с малыми резервами свободных денег.

Игорь М,  Нет, изменение размера стека - это никакой не "флаг изменения состояния OnTrade" - это всего лишь указатель, что в стеке что-то есть. Выбирается стек в обработчике по таймеру, размер стека, ессно, меняется, а OnTrade при этом может и вообще не быть.
В чём преимущество OnInit
 
VPM, Сроду не обращал внимания ни на комиссию, ни на дивиденды, считая, что одно примерно компенсирует другое. Только когда Борьке понадобилось множество частых сделок с небольшой прибылью в каждой, да когда ввели это дурацкое правило про "пассивные сделки", что-то там прикрутил для снижения комиссии. На спред и тренды всегда плевал с высокой колокольни, а ликвидность лишь очень грубо оценивал для определения "качества" тикера: если там народ ковыряется, значит, и нам можно. А диверсификация нужна всегда - тупо для страховки: что бы такого ужасного ни произошло с парой-тройкой тикеров, на состоянии всего портфеля это мало повлияет.
В чём преимущество OnInit
 
VPM, А комиссия-то здесь каким боком?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Я когда-то хотел использовать "готовые" свечи на "тяжёлых" таймфреймах (начиная с 15-минутных или хотя бы с часовы), но реализация работы со свечами в Квике настолько безобразна, что я давно уже все свечи считаю сам, от 10-секундных до часовых.
примеры колбеков
 
nikolz, Лапуль, ну хватит корчить из себя программиста. Уши вянут смотреть на эту бредятину. Вас ХОТЬ КТО-НИБУДЬ принимает за учителя?
В чём преимущество OnInit
 
nikolz,
Цитата
Если Вы ругаете колбеки, то Вы ругаете "чистое" Lua, так как колбек -это функция на чистом луа. Колбеки обычно ругают те, кто  луа не изучил толком и в функциях QLUA не разобрался.
Блестящая подборка клинического бреда. Как говорится: "Молчи - за умного сойдёшь".

VPM,  А я тут при чём? Мне насрать на все "шаблоны в подходах к организации  торговле и удержанию позиции". Как и на John F.Ehlers - подумаешь, "опубликовал свой подход в четырёх книгах в алгоритмах". Я сам алгоритмист, и ни один мой подход на 4 книги не растянуть: "кто неясно мыслит, тот неясно излагает". Индикаторы я никогда не писал и не собираюсь, и уж что-что, а "мгновенная линия тренда" мне уж точно нафиг не нужна.
В чём преимущество OnInit
 
VPM, АРРИГИНАЛЬНО!
1) Нет у меня никакой "скальперской стратегии".
2) Широкая диверсификация никогда никому не мешала.
3) Что такое "грусть о потерянном рынке" и "подход с высокой колокольне на все", не врубился.
4) Про Джона Элерса впервые слышу.
В чём преимущество OnInit
 
TGB, А мне кажется, даже побольше, чем в сто: реализации я, конечно, не знаю, но в одном случае должна быть лишь пара прыжков по косвенной адресации, а во втором - вызов метода, заполнение полей значениями оттуда. Впрочем, неважно - пусть будет в три раза. :smile:

Вряд ли поддержка здесь что-либо подтвердит или опровергнет.

При торговле с малым количеством сделок в сутки действительно пофиг, все ли записи обрабатывать или поштучно. Но при активной торговле лучше балансировать нагрузку - как при подаче заявок, так и при обработке сделок.

Я не про то: поле-то order_num есть, но оно В ТАБЛИЦЕ (в моём случае передаётся через OnTrade). А какую заявку подавал САМ СКРИПТ? Он же У СЕБЯ должен найти эту заявку. Или не найти. И опознать её можно только по ID транзакции, т.к. при подаче заявки скрипт не знает и знать не может номер заявки - не он его присваивает. Вот и представьте: у Вас 1000 тикеров в обслуживании - где искать совпадение будете? А у меня стек активных заявок, там их обычно 1-2, редко больше, а иногда и вовсе ни одной.

Я так и считал когда-то, что "если в стеке активных заявок не нашлим нужный номер, то это заявка подана вручную". Это может приводить к некоторым неприятным наводкам. И сейчас скрипт такие заявки просто игнорирует - он их НЕ ПОДАВАЛ, он не отвечает за криворукость подавшего, а просто пишет в лог: "Не нашли - левая сделка по бла-бла-бла.
В чём преимущество OnInit
 
Игорь М, Ну, я обрабатываю в мейне, на флаг изменения состояния OnTrade мне насрать - я даже не знаю, что это такое. OnTrade лишь записывает данные в стек, код я приводил.
В чём преимущество OnInit
 
nikolz, Кто "носится"? sleep - это простейший способ эмуляции прерываний по таймеру, причём ЛЮБЫХ интервалов. Полскажите, будьте любезны, КАКИМ ОБРАЗОМ он может "раздуть  стек или очередь" или ХОТЬ КАК-ТО загрузить процессор? Мой скрипт на дохленьком двухъядерном 2 ГГц процессоре без напряжения обслуживает сотни тикеров, а стеки почти всегда пусты. Это Ваш онанизм с библиотеками и работой с событиями нафиг никому не нужен. ЗА КАКИМ ХЕРОМ "поток main вызывать максимально быстро", если скрипт и так работает в нём 99% времени. Даже не работает, а скорее отдыхает. Весь код на девственно чистом LUA, и НИ ОДНОЙ поганой библиотеки.
В чём преимущество OnInit
 
TGB, Да, можно выбирать 4 раза в секунду новые сделки из таблицы сделок, но ЗАЧЕМ? Зачем постоянно дрочить таблицу КВИКА, если можно вообще без обращения к ней иметь все данные уже внутри самого скрипта, в таблицах ЛУА? И что такое "ведение стека прерываний"?ВААПЩЕ НИЧЕГО! Любой из стеков инициализируется в начале мейна парой операторов, вроде:
Stack={}; -- сам стек
Stack[0]=0; -- его размер.
И доступ к любому из его элементов мгновенный, по индексам, раз в сто быстрее, чем обращение к таблице Квика. Но это мелочь - куда важнее то, что избежать борьбы с дублями колбеков всё равно не удастся. Более того, эта борьба станет тысячекратно сложнее! Дело в том, что данные в этих "дублях" НЕ ВСЕГДА одинаковые, и то, что Вы считали данные из таблицы, отнюдь не гарантирует, что они там корректные. Те самые прерывания, которые поступают в Квик не только передаются скрипту в OnTrade, но и вызывают перезапись таблицы сделок - я сам видел нули в некоторых полях этой таблицы (в айдишках заявок, транзакций, в цене - кажется, когда-то об этом писал), так что данные в строках таблицы не всегда сразу "устаканиваются". И кто Вам сказал,, что ловля дублей прерываний "выполняется в потоке, отличном от main"? По-хорошему (т.е. как у меня), работа со всеми стеками ведётся именно в потоке main!

По Вашему коду:
а) он вообще никак не учитывает нюансы, о которых я сказал выше и, следовательно, ОБЯЗАН время от времени "нарываться на неприятности".
б) Он всегда вырабатывает ВСЕ появившиеся записи, даже если их придёт несколько десятков или сотен. А ведь надо и за рынком следить - курсы читать, свечи считать, решения принимать.
в) В "секретной" части кода (то бишь в самой обработке) сидят потенциальные проблемы, и очень серьёзные: нужно ведь опознать, по какой ЗАЯВКЕ пришла эта сделка. У меня-то на этот случай есть стек активных заявок, а Вы что будете делать? Нужно ведь и деньги учесть, и портфель подкорректировать - да мало ли что ещё. А если это вообще "левая" заявка, поданная вручную, в обход скрипта через стакан?

Фрагмент четвертьсекундного обработчика
::Start:: -- метка на случай обработки ещё одного элемента
i=a[0][7][0]; -- размер стека, он же индекс последнего элемента
if i>0 then -- стек не пуст
a[0][7][0]=i-1; -- новый размер стека прерываний
...

СКАЗКА!
В чём преимущество OnInit
 
TGB, Вы правильно понимаете: мой скрипт знает все подробности о текущих сделках. Когда эта информация становится ненужной, он о них забывает. Зачем мне бегать по таблице сделок (дополнительный "геморрой"), когда есть нормальные коллбеки, за которыми и следить-то не надо. Мало того, тот факт, что ты посмотрел на строчку в таблице, ещё не означает, что ты её обработал: это таблица для чтения у скрипта, но для записи у Квика, и могут возникать конфликты. Я точно знаю, например, что getItem МОЖЕТ возвращать nil - и что в таком случае делать будем? Наконец, эта таблица КВИКА, а не таблица ЛУА, т.е. на порядок более глючная и тормознутая конструкция. Да, мне тоже иногда приходится бегать по таблице 'orders', но это лишь в ИСКЛЮЧИТЕЛЬНЫХ случаях, пару раз за сутки, когда я хочу снять заявку, по которой не было ни одной сделки, и я тупо НЕ ЗНАЮ её номер. Да и не критично это всё: ну, допустим, скрипту не удастся снять неудачную заявку - да и хрен с ним: брокер потом снимет, если она до того времени не сработает - подумаешь, беда какая. А вот информация о сделках ВАЖНАЯ, её упускать нельзя. А полный код своего OnTrade я приводил - проще просто не бывает: сбрасываю данные в стек прерываний, И ВСЁ! Почти полный - там я тоже контролирую поля на nil на всякий пожарный. Да, "QUIK точно не HFT терминал", но не так уж редко бывают ситуации, когда весь рынок вдруг встрепенулся, и пара десятков ваших тикеров кинулись подавать заявки. А у меня хоть сотня сделок придёт - не беда: желания тикеров отправляются в стек заявок и выбираются оттуда по одной каждые полсекунды. Сделки немедленно попадают в стек прерываний и выбираются оттуда 4 раза в секунду, обычно по одной, но если там дубль уже обработанной (тоже тот ещё маразм: несколько прерываний на одно событие!), то по 2 или 3 элемента за раз. Даже если на рынке случится истерика, скрипт спокойно всё разгребёт за 10-20 секунд или там за минуту. Сказка! Ну и, наконец, стек активных заявок - там элементы существуют от момента подачи заявки до её закрытия или снятия. Он тоже почти всегда пустой, искать там что-либо очень быстро, и нужен он, главным образом, для отлова дублей прерываний и обработки ситуаций, когда заявка реализуется через множество сделок.
В чём преимущество OnInit
 
TGB, Затем, что сделки приходят в случайные моменты времени, алгоритмически они и есть прерывания. Точно так же, как и реакция на нажатия клавиш или клики мышкой. И мой скрипт обрабатывает и то, и другое именно как прерывания. И программу я пишу не для управления системой зажигания автомобиля, а для ещё более простой задачи торговли через Квик. И не моё собачье дело, когда придёт сделка по моей заявке: через секунду или через час. И не скрипта дело - когда придёт, тогда и обработает.
В чём преимущество OnInit
 
TGB, Какая разница, по старым или по новым? По ней нужно бегать, чего-то там сохранять, чего-то там искать. И как часто? У меня, например, блокируется подача подача новой заявки по тикеру, если предыдущая не реализована или не снята. А если у меня эта заявка будет реализована в сотню сделок? В том-то и прелесть OnTrade, что НИЧЕГО не нужно делать, ни за чем не нужно следить, пока тебя не пнут под зад прерыванием.
В чём преимущество OnInit
 
VPM, Я вообще без понятия, в чём там мой скрипт участвует: денег дал - и пусть выкручивается как знает. Когда писал, стремился как раз максимально снизить риски, так что особых звёзд он с неба не хватает, но работает очень надёжно, и я давно перестал следить, чем он там занимается - всё равно он торгует лучше меня.

Я и сейчас отрицаю обработку старых данных. Разве что режим работы по историческим данным использовал для черновой отладки скрипта.

Естественно, любой, кто может, всегда с радостью откусит кусочек у соседа. А фьючерсы и вообще игра с нулевой суммой. Для меня в своё время было полной неожиданностью, что техника торговли на срочном рынке радикально отличается от фондового, и я тогда довольно прилично просел, пока отлаживал торговые алгоритмы.
В чём преимущество OnInit
 
VPM, Да не смешите Вы мою задницу. Время от времени даже солиднейшие компании с целой армией аналитиков высочайшей квалификации терпят миллиардные убытки. а инсайд вообще никакого отношения к торговле не имеет - это, по сути, жульничество. Другое дело, что с деньгами намного легче зарабатывать, чем без них. А стабильность - это минимизация рисков. И, соответственно, снижение вероятности заработать много и быстро. Сеточные алгоритмы как раз и относятся к высокорисковым.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, У меня во внешних файлах лежит мой портфель, кошелёк, перечень тикеров, за которыми скрипт следит, данные для брокера, чтобы можно было совершать сделки, настройки разные. Не править же из-за этого код. При запуске скрипта всё это считывается, при остановке - записывается. Точнее, записывается каждую пару минут, на всякий пожарный.

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

Где я говорил о подготовке переменных на лету с помощью этой функции?
В чём преимущество OnInit
 
TGB, Да, я до сих пор используете OnTrade, намерен и дальше его использовать - это и проще, и быстрее, и надёжнее. Зачем бегать по таблице сделок, если есть прерывание? А если этих сделок сотни или тысячи за сеанс? Мой скрипт экономит своё время...

VPM, Почему это "никому не нужны сотни и тысячи тикеров"? У меня на долларовом рынке только в портфеле было с полсотни тикеров, а у моего друга и за сотню переваливало. И сделок у меня бывало под тысячу даже в боевом режиме. А уж тикеров, за которыми скрипт следил и вообще было тысячи полторы-две. При этом HFT меня никогда не интересовал - не для Квика эта технология, и вообще дурацкая.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, loadstring or load - это возможность программирования данными. То, что лежит во внешних файлах, благодаря этой утилите будет выполнено так, как если бы оно было набито непосредственно в теле скрипта. Например, номер счёта, код клиента, количество денег, которыми скрипту разрешено пользоваться и т.п. А что там понятно не только мне, я не знаю - информация ПОЛНОСТЬЮ определяется ПРИЁМНИКОМ.

А ЗАЧЕМ "так и в писать в файл потом читать без всяких доп. манипуляций"? Эта информация НЕ ТОЛЬКО для скрипта, но и для трейдера, и её лучше представлять в виде, наиболее удобном ДЛЯ ЧЕЛОВЕКА. А "файл txt" как раз для того, чтобы с его можно было открыть обычным блокнотом, хотя я пользуюсь редактором Far Manager - там прекрасно видны и нетекстовые символы и ему пофиг, что там за расширение.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
VPM, Что реализую? Чем поделиться? Баблом, штоле?

У меня КЛАССИЧЕСКИЙ подход к программированию, я стоял чуть ли не у истоков.

И я не понял: что за "преимущества ф. стандартной библиотеки  loadstring"? Что за "простой пример"? Что за "файл txt"? Что за "формат луа"?  
В чём преимущество OnInit
 
paluke, У меня никогда не было ни секунды сомнения, что писать нужно только на чистом Луа, и в начале своего появления здесь я раз сто подробно описывал - почему. НИКАКИХ библиотек! Только так можно почти не обращать внимания ни на версию Квика, ни на версию языка. И за всё время я помню только один случай правки кода по этой причине, когда местные умельцы заменили loadstring на load. Для столь примитивной задачи как торговля гениальный язык С тупо не нужен - достаточно даже такого дерьма как Луа. Написал и забыл. И не надо ничего грузить, ничего регистрировать, ничего компилировать, ничего дёргать. А тормозной интерпретатор позволяет спокойно обслуживать сотни и даже тысячи тикеров - выше крыши для любого трейдера. Да, у меня стоит ограничение не более двух заявок в секунду, но тут уж никакой гениальный язык не поможет.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 41 След.
Наверх