VPM, Я не знаю, что такое get_trans_id(), зачем здесь local и при чём здесь фильтр, я привёл полностью рабочий код, который за сегодня уже снял 4 заявки из 32 возможных. CLASSCODE тоже нафиг не нужен - по номеру заявки и так сообразит, что почём.
Владимир, Вот рабочий код: TC=TC+1; -- заносим в таблицу для формирования транзакций A.TRANS_ID=tostring(TC);-- данные по снимаемой заявке A.ACTION="KILL_ORDER"; A.ORDER_KEY=tostring(s.order_num); l=sendTransaction(A); -- и отправляем её в Квик
VPM, Если ордер не активный, то и снимать нечего. У него есть уже trans_id, по которому эту заявку ПОДАВАЛИ, а нужен НОВЫЙ trans_id, по которому её СНИМАЮТ.
VPM, Господи, канал-то здесь при чём? Там объёмы просто смехотворные. У меня, правда, оптика много лет, но в гостях прекрасно работает и через вайфай. Хоть сто там тикеров, хоть тысяча. И к разработчикам уже много месяцев нет никаких претензий. А если "в понедельник начнут выкупать", значит, скрипт начнёт продавать (сейчас у него небольшой перегруз по покупкам). Или во вторник. Или прямо сейчас - когда надо, тогда и продаст. Или купит. Главное, руками ничего не трогать, не путаться у него под ногами.
VPM, Что-то мне подсказывает, что поведение программы определяется программистом. Моя ведёт себя очень даже солидно. Вчера под 80 сделок, сегодня под 70. Это в боевом режиме - в тестовом более пяти сотен. Оба портфеля прекрасно сбалансированы, обоим поведение рынка очень даже по душе, оба понятия не имеют, что там "только коррекция на рынке акций РФ", да их это и не интересует.
VPM, Это было весь позавчерашний вечер, весь вчерашний день и всё сегодняшнее утро. Примерно час назад рынок ломанулся вниз, сейчас вроде как остановился. Мой скрипт очень неплохо на этом заработал.
Zvlos, И что тут "интересного"? Алгоритм поиска простых чисел тупейший и известный ещё до появления Решета Эратосфена. Мало того, он полностью детерминированный и никак не зависит от входных данных. Ежу понятно, что простые числа ищет программа, у "сапиенса" на это просто мозгофф не хватит. А "будут в файле простые числа, или нет" вообще никакого отношения к поиску простых чисел не имеет - это вообще другая задача.
VPM, А подумать? К тому же, я тыщу раз говорил открытым текстом: список тикеров, которыми ему вообще разрешено торговать и сумму, которой ему дозволено распоряжаться, определяю я. А уж чем и как из этого списка он будет торговать, решает он.
Да плевать мне на Ваши расчёты и прочую лабуду вроде "Мани Менеджмента" или "распределение весов в портфеле и количество контрактов на сделку" или "риски на торговый день". Не царское это дело, скрипт и сам справится. А задача у меня не только верно сформулирована, но уже реализована, отлажена и работает прямо сейчас - и в тестовом режиме, и в боевом.
VPM, У меня сейчас запущены в тестовом режиме 43 тикера, хочу погонять месячишко, чтобы посмотреть, заслуживают ли они того, чтобы торговать ими в боевом режиме. По первому впечатлению, половина из них годится для этого, но пока ещё и недели не прошло. Парочка из вышеперечисленных (CNYRUBF и NAU3) уже работают в боевом, нареканий нет. А "торговать на всю котлету" - наивернейший способ остаться без штанов, причём НА ЛЮБЫХ тикерах. Наконец, маневрирование ресурсами между тикерами на все 146% задача скрипта.
VPM, Повторяю: НЕ БЫЛО за мно никаких "конечных решений". Я дал ему денег - И ВСЁ! А если вспомнить период, когда биржа в России ещё нормально работала, то это ещё вопрос, кто кому дал.
VPM, Нет за мной никакого "конечного решения". Я обычно вообще не знаю, как он торгует, а иногда даже чем он торгует. И торгует он куда более "рентабельно", чем я сам.
Какая, в задницу, "чёткая логика"? Побитовые операции, хоть и называются "логическими", никакого отношения к логике не имеют. А сленгом обычно пользуются дилетанты, которые пытаются изображать из себя профессионалов - это даже индикатором может быть. В профессиональной среде сленг неустойчив и частенько привязан к конкретной задаче.
VPM, Да, по моей логике любым делом должны заниматься профессионалы. Остальные тоже могут, но только чтобы научиться чему-то полезному. Лично я учиться быть трейдером не хочу и, соответственно, торгую не я.
VPM, Вот именно: "Экономика должна быть экономной". Если Вы не "писатель", то и велосипед не Вам конструировать - нужно брать готовый. Что мы с Борисом когда-то и хотели сделать.
Да, "хотеть и делать чуть разные вещи". Мы - СДЕЛАЛИ. Хотели для всех, но сделали для себя. Причём именно МЫ - Борька хоть и не программист от слова "совсем", но голова у него варит превосходно.
Я сказал что 3 это не портфель. Десяток тикеров в портфеле - это ещё куда ни шло.
VPM, Если Вы не знаете побитовые операции, то Вам просто нечего делать в программировании - это одна из самых популярнейших команд, уступающая разве что MOV и JMP разных видов. У Кернигана с Ричи (да и до них) просто ИДЕАЛЬНО описана вся эта кухня, а тут несколько страниц обсуждается несчастный AND. А мы с Борькой когда-то хотели обсудить и реализовать идеальный интерфейс для программиста, отлаженный в боевых условиях и нечувствительный ко всем существующим глюкам. Это вряд ли больше десятка функций, на отлладку которых и гробится 99% времени программистов и которым посвящены чуть ли не все здешние ветки
БорисД, Сейчас уже и не такое. Мне сегодня Аваст и вообще доступ на этот сайт отрубил. Как известно, "ни одно доброе дечние не остаётся безнаказанным".
VPM, Да всё я понял ещё тыщу лет назад, когда не только мой скрипт, но и я сам не торговал. Мой депозита прекрасно защищён от просадки без всяких стопов.
Да видел я, видел! И ковид видел, и войну, и панику перед банкротством, и как весь рынок за 10 минут падает на 20% и более. Никакие стопы тут не помогут, А поможет внимание и крепкие нервы. Как у моего скрипта.
Ziveleos, Сейчас вероятность проблем со связью близка к нулю, а уж вероятность того, что именно в этот момент случится что-то страшное, да ещё если и диверсификация нормально поставлена... зато каждая сделка будет чуть точнее, чуть прибыльнее, и общий результат почти наверняка будет лучше. Меню для ручной торговли у меня в скрипте ещё сохранилось, но я уже где-то с год им не пользовался: скрипт торгует намного лучше меня. Последнее пёрышко, которое сломило спину верблюда было такое: у меня несколько месяцев сидел в портфеле один прилично просевший тикер, который мне изрядно надоел, а закрываться в убыток жаба душила. И вдруг он резко попёр вверх. Я обрадовался: наконец-то от него избавлюсь Скрипт тоже встрепенулся, начал им торговать. Я присмотрелся - а эта сволочь их ПОКУПАЕТ! И что же? Часа через три скрипт продал с хорошей прибылью и то, что было, и то, что он докупил. По-моему, с тех пор я и завязал с ручной торговлей.
Ziveleos, Нифигасе, технология! Сейчас посмотрел, что у меня творится: за сегодняшний день 28 заявок, 27 сделок, одна заявка активная, остальные исполненные, ни одной снятой, 16 покупок, 11 продаж, 12-я в уме. Зачем нужны стопы, если скрипт всё равно постоянно мониторит рынок? Если он пойдёт не туда, куда хочется, всегда можно поставить ту же лимитированную заявку - именно тогда и там, где нужно, а не предугадывая это место заранее.
Ziveleos, Я не пользуюсь стопами, но, насколько я понимаю, стоп-лосс точно такая же заявка, как и любая другая, она точно так же может быть активна, снята, исполнена (полностью или частично) и имеет свои собственные биты состояния. Разве нет?
Ziveleos, Да, это у меня. Я вообще не вижу ни единой "разной цели", когда состояние заявки бывает нужно контролировать. ЗАЧЕМ? Только для того, чтобы снять, если активна.
Ziveleos, Не вижу смысла. У меня этот анализ проводится только в момент снятия заявки. Если заявка всё ещё активна - подаём команду KILL_ORDER. Если нет - какая разница, исполнена она или снята? В любом случае, ничего делать не надо.
TGB, Да какие тут могут быть возражения? Динамическая типизация УЖЕ кретинизм вселенского уровня, а уж за "тип number" я бы и вообще яйца пообрывал, JS тоже интерпретатор, тоже передранный с C, но всё же не настолько изуродованный. Уборка мусора такой же кретинизм, я его когда-то тоже "мочил в сортире" в своих ранних комментах. И нет здесь никакой "необходимости перейти в C/C++" - задача достаточно просто решается на чистом Lua. А "многочисленные монструозные средства" есть прямое следствие вымирания программистов как класса. Да и надо же чем-то засрать чудовищные возможности по памяти и быстродействию, тысячекратно превышающие реальные потребности пользователей. И что ещё за зверь "отношение функциональности Lua к его компактности"? Язык есть полное говно буквально ПО ВСЕМ показателям.
Да хренли там "хорошо понимать"? Где-то через полчаса после знакомства с Lua я уже писал свой первый скрипт на нём. Хренли там "чётко представлять" эти несчастные "ассоциативные таблицы"? Это разве что для малограмотного Роберто Иерусалимского подобная конструкция требует какого-то "осмысления". А про "доступ по ключу" - вот цитата из моей книги: Совершенно неизбежным и страшным следствием отсутствия упорядоченности является также концепция ключа. Понятие идентификатора, «жульническим» образом изъятое из модели данных, принципиально не может быть убрано также из РСУБД: ведь даже для тривиального чтения значения ключа нужно получить доступ к кортежу каким-то иным способом. Как видим, избавиться от понятия идентификатора нельзя – можно лишь сделать вид, что его не существует при групповой обработке данных. К тому же, говорить о скорости доступа к данным при концепции поиска по ключу – насмешка над здравым смыслом.
Цитата
Код реализации Lua всего: ~400kb.
ВАХ-ВАХ-ВАХ! Одна из версий нашей шахматной шахматн программы была запихнута в "железо" под названием "щахматный электронный партнёр Дебют", которое представляло из себя процессор 8086 с частотой 4.7 МГц, 4К ОЗУ и 16К ПЗУ (это и на саму программу, и на дебютный справочник, и на некое подобие "операционки", которая бы реагировала на нажатия на поля шахматной доски и как-то индицировала свои ходы). Так вот, это убожество ОФИЦИАЛЬНО выполнило в одном из турниров норму КМС! Вот это и называется "всего".
Комментировать остальной словопомол про стеки, сопрограммы или реентерабельность мне лень. Резюме: Lua - один из самых убогих языков программирования, которые мне встречались в жизни. Тем не менее, реализовывать задачу торговли лучше всего на чистом Lua.
VPM, По-нормальному логические операции самые быстрые и самые надёжные (ассемблерные AND, OR, TEST), но, поскольку в Lua всё реализовано через жопу (я в своё время чуть в обморок не упал, когда увидел на этом месте ФУНКЦИЮ вроде bit.band), то хрен его знает - до ТАКОГО способны додуматься только клинически криворукие, и реализвция может быть ЛЮБОГО уровня тупости.
VPM, Давнее моё определение: "Интеллект - это такой алгоритм" А Каспарова обыграл "Глубокий Голубой". Полное дерьмо по софту, но с чудовищным быстродействием, которое на чемпионате мира среди компьютеров заняло лишь третье место, проиграв "Фрицу", который работал на 90 МГц пне.
Почему готовое решение не сделать? Я - сделал. Потратил на это несколько месяцев, но сделал. Мой скрипт меня устраивает полностью, что-либо менять в нём я не хочу.
VPM, Я дважды предлагал совместно обсудить "технические" утилиты, вплоть до открытых кодов - один раз сам, другой вместе с Борисом. Больше не хочу. У моего скрипта техника вылизана, а остальные идут лесом.
А что их гонять? Да чтобы хернёй не маялись на публичных площадках. Впервые этот термин появился, наверное, в шахматах, причём по поводу "Пионера" Ботвинника, который вообще не сыграл ни одной партии.
VPM, Корректна вот такая запись (из моего скрипта): if bit.band(s.flags,1)~=0 then -- если заявка активна...
Нкт, мой скрипт стремится к совершенству в торговле, а здесь всего лишь техническая составляющая.
Нет, это не зря - я уже несколько десятилетий гоняю ИИстов. Мой скрипт без единой капли ИИ тоже "без нас решение принимает", и помочь ему в этом мне уже нечем.
VPM, Это Вы описали мой скрипт. Впрочем, нет - мой куда лучше: 1) Написан на чистом lua (и я миллион раз открытым текстом говорил, что этого достаточно). 2) Никаких дополнительных внешних библиотек (да и из стандартной используются только три функции: OnTrade, getParamEx и sendTransaction). Нет, вру, намного больше: open, close, read, write, lines, load, getItem, getNumberOf, AddColumn, AllocTable, CreateWindow, DestroyTable, InsertRow, GetCell, SetCell, SetColor, SetTableNotificationCallback, SetWindowCaption, SetWindowPos, OnStop, bit.band, math.floor, message, find, sub, os.date, os.time, sleep. Но это всё смешно даже упоминать - тем более, что добрая половина всего этого для торговли нафиг не нужна - так, сервис для юзера, которому не лень посидеть за монитором. 3) Ни заявки, ни сделки, ни деньги, ни бумаги не теряются, за всем этим присматривает скрипт, и даже дамп состояния каждые 100 секунд на диск сбрасывает на всякий пожарный. 4) Ежу понятно, что "каждая заявка помнит, сколько она набрала, и сколько надо скидывать, а количество в заявке есть переменная величина" 5) Все необходимые стратегии реализованы, отлажены, работают, а всё "спредовое, трендовое, свинговое, сеточное и прочее дерьмо отправлено на помойку. А вот цена в заявке есть постоянная величина. 6) Минимизация рисков вообще главная задача скрипта.
Модульность присутствует в любой разработке любого нормального программиста, а всё, что можно настраивать пользователю вообще вынесено во внешний файл, что позволяет ВААПЩЕ не трогать тело скрипта,
Ну да, понятие "Искусственный Интеллект" уже настолько засрано, что любое говно уже можно смело называть ИИ.
Delv, Общее утверждение опровергается частным. Пример - в студию! Просто те, у кого это получилось, узнавали об этом ПОСЛЕ того как, а если не получалось, тем более молчали в тряпочку. А пределы моей стратегии настолько безграничны, что мне по гроб жизни хватит.
Цитата
на сделку (отправка заявки на биржу и получение ответа по транзакции) уходит куда больше. До 250 мс.
Оптимист! Если я правильно помню, мой личный рекорд по задержке 17 с половиной МИНУТ.
БорисД, Ну так и ты меня хорошо знаешь. И ты не совсем прав: форум этот иногда бывает очень даже полезным, но для программистов, особенно новичков. Он был очень полезен на начальном этапе и мне, поскольку редкий язык может похвастаться таким обилием подводных камней как Lua. И редкий программист доплывёт до середины скрипта без такой помощи. И ещё ДООООЛГО будет выявлять и выковыривать оттуда самые разнообразные глюки. Чуть не половина моих комментов в начале моего пребывания здесь писались с отвалившейся челюстью. А ты НЕ программист, и потому форум для тебя действительно бесполезен: сколько-нибудь серьёзных разговоров по поводу организации эффективной торговли здесь не поднималось никогда. А насчёт "взаимных склок". . Борь, я более 30 лет в Инете, здесь всегда была такая атмосфера. Точнее, она была намного приличнее, поскольку попасть в Инет тогда мог далеко не каждый, а теперь полезло всё подряд. Это у нас с тобой пару раз бывали "склоки", поскольку сталкивались мы лбами по серьёзным вопросам, а здесь так, развлекуха, отдых, и время на это почти не тратится. Я пришёл, ты пришёл, потрепались и разошлись. Кстати, мы с тобой познакомились именно на этом форуме, и лично я это расцениваю как несомненную пользу от него. А с Николзом у меня все споры закончились, по-моему, ещё до нашего знакомства.
Delv, А на кой? Какое нам дело, что нам ХОТЯТ показать? Пусть показывают, что хотят, а мы будем торговать так, как МЫ хотим.
Согласен, "статистические методы бессильны". Но зачем "выдумывать нечто"? Всё уже украдено до нас (с). Естественно, "человек не сможет адекватно и быстро анализировать сразу несколько потоков" - для того и скрипт. он никогда не устаёт, всегда внимателен, умеет быстро и точно считать, у него крепкие нервы - что ещё надо? А вот предсказывать движение курса пока что никому не удавалось за всё время существования биржи.
Delv, Да всё не так с нейросетями. Если уж сам разработчик не знает как надо торговать, то его поделие и подавно опозорится. Было тут несколько поклонников нейросетей - приходили с гнутыми пальцами и наполеоновскими планами, а потом тихо и бесследно исчезали. А в стакане можно увидеть.разве что то, что там ХОТЯТ показать. Рынок двигают сделки, а не суходроч в стакане.
БорисД, Свершилось чудо! Борис Павлович удостоил своим посещением этот форум! И тебе ли не знать, что здесь мы не воюем - здесь мы развлекаемся. Вот с тобой когда-то чуток повоевали. Впрочем, ведь и ты наверняка сюда заглянул именно за этим.
nikolz, Для тех, кто в танке: акции торгуются на фондовом рынке, а не на срочном. А там коды этих тикеров (для класса TQBR) такие: GAZP, SBER, SBERP. Ну, и какой толк от Вашего "счастья"?
Nikolay, Именно так. У меня в этом файле ещё и портфель, и кошелёк, и настройки разные - для каждого тикера, для каждой валюты и для рынка в целом. А формат у него текстовый, поскольку предназначен он не только для скрипта, но и для человека. Соответственно, нет никакого loadfile, а в начале main работает небольшой парсер. Кстати, там может быть и не так уж мало инструментов - когда я его тестировал, общее количество тикеров иногда превышало 20 тысяч.
Вадим Никитин, А в чём здесь Profit? Мне доводилось торговать одновременно фьючерсами и соответствующими акциями, но они всегда торговались независимо друг от друга, как совершенно разные тикеры. Так намного проще и, на мой взгляд, даже эффективнее. Даже фьючерсы на один и тот же инструмент, но с разным временем экспирации иногда торгуются одновременно: один потихоньку сворачивает свою деятельность, а второй "принимает эстафету" - даже они ничего не знают друг о друге. Зачем это всё?
Alexander, Да какая разница, что Вы с ними будете делать? Открываете ТТТ, вываливаете туда все инструменты и все столбцы, копипастите в файл и отрезаете всё ненужное. И мониторьте что хотите и торгуйте чем хотите. Мой скрипт так и делает: чем разрешено - торгует, остальное мониторит. В любой момент могу любой тикер закрыть или открыть для торговли, прямо в диалоге. Комиссия брокера и ГО меня не интересуют, а вот число дней до экспирации у мегя выводится и даже подкрашивается всё сильнее по мере приближения к ней. И никакого "отдельного скрипта" для этого не нужно - он и сам в состоянии "ткнуть когда увидел, что что-то устравивает и купил/продал". То есть не вижу проблемы от слова "совсем".
А вот что "скриптов много" - это плохо. Сделать-то, мож, и быстрее, а вот СОПРОВОЖДАТЬ... Лично у меня только один скрипт, и увеличение этого числа не планируется. И насчёт "кодов немного" спорный вопрос: для человека уже пара десятков тикеров почти неподъёмная задача. А в реальности их десятки тысяч.
Alexander, На кой Вам getParamEx? Список бумаг, которыми ИМЕННО Я собираюсь торговать, не знает никто, кроме меня. ИМЕННО Я и определяю этот список, корректирую при необходимости. Мало ли что там мне подсунут любые утилиты! Может, мне просто не по карману торговать всем тем, что там будет получено в sec_list. Этот список меняется крайне редко, и проще всего, быстрее всего, надёжнее всего делать это "ручками", не прибегая к программированию вообще. А уж "для каждого варианта надо указать шаблон" - это вообще безумие какое-то, не говоря уже про "придётся менять код". А что, в отдельном файле этого сделать нельзя? Вот прям ща у меня там стоит AFU3, GZU3 и т.д. Придёт время - поменяю "U3" на... что там следующее идёт. Это делается за считанные секунды, и совершенно плевать, что там Мосбиржа по этому поводу думает.