kvazar
kvazar личный блог
19 мая 2020, 17:50

Нужен опытнейший программист (C#, MS SQL, VBA)

Интересуют консультации платные по договоренности и ответы на разные вопросы. Если алготрейдер, еще лучше.
Например, скорость работы различных БД, оптимизация запросов, индексация, тонкости работы с Квиком. 
Кодить не потребуется, я сам (может немного с помощью). Общение Skype.

125 Комментариев
  • GOLD
    19 мая 2020, 18:23
    Если не секрет… за каким лешим вам понадобился такой зверь?
      • 3Qu
        19 мая 2020, 22:41
        kvazar, Sqlite вам в помощь вместо Access. Оч быстрая и компактная БД при определенных настройках pragma. Хотя, объемы транзакций надо знать, чтобы сказать что-то определенное.
        А с компом у вас и так все ОК.
        Определенно написать на С#/VB, а часть на С++.
          • 3Qu
            19 мая 2020, 23:48
            kvazar, экспорт данных из терминала, в БД, в том числе. В том числе из Квик через Луа. Ну, или по ODBC. Эт как хочется, но не все хотелки возможны через ODBC.
        • Антон Б
          20 мая 2020, 19:36
          3Qu, Выгоднее просто добавить памяти.
          до 16gb.
          Одно это добавит скорости.
          И что удивительно и неожиданно, надежности.
          (своп до сих пор, несмотря на 25 лет использования в ос подглючивает)

          опять-же на квик 64 бит переходит.

          • 3Qu
            20 мая 2020, 21:00
            Антон Б, если памяти  итак хватает, на фига ее добавлять. А 8 ГБ и так за все про все хватит.
            У меня вот всего 4 ГБ (несчастный случай, сдох комп, и срочно на Авито купил новый-ненадеванный, других не было, а через неделю появился — локти кусал) — и то на все хватает. Квик подтормаживает, но здесь не в памяти дело, ее еще 20% остается, и проц не загружен.
            Квик х64.
              • Антон Б
                20 мая 2020, 21:15
                kvazar, Собственно видно что не хватает.
              • 3Qu
                20 мая 2020, 21:17
                kvazar, см. ниже принт скрин 4 ГБ. Уж не знаю, что вы там делаете. У меня тоже много чего крутит. Еще Питон сейчас не запущен.



                • Антон Б
                  20 мая 2020, 21:20
                  3Qu, Это все очень грустно что у вас 4 гб на квике. и бу комп. где нужна надежность реально.

                  а через стенку, в другой квартире, у 12 летнего гейсера 32 гига чтобы было.

                  И что у вас нет запасного терминала в виде дешевого ноута тоже очень грустно.

                  А еще это значит что ни о каких бд промышленно используемых вы в реале не видели.

                  Потому что железо сейчас очень дешевое.
                  А квалификация хорошо оплачивается. даже в рф.
                  • 3Qu
                    20 мая 2020, 21:24
                    Антон Б, нормально, потом куплю. Руки ( и ноги) не доходят.))
                    С Квик вообще все интересно, свободная память есть, процессор свободен, а Квик подвисает. Че-то в нем не так.
                    И воще, я IT специалист, а сапожнику положено без сапог.)
                    • Антон Б
                      20 мая 2020, 21:27
                      3Qu, Свободная память которую показывает диспетчер.
                      Это такое.
                      Он может свопить и показывать свободную память.
                      + то-же dde
                      Работает в ТОМ ЖЕ потоке.
                      И если стучится в dde сервер, в виде excel, пока тот из свапа выползет фрезится.

                      А по памяти это не видно навскидку.
                      • 3Qu
                        20 мая 2020, 21:57
                        Антон Б, а вообще, Квик перед запуском чистить надо, и ему резко лучшает. В одном из своих топиков показывал cmd-шку.
                        • Антон Б
                          20 мая 2020, 22:04
                          3Qu, Как это отрицает то что я написал до этого?
                          Ок надо, )
                          • 3Qu
                            20 мая 2020, 22:08
                            Антон Б, я ничего не отрицаю.)
                            А вообще б/у покупать хорошо. Кому-то дарят на ДР, он на Авито продает ненужное новье с гарантией в 2 раза дешевле.
                    • Антон Б
                      20 мая 2020, 21:33
                      3Qu, как Вы разрабатываете на этом железе?

                      Памяти нужно на разработку как минимум 16gb
                      Тем более что это дешево. 100$ 16gb

                      • 3Qu
                        20 мая 2020, 21:40
                        Антон Б, да, куплю, не переживайте, руки не доходят, и ноги тоже. Пока вроде хватает — Питон идет, VC идет.
                        А вот память не апгрейдится, впаяна в сис. плату.
                        А Васька слушает, да ест. Тем временем моя сделка на стрэнглах РТС вверх ползет.)) Пустячок, а приятно.
            • Антон Б
              20 мая 2020, 21:12
              3Qu, Ниже скриншот там 92% загрузка по памяти.
              Он на этом компьютере не только стратегию крутит.
              но и использует его как рабочую станцию.
              Так что 8gb ему мало, это видно по скриншоту.

              Самое дешевое и надежное добить памяти до 16 gb.
              Как минимум.
              Все станет надежнее.
              Даже квик с dde.
              И акцесс весь кеш переселит в память и вообще не будет читать диск.
              Только писать.
              По факту просто добив памяти получаешь надежность и отзывчивость.
              Очень дешево.
              + открывает путь к безопасности и надежности через виртуализацию.

              ( Когда бот работает в виртуалке в отдельной чисто системе)
              Которую можно снешшопить.
              При обновлении квика.
              И если что пойдет не так, обратно восстанавливать.

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

              • 3Qu
                20 мая 2020, 21:20
                Антон Б, в общем, да. 16 ГБ по любому не помешают.
            • Антон Б
              20 мая 2020, 21:17
              3Qu, Это все очень грустно что у вас 4 гб на квике. и бу комп. где нужна надежность реально.

              а через стенку, в другой квартире, у 12 летнего гейсера 32 гига чтобы было.

              И что у вас нет запасного терминала в виде дешевого ноута тоже очень грустно.
  • Silent Hamster
    19 мая 2020, 18:42
    Пацан собрался тест проходить на Крем долину, а репетиторов ноль.
  • FinSerfing
    19 мая 2020, 18:44

    Опытнейший программист не станет консультировать так абстрактно.

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

    Можно и на C++ так наговнокодить, что VBA окажется быстрее.

    Разбирать нужно что-то конкретное.

    Иначе в этом нет почти никакого смысла.

      • FinSerfing
        19 мая 2020, 19:19

        kvazar, базы данных — это не к программисту.

        Это к DBA(DataBase Administrator).

        При этом достаточно базовых знаний, которые есть в массе книг.

        Разделение на нормальные формы, создание правильных индексов, работа с SQL Query Analyzer.

        Но самое занятное, что во многих случаях базы данных просто не нужны.

        Либо нужны но в гораздо меньших объёмах.

        Не редко их используют не по назначению.

        Самый первый вопрос: «Что вы храните в базе данных ?»

          • FinSerfing
            19 мая 2020, 19:26

            kvazar, хорошо.

            Основной объём и проблемы дают тики.

            Идём дальше.

            За какой период хранится тиковая история и по какому количеству инструментов?

            Зачем вам вообще тиковая история и можно ли обойтись бОльшим фреймом или меньшим объёмом тиков ?

              • FinSerfing
                19 мая 2020, 19:32
                kvazar, какая максимальная глубина тиков необходима для перерасчёта?
                  • FinSerfing
                    19 мая 2020, 19:36
                    kvazar, т.е. дальше 60 минут тиков не нужно?
                      • FinSerfing
                        19 мая 2020, 19:52

                        kvazar, возьмём фьючерс на индекс РТС(RIM0).

                        За первый час пролетело 44308 сделок.

                        Это совершенно не много.

                        При учёте того, что время от времени очищать старые данные.

                        MSSQL достаточно просто потянет данную задачу.

                        Если нужна супер скорость, то можно создать in-memory-table.

                        Скажу больше, подобный объём можно хранить и обрабатывать внутри программы.

                        Хоть в массивах, хоть в хеш-таблицах.

                         

                        Данные в access поставляются через ODBC ?

                        Сколько оперативки на компе ?

                        Какой процессор ?

                          • FinSerfing
                            19 мая 2020, 20:04

                            kvazar, горячие/актуальные данные правильнее кешировать.

                            Т.е. хранить внутри программы.

                            Либо где-то в оперативной памяти.

                            По ним вести расчёты и не совершать избыточную работу.

                            Записывая и читая по 100 раз из базы(ибо это дисковые операции).

                             

                            Время от времени скидывать пачками(bulk insert) данные в базу(если оно вообще нужно).

                            Можно поизвращаться с in-memory-table.

                            https://docs.microsoft.com/ru-ru/sql/relational-databases/in-memory-oltp/introduction-to-memory-optimized-tables?view=sql-server-ver15

                            Но простое решение всегда лучше, надёжнее, стабильнее и быстрее.

                              • FinSerfing
                                19 мая 2020, 20:12

                                kvazar, через LUA или DDE из таблицы всех сделок.

                                Первый вариант особо не щупал.

                                Со вторым работаю давно.

                                  • FinSerfing
                                    19 мая 2020, 21:16

                                    kvazar, это 2 разные технологии с отличными целями.

                                    DDE — старый протокол для обмена данными.

                                    ODBC — интерфейс для работы с базами данных.

                                    С DDE я могу напрямую работать из C#, получая сырые данные прямо из Квика.

                                    И решая что с ними делать дальше.

                                    Писать в базу, хранить в памяти или выбрасывать.

                                    ODBC подобной прямой возможности не имеет.

                                      • FinSerfing
                                        20 мая 2020, 07:57

                                        kvazar, C# — это норм.

                                        Со Stock# связываться категорически не рекомендую.

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

                                        Например отправка заявок через файлы или trans2quik.dll

                                        Но всё равно это будет непросто.

                                        Ибо написать программу и написать её хорошо — это 2 бооольшие разницы.

                                        Каждый должен заниматься своим делом.

                                        Трейдер торговать и генерировать идеи, а программист программировать.

                                        Иначе на рынке не победить.

                                          • FinSerfing
                                            20 мая 2020, 12:44

                                            kvazar, чтобы иметь степени свободы нужно как можно меньше использовать сторонние библиотеки типа Stock#.

                                            Но подобный подход требует значительно больше времени и опыта.

                                            Для новичка это почти нереально.

                                            В общем пробуйте.

                                            Это полезно.

                                            Если что, обращайтесь.

                                              • FinSerfing
                                                20 мая 2020, 12:56

                                                kvazar, если вам не к спеху, то подстрагаю и дам на пробу программу, которая получает данные по DDE из таблицы всех сделок, сворачивает их в нужный фрейм и выводит бары в Excel.

                                                Запустите на десятке ликвидных инструментов и оцените загрузку процессора/памяти(за вычетом экселя).

                                                Если устроит, то на основе этих библиотек можно будет соорудить то, что нужно именно вам.

                                                 

                                                Свободное время появится к концу этой — началу следующей недели.

                                                Работы там не сильно много.

                              • GrayFox
                                20 мая 2020, 08:34
                                kvazar, хорошо написано!
                      • tranquility
                        20 мая 2020, 00:21
                        kvazar, а можно 60-минутными частями записывать, а потом в конце дня все их объединять (для архива и бектеста последующего, например)?
                          • tranquility
                            20 мая 2020, 08:45
                            kvazar, значит надо из своего кода производить запись потиково в БД. Как заполняется час — подставлять другую таблицу, а прежнюю на диск, сливать отдельным потоком… Вроде народ через коннекторы C# кучу инструментов за раз мониторит (арбитражеры, например) и соединение у них не лопается). Кстати, когда сами писать в БД будете, там какой-нибудь порожняк выкинуть можно будет, вроде номера сделки (если так надо, то хотя бы можно базовое значение отнять, а сохранять только int32), время из текстового вида в численный перевести — поток данных ужмется в разы.
                              • tranquility
                                20 мая 2020, 09:09
                                kvazar, А, я все же подразумевал что все данные у Вас в ОЗУ будут за необходимый промежуток времени, а БД нужна только для последующего бектестирования. Но если так надо чтобы данные в БД были, можно писать какое-то время в старую таблицу еще час и в новую. Тогда будут куски по 120 минут, каждый последующий повторяет половину предыдущего. Данные брать из старой продолжать пока час новой не наберется, тогда только сохранять старую, делов-то ;) Ну, и если сами писать будете, то следует ожидать какого-то ужатия данных. Может, как раз в те же 2Гб и уложитесь. Я подозреваю, что в бд все в текстовом виде поступает, а это значит, что еще стоит кроме ужатия и прироста скорости ожидать, если все перевести в численный. Ведь чтобы найти нужное время, СУБД не надо будет индекс производить, просто достаточно логарифмический поиск по упорядоченному массиву выполнить.
                                  • tranquility
                                    20 мая 2020, 09:27
                                    kvazar, ну, тогда внахлест сбрасывайте каждые 2 часа, раза в 4 разгрузите память ОЗУ. Но вот только надо разобраться с коннектором и как самому в базу писать. Я правильно подозреваю что в БД все в текстовом виде сохраняется, время, и может даже — цена? Если так, то перегоняя каждый тик при поступлении в численный вид — сильно объем данных ужмется.
                                      • tranquility
                                        20 мая 2020, 09:50
                                        kvazar, ну и вот со временем тем же, вот сколько байт это занимает в одном тике?

                                        9 * sizeof( float64 ) = 72 байта, когда это все можно хранить в 8ми?? 4 на кол-во секунд с «начала эпохи» и по 2 на милли- и микро- секунды? Микро, подозреваю, можно отбростить, тогда 6… Память, правда, скорее всего выделяется порциями не меньше 4 байт (выравнивание, так называемое), поэтому особо микросекунды отбрасывать не имеет смысла.

                                          • tranquility
                                            20 мая 2020, 10:00
                                            kvazar, миллисекунды не сохраняются, что ли? А если бы они Вам нужны были…
                                  • tranquility
                                    20 мая 2020, 09:38

                                    kvazar, ну, уже хорошо, хотя, время можно вполне себе в int32 перевести, по сравнению с текстом — ужатие существенное. Ну и посмотрите на структуру обезличенной сделки:




                                    Вам и вправду все эти данные нужны??

                                      • tranquility
                                        20 мая 2020, 09:56
                                        kvazar, а, ну хорошо что можно настроить какие поля писать в БД, иначе перебор, однозначно был бы.
                  • kachanov
                    19 мая 2020, 19:41

                    kvazar, под «обсчитываем» что понимается?
                    тики за 60 мин это маленькая база, чтобы хоть как-то напрячь SQL сервер

    • FinSerfing
      19 мая 2020, 19:33

      kvazar, экстенсивный путь не является умным решением.

      Это действие в лоб. 

  • kachanov
    19 мая 2020, 19:33
    На мой взгляд, если SQL запросы в Access писали ручками, а не через их кривой мастер, то для простых приложений MS SQL явного прироста производительности не принесет.

      • kachanov
        19 мая 2020, 19:44
        kvazar, так спросите тут.
        Возможно, забесплатно советов наслушаетесь на годы работы вперед ))
          • kachanov
            19 мая 2020, 22:11

            kvazar, у меня опыт не впечатляющий, но без совета не оставлю )))
            На мой взгляд прямого выигрыша не будет. Не те задачи.
            Сами запросы SQL перенести легко, базовые конструкции везде одинаковы.
            MS SQL я использовал с SQL Server Management Studio. Мощная штука, особенно на этапе изучения и повышения навыков в SQL.
            Имеет смысл поставить и протестировать там то, что используется.
            Как минимум, можно повысить скилл написания самих запросов, что в Access сделать сложно. 
            А вот это уже приведет к итоговому улучшению.
            С индексами только эксперименты, просто потому что база маленькая.

              • kachanov
                20 мая 2020, 12:03
                kvazar, согласен. Просто и удобно.
                SQL там нормальный, это скорее в MS SQL расширенный, причем большая часть этих расширений нужна только для сложных задач
                Там мастер кривой. Я когда запросы из MS SQL переносил в access, он ряд запросов даже отобразить не мог, хотя выполнял их прекрасно.
                Я почему и говорю, что имеет смысл поработать именно над запросами и, возможно будет достаточно их просто перенести потом в access, не устраивая кардинальных переделок

                Вы сделали, очень интересное и изящное решение для робота. Никаких танцев с бубнами над коннекторами и прочей обвеской. 
                  • kachanov
                    20 мая 2020, 12:13
                    kvazar, именно так. Из sql в access
                    Там история длинная, зачем это понадобилось, но такой опыт был
                    Наоборот естественно тоже переносил ))
                    • kachanov
                      20 мая 2020, 12:15
                      kachanov, именно поэтому я говорю, что писать добротные запросы проще научится в SQL Server Management Studio. 
                      А где их использовать другой вопрос
          • kachanov
            19 мая 2020, 22:12
            kvazar, кстати, а заявки Вы как отправляете в квик?
    • Антон Б
      20 мая 2020, 19:41
      kvazar, Добей ОЗУ до 16gb.Минимум.


      Самый быстрый и надежный результат.
      sql будет все хранить в памяти сам если будет видеть что озу много.
  • Ынвестор
    19 мая 2020, 20:33
    У меня старый запорожец. В принципе я знаю где и что у него отваливается. Стоит ли мне пересаживаться на новую современную машину?
    Access это чуть лучше чем Excel. Любая нормальная СУБД будет намного лучше. Сервер с 32ГБ в аренду можно взять за 40 евров в месяц.

    • FinSerfing
      19 мая 2020, 20:42

      Ынвестор, если вы хотите ехать комфортнее, быстрее и не убиться от лёгкого удара об столб, то пересаживаться на современную машину стоит.

      Для задач данного топика никаких 32 гигов оперативы не требуется.

      • Ынвестор
        19 мая 2020, 20:50
        FinSerfing, если нужна скорость то ничего другого кроме как хранить в оперативке не придумали еще. Ну если вся база это 8ГБ то это вообще смешно. Хотя для accessa и это вызов
      • Антон Б
        20 мая 2020, 19:43
        FinSerfing, Ему требуется совет на ВЫРОСТ.
        Совет добавь озу до 16 gb самый простой и рабочий.
        А еще надежный и дешевый.
        И не отменяет следующих шагов
    • kachanov
      19 мая 2020, 20:47
      Ынвестор, в данном случае корректней сравнение автомобиля и прогулки пешком/ на велосипеде.
      Машина хорошо, но для похода в соседнюю булочную она необязательна. )))

    • tranquility
      19 мая 2020, 21:59
      kvazar, думаю, если бы Вы хранили историю в .qsh файлах, при этом держа в памяти только те данные, к которым производится обращение, то ресурсов Вашего компа было бы все еще достаточно. Интересно вообще, а зачем нужна тут СУБД? Там же в любом случае не должно быть каких-то суперхитрых запросов, а функцию логарифмического поиска и самому реализовать несложно, на любом языке программирования…
        • tranquility
          20 мая 2020, 00:12
          kvazar, ну, хотя бы переход на SQL будет каким-то поводом встряхнуть мозгами) Я вообще СУБД никогда не пользовался, разве что когда-то немного с примерами SQLite игрался. Поэтому и спросил в чем там профит от использования СУБД, вдруг лично мне как раз этого не хватает чтобы откопать свой персональный грааль))
          А так, классы C# для работы с qsh вроде ведь доступны, просто бери и используй (не то что некоторым заново на С++ все это реализовывать надо было). День торгов по РИ вместе со всем ордерлогом там вмещается в ~10Мб, а если в текст распаковать — то больше 1 Гб может получиться. Мало ли, вдруг заинтригует. В конце концов, можно тики хранить в .qsh, а сами файлы (либо ссылки на них, относительные пути) уже в БД записывать. Вполне себе функциональная вещь должна получиться))
            • tranquility
              20 мая 2020, 09:22
              kvazar, есть только то, что касается qsh и на С++. С# мне не нужен, но я видел на сайте кускальпа библиотеку классов C# для работы с qsh. Этого должно быть достаточно для нуждающегося.
        • tranquility
          20 мая 2020, 00:19
          kvazar, может, я проблему саму техническую не понял? Т.е. инструментов так много, что тиковая история в ОЗУ не вмещается, если ее целиком там хранить весь день и поэтому ее надо сразу практически скидывать в ОЗУ на диск? Звучит как-то странно, тиков по одному инструменту ну тысяч 200, каждый, скажем, байт 100 (на самом деле — меньше) занимает — это всего 20 Мб. 8Гб на сотню-другую таких инструментов должно хватать…
            • GrayFox
              20 мая 2020, 08:42
              kvazar, если не чистый HFT — то не обязательно в памяти хранить… твердотельные вполне обеспечивают скорость записи/считывания ..


            • tranquility
              20 мая 2020, 09:18
              kvazar, так «хранение этого где-то в памяти» подразумевает только лишь создание объекта массива структур (объектов с полями: время, цена, объем, номер сделки, и т.п.). Обычная работа с массивами (ну, векторами по С++шному). Там реально ничего сложного. С# как и С++ позволит Вам создать хоть миллирардной длины массив (вектор) — лишь бы памяти хватало, и все будет стабильно работать.
  • day0markets.ru
    20 мая 2020, 07:05

    Проблема не в базе, а в архитектуре. данные надо держать в памяти и дампить в базу с некоторой переодичностью в отдельном потоке. из базы данные брать только при первичной загрузке и при перезапуске, например, после обрыва связи. вытаскивать данные раз в 5 секунд с базы за последний час… ну такое.я, конечно, не знаю всех входящих условий, но я бы пересмотрел логику работы с котировками, а не оптимизировал бы базу.

    • GrayFox
      20 мая 2020, 08:43
      kvazar, а не через скайп?
        • GrayFox
          20 мая 2020, 08:50
          kvazar, любой иной мессенджер… а может и просто гуглдиск или прочее, может платформы типа зум… да дофига способов…

            • GrayFox
              20 мая 2020, 08:58
              kvazar, так почему тогда СКАЙП? мерзакаяя майкрософтская приоьретёнка, если такие глобальные задачи? и с какого фига до сих пор Акцесс фигурирует в написаниии????

                • GrayFox
                  20 мая 2020, 09:01
                  kvazar, да ниже написал… потому что в самом посте ничего не написано… в первых же ответах нафталин.
  • GrayFox
    20 мая 2020, 09:00
     Давайте ещё будем строить всё в Кью-Бейзе и прочих… АКЦЕСС!!! Реально??????? ЭТО РЕАЛЬНО СТРОИТЬ РОБОТА ЧЕРЕЗ АКЦЕССС????
    ЕО ВООБЩЕ ГДЕ-ТО ДО СИХ ПОР ПОЛЬЗУЮТ?
    Я пользовал его до развития 1С чтобы создавать свои базы на предприятии ...
    Закончилось это примерно в 2001-2003 году… а тут робот через акцесс… ЖЕСТЬ ПОЛНАЯ!!!
  • yurikon
    20 мая 2020, 09:31
    kvazar, если переписывать робота, то вам однозначно надо уходить от постоянного запроса тиков из базы. Это неправильно, хотя понятное решение с минимум ошибок. MS SQL Server очень прожорлив к памяти, хотя его и можно настроить.
    Берете с гитхаба библиотеку луашарп — тики у вас уже есть. Дальше делаете подписку роботов на событие OnTrade ( FinSerfing может помочь). Да, это сложнее.

    Все тики собираете в базу также через ODBC в SQLite/MS SQL, и при старте робота запрашиваете нужную глубину. Готово. ))

    Кстати, активные запросы знатно убивают SSD диски.
      • yurikon
        20 мая 2020, 09:54
        kvazar, можете поставить ms sql express — бесплатный релиз, там ограничение на ядра и ОЗУ есть. И поставить MsManager MS SQL — оттуда можно делать запросы и смотреть скорость исполнения. MS SQL будет конечно шустрее.
        Еще можно сделать трюк, чтобы лишний раз не драконить базу. Таблицу с тикером и флагом апдейт. Если пришел новый тик, то тригером выставляем флаг ему. А уже из проги сначала проверяем флаг, если он тру, то уже дергаем серию тиков. Удачи!
          • yurikon
            20 мая 2020, 10:58
            kvazar, если только РИ/СИ, то можно и не усложнять. Индекс по tradeid+datetime сделать и так норм работать будет.
  • Cristopher Robin
    20 мая 2020, 10:29
    Наверное самый грамотный подход вы выбрали. Удачи вам.
  • _sg_
    20 мая 2020, 16:26
    Правильно Вам все пишут.
    1. БД — только для хранения данных и загрузки данных в начале работы робота с утра или после сбоя. Использовать БД для быстрого оперативного анализа — неправильно.
    2. Весь анализ необходимо производить в ОЗУ — быстро и безопасно.
    Если нужно очень быстро обрабатывать, то используйте многопоточность.
    Можно, например, разделить на потоки обработку по разным инструментам и стратегиям.

    В любом случае Вы рано или поздно в процессе развития своей системы придете к такой архитектуре:
    Прием данных в Память, а дальше Анализ, Принятие решений, Прием и отправка ордеров и сделок, Запись данных в БД для истории итд — Все это в отдельных потоках.
    И чем раньше Вы это сделаете, тем лучше.

    Желаю успехов.
      • _sg_
        20 мая 2020, 17:25
        kvazar,
        Правильно поняли.
        1. У Вас уже есть то, что работает сейчас — это здорово.
        2. Вы понимаете, что то что есть сейчас, развивать все сложнее и сложнее — это тоже хорошо (то что Вы это понимаете).
        3. Необходимо смело сделать соответствующие выводы —
        Использовать то что есть сейчас, и постепенно переходить к другим более перспективным технологиям.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн