Всем, приветы! Удачи и профита!
На старости лет, решил упростить себе жизнь на бирже с помощью скриптов на QLUA под QUIK. Пока скрипты были простые — все шло хорошо.
Однако, все течёт, все меняется и простыми скриптами зарабатывать как раньше не получается.
Попробовал реализовать торговую идею чуть посложнее и не смог довести дело до конца потому, что запутался в алгоритме работы программы.
То есть, пока алгоритм помещался в голове — все было славно, но как только скрипт начал превращаться в программу из нескольких модулей — начались проблемы. То забуду для чего писал какой-то кусок кода, то утону в дебрях оптимизации...
Попробовал начертить на бумажке блок-схему работы программы, но когда вышел за пределы формата А1 — понял, что этот путь мне не годится. Понимаю, что я морально устарел и, возможно существуют другие подходы к алгоритмизации решения задачек.
Дорогие Смартлабовцы, с удовольствием приму ваши советы по этой проблеме и прочту изложение вашего собственного опыта.
Есть ли какие-то программы (желательно бесплатные) для составления и формализации алгоритмов? Или вы просто прописываете в форме текстового изложения план работы программы? Или другие варианты?
Короче, кто добрый — поможите чайнику разобраться.
В буквальном смысле пробовал чертить — утомительно до невозможности, вот и подумалось, может программы специальные есть для этого дела? Типа, как Microsoft Excel для таблиц.
Да, уж… Тама слишком по-взрослому :)
Спасибо! Обязательно попробую.
Даже не ожидал, что столько добрых людей откликнется на мою просьбу, поэтому, Ваш вариант не единственный. Буду по ленте комментариев учебный план для себя составлять
При слове процедура — в памяти всплывает мсье Паскаль.
С этим проблем нет. Но у функций есть параметры. Да и самих функций свыше сотни.
Все не так примитивно. Поэтому, запутался.
Вот запустили Вы свою функцию для входа в позицию. В этот момент оборвался Интернет, потом, глюкнул сервер брокера, а потом — вырубили свет, аккумулятор сел.
Свет включили. Программа должна восстановить себя сама. Каков простенький модулечек получицца?
Спасибо. Думаю, что для меня — это слишком тяжелая артиллерия :)
Ну, я рисовал в Автокаде, он несколько ближе мне, чем Visio. Нет, это не очень мне понравилось. Тут, уже подсказали забавные приложения и пакеты для моих целей — буду заниматься
вот поэтому я и пользую тслаб и все делаю из стандартных кубиков — чтоб ограничить полет буйной фантазии
вообще годный алгоритм записывается крупным текстом на половинке спичечного коробка
Спасибо за Ваше мнение.
Если я правильно понимаю, то ТСЛАБ — это платные кубики с весьма ограниченными возможностями, как мне кажется…
Но понять её сложно, т.к. все детали никто не раскрывает.
А вообще, на Ваш взгляд, ТСЛАБ стоит того, чтобы тратить время на изучение его возможностей?
в тслабе самый низкий порог входа в алго
там навороченно овердокуя всего...
просто доку прочти…
А по денежкам во сколько обходится этот ТСЛАБ? Они за каждый алгоритм отдельную плату берут, или в форме абонентки на все?
В любом случае, спасибо Вам за мнение и информацию.
pessimist, на кубиках прогнать простые идеи и осмотреть результаты, наверное проще пока не придумали для неподготовленного человека. Я им очень часто пользовался для теста, даже писал на их форуме и даже что то выкладывал из своих кубиков. Пока мои идеи не спустились глубоко внутрь секунды.
ТСЛАб очень долго не поддерживал котиры с миллисеками и тем более с наносеками. Может уже сделали.
Ну, наносеки — это уже Plaza плюс еще денег на выделенные сервера, наверное… А в каком году Ваши идеи спустились внутрь секунды?
Конкретно проверить в тслаб внутри секи я пытался и в 2017 и в 2018, забывая, что не умеет. Потом бросил. На самом деле, мало кто умеет так тестить. А кто более умеет хотя бы микросеки, тот делает это очень тяжело.
А не подскажите, если я ему подкину тики с временем до микросек или наносек, он схватит это время? Раньше нет. Если я накину два инструмента с микросеками и построю между ними спред, он построит его криво, так как их засинхронит только на уровне секунд, не микросекунд
там проблема в том, что нет у тебя никаких микросекунд ... задержки в 1000 раз больше = пинг 10000мксек + задержка данных 2000 как минимум+ время выставления заявок 25000мксек
кроме того стакан могут двигать без сделок… т.е стакан сместился а цены ты не увидишь
и 1000 руб в месяц с ограничениями на объем...
но там легко обходится — просто пускаешь кучу ботов
Спасибо. А как ТСЛАБ с системами брокера коннектится?
pessimist, абонентка, насколько мне известно.
Ну да и какое им дело- у Вас рой алегоритмов заявки на покупку/продажу генерят или один.
была бы «за алгоритм» прятали бы трейдеры в одной функции проверки по каждому из них
Не люблю пассивы. Спасибо за информацию, для меня это важно.
Честно говоря, я так и не понял, каким образом ТСЛАБ взаимодействует с брокером и биржей. Брокер тупо предоставляет QUIK и ЛК. Под ЛК api у брокера нет.
Спасибо!
А кто-нибудь с ВТБ ТСЛАБ пробовал использовать?
А у Вас опыт то куда приличней в этом. Скорее всего какие то вещи можно будет делать куда быстрей, но с меньшей гибкостью в плане каких то нестандартных вещей.
У меня был такой опыт. Когда нужно было СМС-ку с телефона прочитать — я запускал из QLUA кусок кода написанный товарищем на Пайтоне.
Ну, и когда нужно было что-то в Интернете просерфить — тоже Пайтон запускал.
Так и есть. Но, симбиозы возможны.
Рад что мои мои идеи сходны с идеями гуру рынка.
Я бы пошептался с вами, да уровни разные.
Это как студент с академиком.
Спасибо — прикольная штуковина, похоже, смогу разобрацца научным методом профессора Тыка.
Вот спасибо! Даже не слышал о таком продукте.
смотрел амиброкер
там можно человечьим текстом писать что нужно делать, а на выходе будет готовый код на си
Ну, пока я не готов си изучать. Потратил много времени на Lua. Даже книжку купил. Но, так как книжку писал сам автор языка — я понимать написанное стал только с пятого прочтения и то, только половину материала воспринял.
В общем, спасибо! Любой опыт и мнение в этот момент мне важны и интересны.
Для этого и программы не нужны, не так ли?
Бывали на рынке времена, когда алгоритм «Купи и держи» превращался в алгоритм «Купил — так держись!». Поэтому, я и лезу путацца
Дык, это понятно Вопрос, что делать в случае, если не терпицца ?
Кошки и обидецца могут… Все яйцы расцарапають…
Дык, когда этот отдельный купидержательный счет худеет всего процентов на 30 (ниже не просаживался пока, с 2009 года в рынке) — настроение портицца так, что хочется выйтить из активов. Терпеть — нервную систему портить, а выходить — фиксировать убытки.
В общем, в 2017 году я перековался в спекулянты
Не является инвестиционной рекомендацией
По-моему, Вы усложняете. Драйвер какой-то… Вашей программе не должно быть до этого дела. Нельзя объять необъятное.
Разносите по разным уровням архитектуры. Получатся изолированные части, работающие через интерфейсы. Lua, конечно, не самый выразительный язык. Осознанно называйте объекты, пишите комментарии. Если код не понятен — переписывайте пока не станет понятным.
Я не видел, чтобы кто-то успешно применял визуальные модели. Обычно, сложность нарастает и всё быстро превращается в кашу.
Вот-вот, нахлебавшись каши и решил написать сей пост с вопросами к сообществу.
Я вообще, никогда не видел как работают программисты…
pessimist, программисты пишут черные ящики. Написал, работает — забыл. Если потом находят баг — разбираешься заново. Отсюда вывод: писать надо так, чтобы можно было разобраться.
Ну напишите комментарий что оно делает, если по коду непонятно. =)
Преждевременная оптимизация — зло. Оптимизируется готовый продукт по запросу от заказчика. Через профилировщик определяются узкие места, потом решается что с ними делать.
Ну, это уже профессиональный подход. Я — всего лишь, дилетант самоучка.
Комментарии пишу, но писать лаконично и внятно — это тоже навык, который у меня прихрамывает
pessimist, так и работают.
абстракция, декомпозиция, модифицируемость программ в приоритете.
Чем большей и сложней программа тем это важней.
Разбили на части (то бишь декомпозицию сделали). В простейшем случае на функции/процедуры. Сложней вариант- на библиотеки под программ (модули), более модный- классы (объекты). но это при разработке больших программ нужно.
сделали эти части по возможности более универсальными. то что можно не задавать константой-не задаете а выносите как параметры процедуры или свойства свойства класса.
Здесь надо разделять техническую составляющую работы скрипта и алгоритмы принятия торговых решений. В общем случае, техническая часть пишется один раз (условно), т.к. методики контроля, выполнения торговых действий однотипные. Поэтому ее расписывать особо не надо каждый раз. А вот торговые алгоритмы — да, надо нарисовать. Хотя проще написать.
Сложнее всего когда этот алгоритм не твой, а тебе его надо реализовать. Сложность при этом не в нем самом (обычно все однотипно и не сложно), а в согласовании терминов. Понять что имеется ввиду — отдельная задача.
Спасибо за ценную мысль… Именно огромная часть проверок состояний времени, наличия связи, адекватности параметров возвращаемых функциями — запутала меня окончательно.
То есть, написать просто словами в форме изложения, я правильно понял?
pessimist, Техническая часть сложная, но она не имеет отношения к алгоритму, т.к. одинаково необходимо отследить выполнение задачи, поданной командой через интерфейс, так и алгоритмически. Принять решения о дальнейших действиях, при ошибках.
Эта часть требует формализации, да. При этом, мое мнение, что самое сложное — это написать для себя что может быть, а не расположить это в виде блок схемы. А то часто сталкиваюсь с мнением, что все должно быть идеально, а то что у нас клиент-серверная архитектура с кешированием на клиенте — уже не важно. А это как раз самое важное.
Вот, это в связке QUIK-QLUA меня утомляет больше всего потому, что «прилететь» может все, что угодно… И все «прилетевшее» каждый раз нужно окучивать.
Например, брокер ВТБ может дать подключение к серверу в выходные, чтобы круглосуточный бот понял, что прилетела «лажа» — нужно мудрить сравнивая серверные данные с клиентскими и т.д.
А как это сделать быстро и достоверно? Простите, за назойливость.
Может, я чего-то недопонял, но если имеется ввиду таблица «Текущие торги», то данные о торговой сессии могут быть, скорее всего, ложными...
Дело в том, что брокер ВТБ подключая сервер в выходные, похоже, подключает какой-то тестовый контур… То есть, серверное время передается из пятничной сессии...
Не уверен в гипотезах, но протестирую обязательно…
Спасибо! Проверю обязательно. Раньше пользовался только контролем времени сервера, сравнивая его с клиентским.
Попутно обнаружил интересную особенность, если Интернет отрубается или отрубается связь с сервером брокера, то вместо NIL на запрос времени сервера прилетает пустая строка.
Рыбак-рыбака чует издалека...
Вот таким образом, по крупице — собираю знания, которые могли бы быть в предоставляемых брокером справочниках...
Век живи, век учись — дураком помрешь.
Думал, что из QLUA доступна глубина стакана только в 20 котировок, а оказалось, что можно в QUIK прописать 50 и использовать 50 котировок айсберга биржевой очереди.
Узнал, что одновременно в QUIK может быть открыто не более 200 торговых стаканов — тоже методом профессора Тыка.
А что Вы думаете по такому поводу:
Чтобы попасть в стакан первым — начинать слать заявки раньше дозволенного, а контролировать успешно поставленные через функцию обратного вызова?
Какой смысл такого подхода? Ну, вот у брокера ВТБ есть ограничение на 3 транзакции в секунду. Однако, если посылать заявки как из пулемета, то «пролезает» до 50 заявок в секунду (результат все время разный, не знаю отчего зависит), просто отклики на них приходят позже.
pessimist, так же собираю по крупицам знания со смартлаба. от вас не раз получал полезную информацию! например махинации с фикс курсом цб и облигами в $ правда ни разу не пользовался этим методом. Хотелось бы помочь, чем смогу, но сам новичок в алго теме и поэтому могу ошибаться в каких то глубоких моментах.
вы правы. можно слать одну заявку и проверять таблицу заявок в по параметрам: активная + цена (и например + инструмент) и если заявка присутствует — выставлять лесенки заявок по всем нужным инструментам. НО дело в том что таблица заявок отображается с задержкой, на глаз пример 0.5-1 секунд и поэтому опять же не подходит для торгов на открытии. Возможно вы имеете ввиду «ту самую функцию», которая скажет: отклонена или прошла заявка. Если честно я ей не пользовался, слышал что эти скрытые «пингующие» и «заказывающие стаканы и графики» функции иногда дают сбои :) Возможно ими стоит пользоваться.
Спам заявок это топорный метод, но пожалуй самый надёжный, потому что простой. Часто заявки дублируются из за лага появления их в таблице заявок или же просто перестаёт хватать ГО для новых заявок.
Ещё недостаток: штрафы от биржи (неэффективные транзакции), но в этой теме досконально не разбирался, т.к. много сделок и руками не посчитать все комиссии. Брокер вроде ничего не говорит, комиссия вроде сходится +-.
То что у ВТБ 3 транзакции в сек — это же крайне мало? или я не правильно понимаю. Отклики это когда заявки выставляются с задержкой уже после выполнение скрипта?
pessimist, Контроль времени — это дополнительный, запасной вариант. Время сервера может приходит с ошибкой. Если получать статус сессии, то сразу по получению статуса активной сессии можно начать ставить заявки. Опередить участников рынка, расположенных у ядра биржи, все одно не получится.
Пинговать заявками — это смелый поход. Очень смелый.
Ну, как бы… Штрафы биржи начинаются от 30 тысяч транзакций, если память мне не врет… Брокер (ВТБ), вроде, не наказывал меня еще ни разу, про БКС писали, что может выкатить тоже штрафную комиссию, как биржа, или даже дороже.
Но я же не предложил это делать, а спросил, кто чего про это думает?
pessimist, Так дело даже не в штрафе, он от брокера может зависеть.
Дело в том, что клиент-серверная архитектура предполагает запрос: ответ. Когда нет торгов, то заявка не пройдет сервер брокера и придет такой ответ. А когда сессия уже началась, то будет только успешный ответ, если с параметрами заявки все хорошо.
Но при этом важно дождаться ответа от транзакции, прежде чем отправлять новую. Если же не ждать, а просто отправлять, то очень вероятная ситуация, когда все они и пройдут. Если цель все их поставить, то да, ок. Но если это «потыкать палочкой», то он очень дорогим может отказаться. Ответ от сервера может идти неопределенно долго. Может за 200 мс, а может и за 10 минут, как это было в марте 2020.
Это смотря, чего ловить. Есть варианты, когда пройдет только первая заявка — остальные будут последними. Ну, или ни одна не пройдет, как-то так…
pessimist, в квике есть параметр TRADINGSTATUS / session_status (и ещё какой то 3й вариант) чтобы проверить: проходят торги, клира, выходные
или вы в курсе об этом?
Этот параметр в таблице «Текущие торги». Данные в таблице соответствуют времени сервера QUIK, отсюда, как следствие, я допускаю, что они могут транслироваться некорректно.
Ну… Как-то невнятно звучит… Вроде, как:
— Никаких убеждений нет!
— Это и есть Ваше убеждение?
— Да! То есть, нет!
Смысл заработка не в том, чтобы супер измудриться, а найти простую стратегию рабочую, как табуретка. В прочем ваша жизнь и ваше право.
Чего я выдумал, например?
Кто сочиняет и какие сказки?
Какого бульона?
Вы на какой-то неуловимой для меня волне. Почему, написанное мною бред, а написанное Вами может быть понято без дополнительных пояснений?
Стратегия есть, про нее у меня вопросов нет. Все вопросы были про автоматизацию. Не?
Да. ТС это же по сути описание «если… то» и ничего больше.
Вот самая примитивная и при этом работающая ТС:
Таймфрейм: 1W
Инструмент: акции из индекса ммвб без префов
Индикаторы: MACD (12,26,9), ADX (14)
При пересечении macd снизу вверх на закрытии пятницы при растущем ADX покупка на открытии понедельника. Продажа — при пересечении macd сверху вниз.
Шорта нет.
p.s. ts lab действительно очень полезная вещь, особенно если не лениться и доделывать до конца, не бросая на этапе «ну это работает и так понятно»
; р))
Очень большое спасибо! Это не просто мнение, а целое пошаговое руководство к действию!
То с чем вы имеете дело — повседневность.
Советы такие:
1. Пишите комменты в коде, что это и зачем
2. Пишите понятный и говорящий код в котором быстро можно разобраться. Если вы смотрите на код и в течении 3х секунд и не можете понять, что тут происходит, то это плохой код его необходимо делать проще.
3. Учитесь читать и понимать код быстрее. Хороший программист, это тот кто может разобраться в чужом (своем/устаревшим/и.т.д.) коде быстро и внести туда правки.
Спасибо за советы от профессионала. На счет 3-х секунд очень понравилось.
Присоединяюсь к Вашей оценке обеими руками.
Karim, Линус Торвальдс с Вами бы не согласился. =)
А Линус Торвальдс на Смартлабе под каким ником?
Да я понял, спасибо. Просто не удержался и пошутил на счет Линуса Торвальдса
Ну, вроде, Lua может с помощью таблиц и объектные модели поддерживать. Другое дело, что я с линейным до конца не разобрался.
Ну, это Вы… А я Луа изучать взялся только потому, что он в Квик встроен.
Ну, может, громко сказано, что бот. Но программы на Луа, которые без моего участия могут денежку пощипывать — вполне, работоспособные получились. А профессиональным программистом я стану уже не в этой жизни.
Торговый робот это «движок» плюс стратегия. Два объекта и у каждого свои события и реакция на них.
Вот, тут я и поплыл… В QUIK поддерживается и событийная модель и функции обратного вызова, а торговый алгоритм — он линейный и сильно ветвистый получается...
Один из нюансов — это самый простой способ получить ответ от ТС биржи на транзакцию.
Потом, они реагируют в разы быстрее, чем таблицы QUIK.
Можно, конечно, даже main() не использовать… Но вряд-ли это упрощает решение торговых задачек…
На одном из форумов — я нашел автора библиотеки на Си, которая позволяет прочесть любую таблицу QUIK. В таблице сообщений — содержатся все ответы на транзакции.
И только, я обрадованный, написал, что библиотека подключилась и у меня получилось прочесть ответ ТС биржи на транзакцию — опытный товарищ меня огорчил, написал — берите коллбэк и не мучайтесь
С коллбэком у меня тоже получилось. Но сделать временные замеры по эффективности — я поленился. Однако, исходя из своего жизненного опыта — я знаю, что коды интерпретатора «живут» дольше без переписывания, чем откомпилированные вещи.
На счет надежней — я не уверен. Но, таки да — один из моих скриптов торговал именно опрашивая «Таблицу заявок» и «Таблицу сделок». Это просто, но не очень-то быстро.
pessimist, Это надежней колбека, т.к. колбек может не прийти, приходит несколько раз, после падения Квика все колбеки сессии могут прийти заново. А по поводу скорости, не надо читать всю таблицу, достаточно понять, что там появилась новая запись(си) и прочесть только новое. Также запись в таблице может появится раньше чем придет колбек.
Впрочем, это дело вкуса, не более. Скрипт большую часть времени все одно ничего не делает.
Не сталкивался с такой возможностью, если не брать случаи, когда до «Таблицы сделок» или «Таблицы заявок» — тоже данные не долетают.
Квик у меня не падал, если я не лез туда шаловливыми ручками. Повторное получение коллбэков не страшно — есть номер транзакции, его можно сделать уникальным
Потери времени уходят не на чтение всей таблицы, а на получение в таблицу данных самим QUIK'ом.
Про такую аномалию я даже на форумах не читал… Сам, понятное дело, тоже еще не сталкивался.
Тут, даже не во вкусе дело. Лишь бы денежку таскал и внимания не требовал этот скрипт.
Придется учиться программировать, либо заказывать платно у кого-то разработку.
Вот, я и учусь на старости лет. Смартлабовцы — помогают.
Это я про себя.
Одинаковые или однотипные блоки выносить в отдельные процедуры или функции с параметрами — это тоже упрощает.
Ну, я стараюсь писать для себя, как можно понятнее… Вот таким образом:
Ну, я стараюсь функции объединять в модули. Например, все функции, которые связаны с ТС биржи — в один модуль. Функции связанные с инициацией программы — в другой модуль и т. п.
Нет, цель только личное использование. Чтобы избежать логических ошибок в процессе написания, а затем, спустя длительное время — легко производить модификации не нарушая основной логики.
Да-да, именно этого я и ищу. Спасибо! Попробую.
С этим проблем нет. Торговую стратегию можно словами прописать — не так много получается и наглядность особо не требуется.
А вот взаимодействие QUIK с торговой системой биржи — вот, тут, у меня и накрутилось так, что без четкой схемы легко в запутки ухожу.
Ну, дык это — профессионал. А я — любитель, да еще и на шестом десятке лет мозгами шевелить собрался. Скрипят шестеренки-то...
Где-то прочел, что когда человек перестает учиться — он умирает.
Наверное проще разделить всю задачу на блоки — понять что каждый блок должен делать, и потом все связать — собственно в ЛУА похоже как раз заложен данный подход — так как функции в нем — напоминают по смыслу подпрограммы.
Ну, собственно, я с этого пост и начал. Я профессиональный чертежник, можно сказать, но когда блок-схема вышла за рамки формата А1 — я понял, что это не только утомительно, но и бесполезно, ибо, наглядности получается ноль.
Ну, в общем, да. Проблема была и осталась в организации взаимодействия блоков. То есть, тут, в комментариях дали ссылку на очень занимательный пост по этой теме, читаю сейчас и пытаюсь осмыслить.
То есть, блок-схема какая-то нужна, но как-то более укрупненная, что-ли...
Ломаю свою старую тыкву :)
То есть если все блоки не влазят — значит нужно увеличивать «вместимость» блока
Ну, да… Что-то вроде задачки, обратной декомпозиции...
Как и большинство профессиональных программистов не люблю блок схемы. Совсем. Лучше без них!
Алгоритм должен помещаться в голове. Хотя бы блоками. Этот совет и вам для рисования блок-схем. На одном уровне до десятка квадратиков, не больше. Крупноблочно, например: «открываем позицию лонг». А потом, на следующем уровне детализации, этот квадратик разрисовываем подробно. Например: «вычисляем уровень стопа, вычисляем уровень тейка, вычисляем размер позиции, отправляем заявку брокеру, проверяем ответ»...
Вы совершенно правы, в утверждении что шевелить мозгами полезно. Согласен на все 100.
А вот денег там нет.
Увы :(
Иначе бы профессиональные программисты их давно забрали )
Кажется, у Кургузкина в лабиринте иллюзий, встречал. Одно из распространенных заблуждений. Надеюсь, Вы не примете на свой счет. Это психология. Она для всех людей работает. Даже для тех кто знает про это искажение.
Тем кто слаб в каком-то инструменте, кажется что усилия по его освоению (иснтрумента) будут вознаграждены с торицей. На самом деле это не так. Рынку плевать 10 часов вы потратили на луа или 1000. Он ничего вам за это не должен.
Удачи!
Психология — она такая, психология… Полна когнитивных искажений. Когда с простеньким скриптом получилось заработать хорошие деньги, практически без риска, а потом неэффективность накрылась — уже трудно убедить себя в том, что другой неэффективности не существует.
Тут, какое дело… Как петух гонится за курицей и думает — догоню, затопчу, а не догоню — согреюсь :)
Для меня эта область относительно новая. Не удастся заработать роботом, дык, может, болезни альцгеймера избежать смогу.
Да, уж, забавно думать, что рынок кому-то что-то должен. Просто, там есть деньги, а уж забрать их — это дело техники. Наличие удочек у рыбака еще не гарантирует улова.
Вся система разбита на независимые взаимодействующие блоки, каждый из которых по отдельности довольно прост, и нет необходимости держать в голове все алгоритмы разом, это попросту невозможно (без специальных веществ).
На самом деле, куча кода меня не смущает. Для простых вещей — уже написано много решений и в сети их найти не так и трудно.
Ну, для меня с++ — это неизведанная область. Пока не ощущаю, что мне тесен QLUA. Тем более, что QLUA позволяет подключать библиотеки на c++, почти как родные. Думаю, что прежде, чем что-то продолжать — нужно мало-мальски освоить то, с чего начал :)
Тут, так много ценного мне подсказали, даже статейку ценную на эту тему привели, что мозаика рано или поздно сложится в моей голове.
На счет независимых блоков — это Вы четко подметили. Большинство добрых людей в своих рекомендациях упоминали именно это направление.
Спасибо!
Используя стандартные модули сторонних разработчиков вы лишаете себя возможности сделать «свои плюшки».
Если слова объектно-ориентированное программирование вам мало о чем говорит, то проще со своей блок-схемой и алгоритмом нанять квалифицированного программиста для реализации кода. В этом случае требуйте обязательно подробные комментарии в коде. Потому что править (улучшать, менять что-то и проч.) вам все равно будет нужно 100 %.
Спасибо за Ваш отклик. Тоже так думаю и уже начал идти по этому пути. Файлов получилось не так, уж, и мало.
Чужой код использую только в формате открытого кода. Всегда могу его «допилить» под свои нужды.
Слова про объектно-ориентированное программирование я понимаю слабо, тем более, какая нужна блок-схема для реализации.
Собственно, пост и был о том, что я собираю советы по составлению блок-схемы и формализации алгоритма. Если мне это удастся сделать, то и квалифицированный программист не потребуется, вернее, в его услугах не будет ни капли целесообразности.
Согласен. Поэтому, следует все делать самому изначально. Ибо, прибыль от программы не гарантирована, а значит гарантировано только знание. А если и знания не получать, то можно просто остаться в минусах.
Насчет «чужого кода». Имел ввиду предложения типа ТСЛАБа, которые вам давали в комментариях.
Насчет «объектно-ориентированного программирования». В принципе, если вы программировали на паскале, понять это не составит для вас особого труда. Погуглите. В общих чертах, объект это примерно как функция, но позволяет создать иерархию классов. Например, вы для одного интервала создали алгоритм расчета каких то параметров. Этот расчетный алгоритм и будет объектом. И вызывая его для разных интервалов вы будете создавать массивы параметров по одинаковому расчетному алгоритму. В старом паскале вам потребовалось бы ввести соответствующие массивы и вызвать для них функцию. А в случае объектно-ориентированного программирования массивы будут создаваться автоматически при вызове объекта с новым классом переменной (в моем примере — новым интервалом). Сам прошел через эту стадию понимания такого программирования. Трудно, но реально, если у вас был опыт программирования раньше.
Насчет блок-схемы. Для ее создания главное — не умение программировать, а ясное понимание логики расчета и принятия решений.
Не судите строго за длинный комментарий. Посоветовал, как мог )))
Ну, их все-равно набирается. Во-первых, файл-флаг восстановления после аварии. Чтобы бот понял, что он завершил работу аварийно.
Во-вторых, файл-лог открытых трейдов.
В третьих, файл хранящий текущие координаты открытых окон, чтобы положение окон на экране сохранялось.
Ну и т.д, и т.п.
Ну, это не чужой код, а чужая система Кстати, так и не понял, как она взаимодействует с биржей.
А самое главное — последовательность принятия решений и взаимодействие принятых решений. В общем, пробовал искать литературу по этой теме, но как-то не срослось найти что-либо понятное.
Да, что Вы — наоборот, большое спасибо. Я человек, который уже не боится многабукв
Для меня, наоборот, в некоторых случаях обстоятельность наиболее привлекательна.
А последовательность принятия решений и действий — это должен быть ваш продукт, ваши идеи. Так же, как и расчетная часть (или что там еще у вас, не знаю сути вашей идеи) алгоритма. В интернете или в литературе вы найдете только общие слова о риск-менеджменте, условиях входа-выхода и проч. Как эти общие слова реализовать — это вопрос к вашему творчеству и интеллекту.
Если бы все это было формализовано, да еще верно, так все бы трейдеры заколачивали мешки денег регулярно )))
Удачи в этом нелегком деле
Ну, как бы да...
Про материалы и принципиальную схему — в школе проходил, а вот про математическую схему в радиотехнике — впервые от Вас узнал.
Ну, не знаю… Файлы раскладываю по трем папкам:
VAR — файлы пользовательских настроек
RUN — файлы времени выполнения программы, тригерры штатного запуска, запуска после сбоя и т.п.
DATA — данные открытых трейдов, цены, курсы, расходы — на момент открытия, ну и архивные трейды тоже туда же...
А если окон много? Да и одно окно на разных компах по разному удобно настроить.
Может, я неясно выразился… Риск менеджмент, условия входа-выхода — это не вопрос поста.
Вопрос поста в том, как эти условия наглядно и внятно изобразить (формализовать), когда таких условий становится очень много.
Вы не поверите, но «всех трейдеров» не существует в природе. У каждого свои цели и методы соответствующие.
У каждой неэффективности на рынке есть своя денежная емкость. Для тех, кто мог бы ее реализовать — сумма бывает слишком мала, а у тех, для кого сумма выглядит привлекательной — нет навыков, чтобы эту неэффективность определить и реализовать. В этой мутной воде всегда водится подходящая рыбка.
Спасибо! Удача — бывает важнее всех навыков, ведь у тех, кто плыл на «Титанике» были и навыки, и деньги, и здоровье… Им не хватило немного удачи...
Формализация — это своего рода искусство, а потому этот процесс разные люди реализовывают по разному даже в рамках одинаковых критериев. И еще — порой формализовать даже простые для человеческого мозга вещи — абсолютно не тривиальная задача. В качестве примера могу привести вопрос формализации тренда, да и тот же риск-менеджмент. Как "… наглядно и внятно изобразить (формализовать)..." условия вы нигде и не найдете по этим причинам, да потому, что такого представления нет, и быть не может (как минимум — на текущем этапе), иначе всем ими бы и руководствовались.
«Все тейдеры» — существуют просто потому, что они физически есть. Согласен, что их задачи не тождественны полностью, но каждый из них стремится получить прибыль. И если бы существовал абсолютно гарантированный способ такой торговли, да еще описанный в массах, да еще и формализованный — все бы торговали в плюс. Вопрос только в том, кто бы тогда обеспечивал их прибыль денежным ресурсом ))) Я считаю, что в самом общем смысле рынок всегда позволяет заработать, независимо от размеров ДЕПО и проч., вопрос в том, чтобы увидеть эту возможность и успеть ею воспользоваться в моменте, а не пост-фатум.
Еще раз оговорюсь — моя писанина — это не нравоучение и т.п., просто делюсь собственным опытом в общих чертах, возможно он будет как-то полезен. )))
Удалось реализовать задуманное?
Доброго времени суток!
Смотря, что - считать задуманным. Если торговую идею — то нет. Она была построена на гипотезах и одна из гипотез оказалась ошибочной.
А если считать тему поста — то в каменты мне накидали кладезь полезной информации.
Единственный камент от автора с ленивым ником — оказался самым лаконичным и самым точным ответом на запрос поста — там ссылка на бесплатный онлайн-сервис по комфортной отрисовке блок-схем с интуитивно понятным интерфейсом
Вопрос. Надо автоматизировать простую штуку: при снижении до определенного уровня надо продавать фьючерс. Но если при обратном движении будет достижение/превышение уровня, тогда нужно откупать на том же уровне. И так неограниченное число раз.
Lua-скрипты умею запускать, формулы и простой код понимаю
Что можете посоветовать?
Раньше был хороший бесплатный сайт, где автор буквально разжевал основные действия на Lua, которые нужны для решения Вашей задачки.
Однако, со временем — сайт стал просить за информацию денежков.
Это было ожидаемо и я сохранил страницы сайта в Ворд в свое время, так, что если желаете — напишите мне в личку адрес Вашей электронной почты и я Вам пришлю набор этих файлов, которые использую буквально как букварь.
Самое сложное в Вашей штуке, на мой взгляд, это формализовать «определенный уровень». То есть, есть два варианта действий:
1) Программа сама определяет «уровень»;
2) Вы задаете программе «уровень» сами путем ввода с клавиатуры значения цены, вокруг которого свистопляска и происходит.
всё просто — это одно число, которое задаётся руками на долгое время = до экспирации, т.е. на 3 месяца.
Т.е. п.2)