Блог им. pessimist

Нужны советы по формализации алгоритмов

Всем, приветы! Удачи и профита!

На старости лет, решил упростить себе жизнь на бирже с помощью скриптов на QLUA под QUIK. Пока скрипты были простые — все шло хорошо.

Однако, все течёт, все меняется и простыми скриптами зарабатывать как раньше не получается.

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

Нужны советы по формализации алгоритмов



То есть, пока алгоритм помещался в голове — все было славно, но как только скрипт начал превращаться в программу из нескольких модулей — начались проблемы. То забуду для чего писал какой-то кусок кода, то утону в дебрях оптимизации...

Попробовал начертить на бумажке блок-схему работы программы, но когда вышел за пределы формата А1 — понял, что этот путь мне не годится. Понимаю, что я морально устарел и, возможно существуют другие подходы к алгоритмизации решения задачек.

Нужны советы по формализации алгоритмов



Дорогие Смартлабовцы, с удовольствием приму ваши советы по этой проблеме и прочту изложение вашего собственного опыта.

Есть ли какие-то программы (желательно бесплатные) для составления и формализации алгоритмов? Или вы просто прописываете в форме текстового изложения план работы программы? Или другие варианты?

Короче, кто добрый — поможите чайнику разобраться.

Нужны советы по формализации алгоритмов


★10
167 комментариев
Блок схемы — это одно из правильных приведений мыслей в порядок по полочкам. Если А1 не достаточно, то нужно разбивать алгоритм на модули, как вы сделали и чертить блок схему модульно. От глобального и все ниже к локальной формализации
avatar
Андрей К, спасибо за Ваш ответ.

и чертить блок схему модульно

В буквальном смысле пробовал чертить — утомительно до невозможности, вот и подумалось, может программы специальные есть для этого дела? Типа, как Microsoft Excel для таблиц.
avatar
pessimist, конечно есть. С Microsoft я закончил на уровне Microsoft Visio. Я уже года 3-4 на Linux, тут чуть по другому.
avatar
Андрей К,

Я уже года 3-4 на Linux, тут чуть по другому. 

Да, уж… Тама слишком по-взрослому :)
avatar
pessimist, umlet бесплатная программа для подобных диаграмм
avatar
lobziq, 

pessimist, umlet бесплатная программа для подобных диаграмм

Спасибо! Обязательно попробую.

Даже не ожидал, что столько добрых людей откликнется на мою просьбу, поэтому, Ваш вариант не единственный. Буду по ленте комментариев учебный план для себя составлять  
avatar
pessimist, хм… я надеюсь вы хотя бы до процедурного программирования то дошли?  все что может быть вынесено в функции — должно быть вынсеено в функции. В итоге у вас остается модулек для входа в позицию, для выхода, для контроля позиции  и еще может какие — модульки небольшие, запутаться очень сложно то. Ну а ежели конечно весь код напихать в одно место — то это одно место конечно превратится в Ж и блок-схему Ж рисовать бесполезно  ;)
avatar
Petr S, 

pessimist, хм… я надеюсь вы хотя бы до процедурного программирования то дошли?

При слове процедура — в памяти всплывает мсье Паскаль.

все что может быть вынесено в функции — должно быть вынсеено в функции.

С этим проблем нет. Но у функций есть параметры. Да и самих функций свыше сотни.

В итоге у вас остается модулек для входа в позицию, для выхода, для контроля позиции

Все не так примитивно. Поэтому, запутался.

Вот запустили Вы свою функцию для входа в позицию. В этот момент оборвался Интернет, потом, глюкнул сервер брокера, а потом — вырубили свет, аккумулятор сел.

Свет включили. Программа должна восстановить себя сама. Каков простенький модулечек получицца?
avatar
pessimist, модулечек простенький. просто прога должна сэйвить свои выполненные шаги в файл.
avatar
pessimist,  есть. гуглите case средства. целый класс ПО. только там обычно на более высоком уровне абстракции- взаимодействие модулей, потоков данных, диаграммы классов. это для крупных проектов актуально. Это для проф разработки. А так-- Visio или бесплатный DIA.

avatar
Gregori, 

pessimist,  есть. гуглите case средства. целый класс ПО. только там обычно на более высоком уровне абстракции- взаимодействие модулей, потоков данных, диаграммы классов. это для крупных проектов актуально. Это для проф разработки.

Спасибо. Думаю, что для меня — это слишком тяжелая артиллерия :)

А так-- Visio или бесплатный DIA.

Ну, я рисовал в Автокаде, он несколько ближе мне, чем Visio. Нет, это не очень мне понравилось. Тут, уже подсказали забавные приложения и пакеты для моих целей — буду заниматься 
avatar
pessimist, да программы есть и очень удобные, причем, лет 20 как — гугли, не помню…
avatar
ха... 
вот поэтому я и пользую тслаб и все делаю из стандартных кубиков — чтоб ограничить полет буйной фантазии

вообще годный алгоритм записывается крупным текстом на половинке спичечного коробка
avatar
ves2010, 

вот поэтому я и пользую тслаб и все делаю из стандартных кубиков — чтоб ограничить полет буйной фантазии

Спасибо за Ваше мнение.
Если я правильно понимаю, то ТСЛАБ — это платные кубики с весьма ограниченными возможностями, как мне кажется…
avatar
pessimist, нет
avatar
pessimist, Согласен с ves2010. Лучший сиг ЦЗ2УПП. Это результат 25 летнего опыта. Про RSI и другие осцилляторы я забыл в 2007 г когда расстался с Метасток 7.2.
avatar
ezomm, а можно поподробней что за зверь такой? гугл молчит
avatar
Gregori, цена закрытия во 2м угле правого плеча.
avatar
ezomm, к сожалению я не совсем понимаю что это значит. точнее- из фразы понял только «цена закрытия» ))
avatar
Gregori, там своя система как вообще движется цена — вероятно есть у коллеги в постах.
avatar
asfa, у ezomm ? 
avatar
Gregori, да.
Но понять её сложно, т.к. все детали никто не раскрывает.
avatar
ves2010, далёк от всего этого… но спрошу, Тслаб бесплатный для «пробы пера»? для того чтобы попробовать како-нибудь алгоритм.протестировать на демо...?.. или всё платно
avatar
Двоечник, для попробовать бесплатно. Для запустить в бой у брока платно
avatar
Андрей К, 

Двоечник, для попробовать бесплатно. Для запустить в бой у брока платно

А вообще, на Ваш взгляд, ТСЛАБ стоит того, чтобы тратить время на изучение его возможностей?
avatar
pessimist, да 
 в тслабе самый низкий порог входа в алго
там навороченно овердокуя всего...
просто доку прочти…
avatar
pessimist, там и тратить особо нечего. За день можно освоить базовые функции. В целом в ТСЛабе многое реализовано через жопу, но лучшего все равно ничего нет, если для нас чайников рассматривать.
avatar
monte_carlo, 

pessimist, там и тратить особо нечего. За день можно освоить базовые функции.

А по денежкам во сколько обходится этот ТСЛАБ? Они за каждый алгоритм отдельную плату берут, или в форме абонентки на все?
avatar
pessimist, по деньгам не знаю. Я только для тестов использую. Торгую исключительно вручную!
avatar
monte_carlo, 

pessimist, по деньгам не знаю. Я только для тестов использую. Торгую исключительно вручную!

В любом случае, спасибо Вам за мнение и информацию.
avatar
pessimist, да было бы за что)
avatar
pessimist, все без платы, скачал, поставил и вперед… плата только в случае подключения потоковых данных с биржи, а так сколько угодно алго запускаете…

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

ТСЛАб очень долго не поддерживал котиры с миллисеками и тем более с наносеками. Может уже сделали.

avatar
Андрей К, 

ТСЛАб очень долго не поддерживал котиры с миллисеками и тем более с наносеками. Может уже сделали.

Ну, наносеки — это уже Plaza плюс еще денег на выделенные сервера, наверное… А в каком году Ваши идеи спустились внутрь секунды?
avatar
pessimist, Плаза вроде тоже наносеки не умеет. Только Fast и Twime.

Конкретно проверить в тслаб внутри секи я пытался и в 2017 и в 2018, забывая, что не умеет. Потом бросил. На самом деле, мало кто умеет так тестить. А кто более умеет хотя бы микросеки, тот делает это очень тяжело.
avatar
Андрей К, тслаб поддержиает счас тики и vsa
avatar
ves2010, да, vsa индюки я еще застал. Но их нельзя было трейдить. Приходилось писать свои vsa индюки с возможностью торговли.

А не подскажите, если я ему подкину тики с временем до микросек или наносек, он схватит это время? Раньше нет. Если я накину два инструмента с микросеками и построю между ними спред, он построит его криво, так как их засинхронит только на уровне секунд, не микросекунд
avatar
Андрей К, это надо в техподдержку написать…

там проблема в том, что нет у тебя никаких микросекунд ...  задержки в 1000 раз больше =  пинг 10000мксек + задержка данных 2000 как минимум+ время выставления заявок 25000мксек

кроме того стакан могут двигать без сделок… т.е стакан сместился а цены ты не увидишь
avatar
ves2010, про задержки я понимаю. Мне чисто прогнать бектест )
avatar
pessimist, обычный 4000 в месяц
и 1000 руб в месяц с ограничениями на объем...
но там легко обходится — просто пускаешь кучу ботов
avatar
ves2010, 

pessimist, обычный 4000 в месяц и 1000 руб в месяц с ограничениями на объем… но там легко обходится — просто пускаешь кучу ботов

Спасибо. А как ТСЛАБ с системами брокера коннектится? 
avatar
pessimist, по разному… у них есть канал в телеграм и форум и техподдержка и документация на русском языке
avatar

pessimist, абонентка, насколько мне известно.
Ну да и какое им дело- у Вас рой алегоритмов заявки на покупку/продажу генерят или один.

была бы «за алгоритм» прятали бы трейдеры в одной функции проверки по каждому из них 

avatar
Gregori, 

pessimist, абонентка, насколько мне известно.

Не люблю пассивы. Спасибо за информацию, для меня это важно.

Ну да и какое им дело- у Вас рой алегоритмов заявки на покупку/продажу генерят или один.

была бы «за алгоритм» прятали бы трейдеры в одной функции проверки по каждому из них 


Честно говоря, я так и не понял, каким образом ТСЛАБ взаимодействует с брокером и биржей. Брокер тупо предоставляет QUIK и ЛК. Под ЛК api у брокера нет.
avatar
pessimist, там ставится кастрированный квик и тслаб взаимодействует с ним… но есть норм брокеры со своим апи
avatar
ves2010, 

pessimist, там ставится кастрированный квик и тслаб взаимодействует с ним… но есть норм брокеры со своим апи


Спасибо!

А кто-нибудь с ВТБ ТСЛАБ пробовал использовать?

avatar
pessimist, я думаю смотря для кого. Для меня не владеющего qlua- да. либо его крутить, либо извращаться с интеграцией с пайтона.
А у Вас опыт то куда приличней в этом. Скорее всего какие то вещи можно будет делать куда быстрей, но с меньшей гибкостью в плане каких то нестандартных вещей.
avatar
Gregori, 

Для меня не владеющего qlua- да. либо его крутить, либо извращаться с интеграцией с пайтона.

У меня был такой опыт. Когда нужно было СМС-ку с телефона прочитать — я запускал из QLUA кусок кода написанный товарищем на Пайтоне. 

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

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

Так и есть. Но, симбиозы возможны.
avatar
Двоечник, для тестов на исторических данных — бесплатный. Для торговли — платно.
avatar
monte_carlo, Т.е можно сделать скринер на индюках? на 100 например активов, на ТФ Н1, Н4, Д 
avatar
Двоечник, индюки все основные есть. Также можно с форума загружать пользовательские библиотеки. Или самому писать. Там достаточно просто всё. Даже для гуманитариев таких, как я. ТФ любые — хоть Н8. Короче, исторические данные с финама качнул — и вперёд)
avatar
ves2010, +
avatar
ves2010, 
Рад что мои мои идеи сходны с идеями гуру рынка.
Я бы пошептался с вами, да уровни разные.
Это как студент с академиком.

avatar
fdsf fdsf, 

app.diagrams.net/

Спасибо — прикольная штуковина, похоже, смогу разобрацца научным методом профессора Тыка.
avatar
Eugene Logunov, 

Visual Paradigm (community edition — бесплатная). Отличный инструмент для проектирования ПО.

Вот спасибо! Даже не слышал о таком продукте.
avatar
pessimist, я недавно
смотрел амиброкер
там можно человечьим текстом писать что нужно делать, а на выходе будет готовый код на си
avatar
ves2010, 

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

Ну, пока я не готов си изучать. Потратил много времени на Lua. Даже книжку купил. Но, так как книжку писал сам автор языка — я понимать написанное стал только с пятого прочтения и то, только половину материала воспринял.

В общем, спасибо! Любой опыт и мнение в этот момент мне важны и интересны.
avatar
Есть алгоритм «Купи и держи». Я пока не запутался)
avatar
Vatokat, 

Есть алгоритм «Купи и держи». Я пока не запутался)

Для этого и программы не нужны, не так ли? 

Бывали на рынке времена, когда алгоритм «Купи и держи» превращался в алгоритм «Купил — так держись!». Поэтому, я и лезу путацца 
avatar
pessimist, «Купи и держи» со временем превратится «Купи и терпи»)) 
avatar
LeO, 

pessimist, «Купи и держи» со временем превратится «Купи и терпи»)) 

Дык, это понятно  Вопрос, что делать в случае, если не терпицца ? 
avatar
pessimist, 
avatar
pessimist, на кошках тренироваться)
avatar
Сергей К., 

pessimist, на кошках тренироваться)

Кошки и обидецца могут… Все яйцы расцарапають…
avatar
pessimist, имел в виду, что для роботов завести небольшой счет и баловаться, а купить и держать на отдельном купидержательном счете

avatar
Сергей К., 

pessimist, имел в виду, что для роботов завести небольшой счет и баловаться, а купить и держать на отдельном купидержательном счете

Дык, когда этот отдельный купидержательный счет худеет всего процентов на 30 (ниже не просаживался пока, с 2009 года в рынке) — настроение портицца так, что хочется выйтить из активов. Терпеть — нервную систему портить, а выходить — фиксировать убытки.

В общем, в 2017 году я перековался в спекулянты  
Не является инвестиционной рекомендацией 
avatar

По-моему, Вы усложняете. Драйвер какой-то… Вашей программе не должно быть до этого дела. Нельзя объять необъятное. 

 

Разносите по разным уровням архитектуры. Получатся изолированные части, работающие через интерфейсы. Lua, конечно, не самый выразительный язык. Осознанно называйте объекты, пишите комментарии. Если код не понятен — переписывайте пока не станет понятным.

 

Я не видел, чтобы кто-то успешно применял визуальные модели. Обычно, сложность нарастает и всё быстро превращается в кашу.

avatar
Value, 

Я не видел, чтобы кто-то успешно применял визуальные модели. Обычно, сложность нарастает и всё быстро превращается в кашу.

Вот-вот, нахлебавшись каши и решил написать сей пост с вопросами к сообществу.

Я вообще, никогда не видел как работают программисты…
avatar

pessimist, программисты пишут черные ящики. Написал, работает — забыл. Если потом находят баг — разбираешься заново. Отсюда вывод: писать надо так, чтобы можно было разобраться.

 

То забуду для чего писал какой-то кусок кода, то утону в дебрях оптимизации...

 

Ну напишите комментарий что оно делает, если по коду непонятно. =)

 

Преждевременная оптимизация — зло. Оптимизируется готовый продукт по запросу от заказчика. Через профилировщик определяются узкие места, потом решается что с ними делать.

avatar
Value, 

Преждевременная оптимизация — зло. Оптимизируется готовый продукт по запросу от заказчика. Через профилировщик определяются узкие места, потом решается что с ними делать.

Ну, это уже профессиональный подход. Я — всего лишь, дилетант самоучка.

Комментарии пишу, но писать лаконично и внятно — это тоже навык, который у меня прихрамывает 
avatar

pessimist, так и работают.
абстракция, декомпозиция, модифицируемость программ в приоритете.
Чем большей  и сложней программа тем это важней. 
Разбили на части (то бишь декомпозицию сделали). В простейшем случае на функции/процедуры. Сложней вариант- на библиотеки под программ (модули), более модный- классы (объекты). но это при разработке больших программ нужно.
сделали эти части по возможности более универсальными. то что можно не задавать константой-не задаете а выносите  как параметры процедуры или свойства свойства класса. 

avatar

Здесь надо разделять техническую составляющую работы скрипта и алгоритмы принятия торговых решений. В общем случае, техническая часть пишется один раз (условно), т.к. методики контроля, выполнения торговых действий однотипные. Поэтому ее расписывать особо не надо каждый раз. А вот торговые алгоритмы — да, надо нарисовать. Хотя проще написать.

Сложнее всего когда этот алгоритм не твой, а тебе его надо реализовать. Сложность при этом не в нем самом (обычно все однотипно и не сложно), а в согласовании терминов. Понять что имеется ввиду — отдельная задача.

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

Спасибо за ценную мысль… Именно огромная часть проверок состояний времени, наличия связи, адекватности параметров возвращаемых функциями — запутала меня окончательно.

А вот торговые алгоритмы — да, надо нарисовать. Хотя проще написать.

То есть, написать просто словами в форме изложения, я правильно понял?
avatar

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

 

Эта часть требует формализации, да. При этом, мое мнение, что самое сложное — это написать для себя что может быть, а не расположить это в виде блок схемы. А то часто сталкиваюсь с мнением, что все должно быть идеально, а то что у нас клиент-серверная архитектура с кешированием на клиенте — уже не важно. А это как раз самое важное.

avatar
nicknh, 

это написать для себя что может быть

Вот, это в связке QUIK-QLUA меня утомляет больше всего потому, что «прилететь» может все, что угодно… И все «прилетевшее» каждый раз нужно окучивать.

Например, брокер ВТБ может дать подключение к серверу в выходные, чтобы круглосуточный бот понял, что прилетела «лажа» — нужно мудрить сравнивая серверные данные с клиентскими и т.д.


avatar
pessimist, Зачем, если можно проверить, что нет торгов. Если их нет, то нет.
avatar
nicknh, 

pessimist, Зачем, если можно проверить, что нет торгов. Если их нет, то нет.

А как это сделать быстро и достоверно? Простите, за назойливость.
avatar
pessimist, например, считать таблицу торгов, оттуда можно получить статус инструмента: торгуется он или нет
avatar
Сергей К., 

pessimist, например, считать таблицу торгов. там указано, открыта сессия торговая или нет

Может, я чего-то недопонял, но если имеется ввиду таблица «Текущие торги», то данные о торговой сессии могут быть, скорее всего, ложными...

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

Не уверен в гипотезах, но протестирую обязательно…
avatar
pessimist, финам тоже по выхам другое время рисует, статус отображается вроде правильный. проверьте
avatar
Hired, 

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

Спасибо! Проверю обязательно. Раньше пользовался только контролем времени сервера, сравнивая его с клиентским.

Попутно обнаружил интересную особенность, если Интернет отрубается или отрубается связь с сервером брокера, то вместо NIL на запрос времени сервера прилетает пустая строка.
avatar
pessimist, так же пользуюсь контролем времени, но с целью начать спамить заявки на открытие, чтобы успеть встать в очередь в стакане :) потому как статус сессии обновляется по параметру «запрашивать данные раз в ...» в настройках квика и для торгов на открытии не подходит
avatar
Hired, 

pessimist, так же пользуюсь контролем времени, но с целью начать спамить заявки на открытие

Рыбак-рыбака чует издалека... 

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

Век живи, век учись — дураком помрешь. 

Думал, что из QLUA доступна глубина стакана только в 20 котировок, а оказалось, что можно в QUIK прописать 50 и использовать 50 котировок айсберга биржевой очереди.

Узнал, что одновременно в QUIK может быть открыто не более 200 торговых стаканов — тоже методом профессора Тыка.

А что Вы думаете по такому поводу:

Чтобы попасть в стакан первым — начинать слать заявки раньше дозволенного, а контролировать успешно поставленные через функцию обратного вызова?

Какой смысл такого подхода? Ну, вот у брокера ВТБ есть ограничение на 3 транзакции в секунду. Однако, если посылать заявки как из пулемета, то «пролезает» до 50 заявок в секунду (результат все время разный, не знаю отчего зависит), просто отклики на них приходят позже.
avatar

pessimist, так же собираю по крупицам знания со смартлаба. от вас не раз получал полезную информацию! например махинации с фикс курсом цб и облигами в $  правда ни разу не пользовался этим методом. Хотелось бы помочь, чем смогу, но сам новичок в алго теме и поэтому могу ошибаться в каких то глубоких моментах.

вы правы. можно слать одну заявку и проверять таблицу заявок в по параметрам: активная + цена (и например + инструмент) и если заявка присутствует — выставлять лесенки заявок по всем нужным инструментам. НО дело в том что таблица заявок отображается с задержкой, на глаз пример 0.5-1 секунд и поэтому опять же не подходит для торгов на открытии. Возможно вы имеете ввиду «ту самую функцию», которая скажет: отклонена или прошла заявка. Если честно я ей не пользовался, слышал что эти скрытые «пингующие» и «заказывающие стаканы и графики» функции иногда дают сбои :) Возможно ими стоит пользоваться.

Спам заявок это топорный метод, но пожалуй самый надёжный, потому что простой. Часто заявки дублируются из за лага появления их в таблице заявок или же просто перестаёт хватать ГО для новых заявок.
Ещё недостаток: штрафы от биржи (неэффективные транзакции), но в этой теме досконально не разбирался, т.к. много сделок и руками не посчитать все комиссии. Брокер вроде ничего не говорит, комиссия вроде сходится +-.

То что у ВТБ 3 транзакции в сек — это же крайне мало? или я не правильно понимаю. Отклики это когда заявки выставляются с задержкой уже после выполнение скрипта?

avatar

pessimist, Контроль времени — это дополнительный, запасной вариант. Время сервера может приходит с ошибкой. Если получать статус сессии, то сразу по получению статуса активной сессии можно начать ставить заявки. Опередить участников рынка, расположенных у ядра биржи, все одно не получится.

Пинговать заявками — это смелый поход. Очень смелый.

avatar
nicknh, 

Пинговать заявками — это смелый поход. Очень смелый.

Ну, как бы… Штрафы биржи начинаются от 30 тысяч транзакций, если память мне не врет… Брокер (ВТБ), вроде, не наказывал меня еще ни  разу, про БКС писали, что может выкатить тоже штрафную комиссию, как биржа, или даже дороже.

Но я же не предложил это делать, а спросил, кто чего про это думает? 
avatar

pessimist, Так дело даже не в штрафе, он от брокера может зависеть.

Дело в том, что клиент-серверная архитектура предполагает запрос: ответ. Когда нет торгов, то заявка не пройдет сервер брокера и придет такой ответ. А когда сессия уже началась, то будет только успешный ответ, если с параметрами заявки все хорошо.

 

Но при этом важно дождаться ответа от транзакции, прежде чем отправлять новую. Если же не ждать, а просто отправлять, то очень вероятная ситуация, когда все они и пройдут. Если цель все их поставить, то да, ок. Но если это «потыкать палочкой», то он очень дорогим может отказаться. Ответ от сервера может идти неопределенно долго. Может за 200 мс, а может и за 10 минут, как это было в марте 2020.

 

avatar
nicknh, 

Если же не ждать, а просто отправлять, то очень вероятная ситуация, когда все они и пройдут.

Это смотря, чего ловить. Есть варианты, когда пройдет только первая заявка — остальные будут последними. Ну, или ни одна не пройдет, как-то так…
avatar

pessimist, в квике есть параметр TRADINGSTATUS / session_status (и ещё какой то 3й вариант) чтобы проверить: проходят торги, клира, выходные

или вы в курсе об этом?

avatar
Hired, 

pessimist, в квике есть параметр TRADINGSTATUS / session_status (и ещё какой то 3й вариант) чтобы проверить: проходят торги, клира, выходные

или вы в курсе об этом?


Этот параметр в таблице «Текущие торги». Данные в таблице соответствуют времени сервера QUIK, отсюда, как следствие, я допускаю, что они могут транслироваться некорректно.
avatar
Совет: нет никаких формализаций на рынке))
avatar
Ivan Gurov, 

Совет: нет никаких формализаций на рынке))


Ну… Как-то невнятно звучит… Вроде, как:

— Никаких убеждений нет!

— Это и есть Ваше убеждение?
— Да! То есть, нет!

avatar
pessimist, Вы выдумываете свои понятия. Сочиняет сказки. На основе этого бульона хотите бота сделать. И просите совета. На совет с критикой, вы пишите бред. Почему? Потому что вы окрылённы сказками. Чем вам помочь, хз. Не слушаете, кто умнее. Тогда мудрите дальше. Может получится что-то, но вероятность крайне мала.
Смысл заработка не в том, чтобы супер измудриться, а найти простую стратегию рабочую, как табуретка. В прочем ваша жизнь и ваше право.
avatar
Ivan Gurov, 

Вы выдумываете свои понятия

Чего я выдумал, например? 

Сочиняет сказки.

Кто сочиняет и какие сказки?

На основе этого бульона хотите бота сделать. И просите совета.

Какого бульона? 

На совет с критикой, вы пишите бред. Почему? Потому что вы окрылённы сказками.

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

Смысл заработка не в том, чтобы супер измудриться, а найти простую стратегию рабочую, как табуретка. В прочем ваша жизнь и ваше право.

Стратегия есть, про нее у меня вопросов нет. Все вопросы были про автоматизацию. Не? 
avatar
То есть, написать просто словами в форме изложения, я правильно понял?

Да. ТС это же по сути описание «если… то» и ничего больше.

Вот самая примитивная и при этом работающая ТС:

Таймфрейм: 1W
Инструмент: акции из индекса ммвб без префов
Индикаторы: MACD (12,26,9), ADX (14)

При пересечении macd снизу вверх на закрытии пятницы при растущем ADX покупка на открытии понедельника. Продажа — при пересечении macd сверху вниз.
Шорта нет.


p.s. ts lab действительно очень полезная вещь, особенно если не лениться и доделывать до конца, не бросая на этапе «ну это работает и так понятно»
avatar
Красивая блок-схема. ))
; р))
avatar
ТС лаб
Eugene Logunov, 

В целом по формализации и проектированию (мое личное мнение):

Очень большое спасибо! Это не просто мнение, а целое пошаговое руководство к действию!
avatar
За свою карьеру программиста я написал столько кода и разной логики, что со временем приходя в пн на работу я абсолютно не помню, что я делал в пт.
То с чем вы имеете дело — повседневность.

Советы такие:
1. Пишите комменты в коде, что это и зачем
2. Пишите понятный и говорящий код в котором быстро можно разобраться. Если вы смотрите на код и в течении 3х секунд и не можете понять, что тут происходит, то это плохой код его необходимо делать проще.
3. Учитесь читать и понимать код быстрее. Хороший программист, это тот кто может разобраться в чужом (своем/устаревшим/и.т.д.) коде быстро и внести туда правки.
avatar
PERSEUS, 

Советы такие:
1. Пишите комменты в коде, что это и зачем
2. Пишите понятный и говорящий код в котором быстро можно разобраться. Если вы смотрите на код и в течении 3х секунд и не можете понять, что тут происходит, то это плохой код его необходимо делать проще.
3. Учитесь читать и понимать код быстрее. Хороший программист, это тот кто может разобраться в чужом (своем/устаревшим/и.т.д.) коде быстро и внести туда правки.

Спасибо за советы от профессионала. На счет 3-х секунд очень понравилось.
avatar
PERSEUS, есть ли образец такого кода, просто чтобы понимать к чему стремиться. Желательно кусок робота на QLUA ни или индикатор на худой конец.

avatar
Eugene Logunov, отличная статья.
avatar
Value, 

Eugene Logunov, отличная статья.

Присоединяюсь к Вашей оценке обеими руками.
avatar
Объектно-ориентированное программирование вам в помощь, на линейном далеко не уедете. Только простые проги.
avatar

Karim, Линус Торвальдс с Вами бы не согласился. =)

avatar
Value, 

Karim, Линус Торвальдс с Вами бы не согласился. =)

А Линус Торвальдс на Смартлабе под каким ником? 
avatar
pessimist, я к тому, что объектно-ориентированное программирование — не серебряная пуля. Там своих заморочек хватает.
avatar
Value, 

pessimist, я к тому, что объектно-ориентированное программирование — не серебряная пуля. Там своих заморочек хватает.

Да я понял, спасибо. Просто не удержался и пошутил на счет Линуса Торвальдса 
avatar
Karim, 

Объектно-ориентированное программирование вам в помощь, на линейном далеко не уедете. Только простые проги.

Ну, вроде, Lua может с помощью таблиц и объектные модели поддерживать. Другое дело, что я с линейным до конца не разобрался.
avatar
pessimist, я бы не писал что-то сложное на Луа. Ну индикатор — можно. Но бот… Взял бы коннектор, вывел данные в нормальный язык. При всем уважении к Луа, ей категорически не хватает выразительности. Да и с инструментами разработки всё плохо.
avatar
Value, 

pessimist, я бы не писал что-то сложное на Луа.

Ну, это Вы… А я Луа изучать взялся только потому, что он в Квик встроен.

Но бот…

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




avatar
pessimist, С линейного и начинают учить еще в школе. Ваша блок-схема и есть линейное программирование. Сложный алгоритм закодить очень сложно, да и зачем, когда можно упростить себе задачу.
Торговый робот это «движок» плюс стратегия. Два объекта и у каждого свои события и реакция на них. 
avatar
Karim, 

Торговый робот это «движок» плюс стратегия. Два объекта и у каждого свои события и реакция на них. 

Вот, тут я и поплыл… В QUIK поддерживается и событийная модель и функции обратного вызова, а торговый алгоритм — он линейный и сильно ветвистый получается... 
avatar
pessimist, Никто не мешает не использовать колбеки. То, что они есть — это не значит, что их надо использовать. Тем более, что у них есть масса нюансов.
avatar
nicknh, 

То, что они есть — это не значит, что их надо использовать. Тем более, что у них есть масса нюансов.

Один из нюансов — это самый простой способ получить ответ от ТС биржи на транзакцию.

Потом, они реагируют в разы быстрее, чем таблицы QUIK.

Можно, конечно, даже main() не использовать… Но вряд-ли это упрощает решение торговых задачек…
avatar
pessimist, Ответ на транзакцию Вы можете получить только через колбек, т.к. доступа к таблице транзакций из языка нет. А вот поймать новый ордер, вполне можно и без них. Что даже надежней.
avatar
nicknh, 

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

На одном из форумов — я нашел автора библиотеки на Си, которая позволяет прочесть любую таблицу QUIK. В таблице сообщений — содержатся все ответы на транзакции.

И только, я обрадованный, написал, что библиотека подключилась и у меня получилось прочесть ответ ТС биржи на транзакцию — опытный товарищ меня огорчил, написал — берите коллбэк и не мучайтесь 

С коллбэком у меня тоже получилось. Но сделать временные замеры по эффективности — я поленился. Однако, исходя из своего жизненного опыта — я знаю, что коды интерпретатора «живут» дольше без переписывания, чем откомпилированные вещи.

А вот поймать новый ордер, вполне можно и без них. Что даже надежней.

На счет надежней — я не уверен. Но, таки да — один из моих скриптов торговал именно опрашивая «Таблицу заявок» и «Таблицу сделок». Это просто, но не очень-то быстро.


avatar

pessimist, Это надежней колбека, т.к. колбек может не прийти, приходит несколько раз, после падения Квика все колбеки сессии могут прийти заново. А по поводу скорости, не надо читать всю таблицу, достаточно понять, что там появилась новая запись(си) и прочесть только новое. Также запись в таблице может появится раньше чем придет колбек.

Впрочем, это дело вкуса, не более. Скрипт большую часть времени все одно ничего не делает.

avatar
nicknh, 

Это надежней колбека, т.к. колбек может не прийти,

Не сталкивался с такой возможностью, если не брать случаи, когда до «Таблицы сделок» или «Таблицы заявок» — тоже данные не долетают.

после падения Квика все колбеки сессии могут прийти заново

Квик у меня не падал, если я не лез туда шаловливыми ручками. Повторное получение коллбэков не страшно — есть номер транзакции, его можно сделать уникальным

А по поводу скорости, не надо читать всю таблицу,

Потери времени уходят не на чтение всей таблицы, а на получение в таблицу данных самим QUIK'ом.

Также запись в таблице может появится раньше чем придет колбек.

Про такую аномалию я даже на форумах не читал… Сам, понятное дело, тоже еще не сталкивался.

Впрочем, это дело вкуса, не более. Скрипт большую часть времени все одно ничего не делает.

Тут, даже не во вкусе дело. Лишь бы денежку таскал и внимания не требовал этот скрипт.
avatar

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

 

avatar
Максим Иванов, 


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

Вот, я и учусь на старости лет. Смартлабовцы — помогают. 

avatar
Х****** быть по пояс деревянным.
Это я про себя.
Комментарии в коде сильно упрощают жизнь, причем, чем подробнее комментарии, тем проще потом разбираться в кодах.

Одинаковые или однотипные блоки выносить в отдельные процедуры или функции с параметрами — это тоже упрощает.

avatar
Сергей К., 

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

Ну, я стараюсь писать для себя, как можно понятнее… Вот таким образом:


Одинаковые или однотипные блоки выносить в отдельные процедуры или функции с параметрами — это тоже упрощает.

Ну, я стараюсь функции объединять в модули. Например, все функции, которые связаны с ТС биржи — в один модуль. Функции связанные с инициацией программы — в другой модуль и т. п.
avatar
Рисовать блоксхемы это муторное занятие… Но если все же хотите и если диаграмы не для презентации готовите, попробуйте pluntuml, это сократит время в разы для описания ваших идей в формате блокдиаграм, и его, время, можно будет использовать для обдумывания новых идей или же реализации уже существующих.
avatar
CloseToAlgoTrading, 

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

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

это сократит время в разы для описания ваших идей в формате блокдиаграм, и его, время, можно будет использовать для обдумывания новых идей или же реализации уже существующих.

Да-да, именно этого я и ищу. Спасибо! Попробую.
avatar
На мой взгляд, формализовать надо не алгоритм, а торговую стратегию, которую потом и перекладывать на программный код.
avatar
Сергей К., 

На мой взгляд, формализовать надо не алгоритм, а торговую стратегию

С этим проблем нет. Торговую стратегию можно словами прописать — не так много получается и наглядность особо не требуется.

А вот взаимодействие QUIK с торговой системой биржи — вот, тут, у меня и накрутилось так, что без четкой схемы легко в запутки ухожу.
avatar
pessimist, я в прошлом программист (1с), мне не сложно писать такие коды, в которых я легко разбираюсь
avatar
Сергей К., 

pessimist, я в прошлом программист (1с), мне не сложно писать такие коды, в которых я легко разбираюсь

Ну, дык это — профессионал. А я — любитель, да еще и на шестом десятке лет мозгами шевелить собрался. Скрипят шестеренки-то...

Где-то прочел, что когда человек перестает учиться — он умирает. 
avatar
Мне кажется, что при достаточно сложной задумке — рисовать блок-схемы, будет очень заипательным занятием.
Наверное проще разделить всю задачу на блоки — понять что каждый блок должен делать, и потом все связать — собственно в ЛУА похоже как раз заложен данный подход — так как функции в нем — напоминают по смыслу подпрограммы.
Кристофер, 

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

Ну, собственно, я с этого пост и начал. Я профессиональный чертежник, можно сказать, но когда блок-схема вышла за рамки формата А1 — я понял, что это не только утомительно, но и бесполезно, ибо, наглядности получается ноль.

Наверное проще разделить всю задачу на блоки — понять что каждый блок должен делать, и потом все связать — собственно в ЛУА похоже как раз заложен данный подход — так как функции в нем — напоминают по смыслу подпрограммы.

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

То есть, блок-схема какая-то нужна, но как-то более укрупненная, что-ли...
Ломаю свою старую тыкву :)
avatar
Нужно так масштабировать блоки — чтоб их композиция не занимала больше определенного формата бумаги, например А1 🤣🤣

То есть если все блоки не влазят — значит нужно увеличивать «вместимость» блока 
Кристофер, 

То есть если все блоки не влазят — значит нужно увеличивать «вместимость» блока

Ну, да… Что-то вроде задачки, обратной декомпозиции... 
avatar

Как и большинство профессиональных программистов не люблю блок схемы. Совсем. Лучше без них!
Алгоритм должен помещаться в голове. Хотя бы блоками. Этот совет и вам для рисования блок-схем. На одном уровне до десятка квадратиков, не больше. Крупноблочно, например: «открываем позицию лонг». А потом, на следующем уровне детализации, этот квадратик разрисовываем подробно. Например: «вычисляем уровень стопа, вычисляем уровень тейка, вычисляем размер позиции, отправляем заявку брокеру, проверяем ответ»...

Вы совершенно правы, в утверждении что шевелить мозгами полезно. Согласен на все 100.

А вот денег там нет.
Увы :(
Иначе бы профессиональные программисты их давно забрали )

Кажется, у Кургузкина в лабиринте иллюзий, встречал. Одно из распространенных заблуждений. Надеюсь, Вы не примете на свой счет. Это психология. Она для всех людей работает. Даже для тех кто знает про это искажение.
Тем кто слаб в каком-то инструменте, кажется что усилия по его освоению  (иснтрумента) будут вознаграждены с торицей. На самом деле это не так. Рынку плевать 10 часов вы потратили на луа или 1000. Он ничего вам за это не должен.

Удачи!

Андрей Хрущев,

Кажется, у Кургузкина в лабиринте иллюзий, встречал. Одно из распространенных заблуждений. Надеюсь, Вы не примете на свой счет. Это психология. Она для всех людей работает. Даже для тех кто знает про это искажение. 

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

Тем кто слаб в каком-то инструменте, кажется что усилия по его освоению  (иснтрумента) будут вознаграждены с торицей.

Тут, какое дело… Как петух гонится за курицей и думает — догоню, затопчу, а не догоню — согреюсь :)

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

Рынку плевать 10 часов вы потратили на луа или 1000. Он ничего вам за это не должен.

Да, уж, забавно думать, что рынок кому-то что-то должен. Просто, там есть деньги, а уж забрать их — это дело техники. Наличие удочек у рыбака еще не гарантирует улова.
avatar
Начинал с lua, но даже средненький алгоритм требует кучи кода для поддержания простых вещей. В результате переписал всё на с++ — теперь легко и удобно поддерживается и расширяется.

Вся система разбита на независимые взаимодействующие блоки, каждый из которых по отдельности довольно прост, и нет необходимости держать в голове все алгоритмы разом, это попросту невозможно (без специальных веществ).
avatar
Денис Г., 

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

На самом деле, куча кода меня не смущает. Для простых вещей — уже написано много решений и в сети их найти не так и трудно.

 В результате переписал всё на с++ — теперь легко и удобно поддерживается и расширяется.

Ну, для меня с++ — это неизведанная область. Пока не ощущаю, что мне тесен QLUA. Тем более, что QLUA позволяет подключать библиотеки  на c++, почти как родные. Думаю, что прежде, чем что-то продолжать — нужно мало-мальски освоить то, с чего начал :)

Вся система разбита на независимые взаимодействующие блоки, каждый из которых по отдельности довольно прост, и нет необходимости держать в голове все алгоритмы разом, это попросту невозможно (без специальных веществ).

Тут, так много ценного мне подсказали, даже статейку ценную на эту тему привели, что мозаика рано или поздно сложится в моей голове.

На счет независимых блоков — это Вы четко подметили. Большинство добрых людей в своих рекомендациях упоминали именно это направление.

Спасибо!
avatar
   С перерывами в работе кода (пропал интернет и проч.) можно бороться легко — записывайте в файл изменение состояния программы (заявка, цена — те параметры, которые важны в алгоритме). При перезапуске программа считывает файл и продолжает работу. 
   Используя стандартные модули сторонних разработчиков вы лишаете себя возможности сделать «свои плюшки».
   Если слова объектно-ориентированное программирование вам мало о чем говорит, то проще со своей блок-схемой и алгоритмом нанять квалифицированного программиста для реализации кода. В этом случае требуйте обязательно подробные комментарии в коде. Потому что править (улучшать, менять что-то и проч.) вам все равно будет нужно 100 %.
Владимиров Владимир, 

 С перерывами в работе кода (пропал интернет и проч.) можно бороться легко — записывайте в файл изменение состояния программы (заявка, цена — те параметры, которые важны в алгоритме). При перезапуске программа считывает файл и продолжает работу. 

Спасибо за Ваш отклик. Тоже так думаю и уже начал идти по этому пути. Файлов получилось не так, уж, и мало. 

Используя стандартные модули сторонних разработчиков вы лишаете себя возможности сделать «свои плюшки».

Чужой код использую только в формате открытого кода. Всегда могу его «допилить» под свои нужды.

Если слова объектно-ориентированное программирование вам мало о чем говорит, то проще со своей блок-схемой и алгоритмом нанять квалифицированного программиста для реализации кода.

Слова про объектно-ориентированное программирование я понимаю слабо, тем более, какая нужна блок-схема для реализации.

Собственно, пост и был о том, что я собираю советы по составлению блок-схемы и формализации алгоритма. Если мне это удастся сделать, то и квалифицированный программист не потребуется, вернее, в его услугах не будет ни капли целесообразности.

В этом случае требуйте обязательно подробные комментарии в коде. Потому что править (улучшать, менять что-то и проч.) вам все равно будет нужно 100 %.

Согласен. Поэтому, следует все делать самому изначально. Ибо, прибыль от программы не гарантирована, а значит гарантировано только знание. А если и знания не получать, то можно просто остаться в минусах.


avatar
pessimist, Насчет «много файлов...». Советую критически отнестись к набору параметров, которые надо писать в файл. Большинство из них будет расчетное или браться из системы квика, тем более, что перезапуск будет осуществлен через какое-то время, и параметры надо будет обновлять. Вам надо записывать только «управляющие» параметры, которые управляют алгоритмом. Много файлов и параметров для записи — не оптимальный путь.  
   Насчет «чужого кода». Имел ввиду предложения типа ТСЛАБа, которые вам давали в комментариях.
   Насчет «объектно-ориентированного программирования». В принципе, если вы программировали на паскале, понять это не составит для вас особого труда. Погуглите. В общих чертах, объект это примерно как функция, но позволяет создать иерархию классов. Например, вы для одного интервала создали алгоритм расчета каких то параметров. Этот расчетный алгоритм и будет объектом. И вызывая его для разных интервалов вы будете создавать массивы параметров по одинаковому расчетному алгоритму. В старом паскале вам потребовалось бы ввести соответствующие массивы и вызвать для них функцию. А в случае объектно-ориентированного программирования массивы будут создаваться автоматически при вызове объекта с новым классом переменной (в моем примере — новым интервалом). Сам прошел через эту стадию понимания такого программирования. Трудно, но реально, если у вас был опыт программирования раньше. 
   Насчет блок-схемы. Для ее создания главное — не умение программировать, а ясное понимание логики расчета и принятия решений.
   Не судите строго за длинный комментарий. Посоветовал, как мог ))) 
pessimist, Насчет «много файлов...». Советую критически отнестись к набору параметров, которые надо писать в файл.

Ну, их все-равно набирается. Во-первых, файл-флаг восстановления после аварии. Чтобы бот понял, что он завершил работу аварийно.

Во-вторых, файл-лог открытых трейдов.

В третьих, файл хранящий текущие координаты открытых окон, чтобы положение окон на экране сохранялось.

Ну и т.д, и т.п.

 Насчет «чужого кода». Имел ввиду предложения типа ТСЛАБа, которые вам давали в комментариях.

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

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

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

Не судите строго за длинный комментарий. Посоветовал, как мог ))) 

Да, что Вы — наоборот, большое спасибо. Я человек, который уже не боится многабукв 

Для меня, наоборот, в некоторых случаях обстоятельность наиболее привлекательна.
avatar
pessimist, Зачем связывать количество файлов сохранения промежуточного положения кода с количеством сохраняемых параметров? Все можно уместить в одном файле, соблюдая четкую последовательность записи-чтения параметров. Ну и еще раз о критическом переосмысливании этих параметров. Например, положение окна — это точно не тот параметр, который надо сохранять в файле промежуточного состояния. В коде изначально задается положение окна на экране. Если вы окно потом переместили, какой смысл запоминать это? Ну, после перезапуска еще раз переместите окно мышкой...
   А последовательность принятия решений и действий — это должен быть ваш продукт, ваши идеи. Так же, как и расчетная часть (или что там еще у вас, не знаю сути вашей идеи) алгоритма. В интернете или в литературе вы найдете только общие слова о риск-менеджменте, условиях входа-выхода и проч. Как эти общие слова реализовать — это вопрос к вашему творчеству и интеллекту.
    Если бы все это было формализовано, да еще верно, так все бы трейдеры заколачивали мешки денег регулярно ))) 
   Удачи в этом нелегком деле
Проектирование это отдельная наука. В крации надо уметь смотреть(простраивать планы) через Объекты(существительное), функции(процессы), организация(управления), материалы. В радиотехнике есть принципиальная схема, функциональная схема, математическая схема, а есть еще сами материалы. 
avatar
Jkrsss, 

Проектирование это отдельная наука.

Ну, как бы да... 

 В радиотехнике есть принципиальная схема, функциональная схема, математическая схема, а есть еще сами материалы. 

Про материалы и принципиальную схему — в школе проходил, а вот про математическую схему в радиотехнике — впервые от Вас узнал.
avatar
pessimist, ну это просто формула i=u/r cosfi, плюс селективность. На рынке это формула риска плюс правила теор вероятности(типа когда зависимые события то умножаются когда не зависимые складываются).
avatar
pessimist, Зачем связывать количество файлов сохранения промежуточного положения кода с количеством сохраняемых параметров? Все можно уместить в одном файле, соблюдая четкую последовательность записи-чтения параметров.

Ну, не знаю… Файлы раскладываю по трем папкам:
VAR — файлы пользовательских настроек
RUN — файлы времени выполнения программы, тригерры штатного запуска, запуска после сбоя и т.п.
DATA — данные открытых трейдов, цены, курсы, расходы — на момент открытия, ну и архивные трейды тоже туда же...

Если вы окно потом переместили, какой смысл запоминать это? Ну, после перезапуска еще раз переместите окно мышкой... 

А если окон много? Да и одно окно на разных компах по разному удобно настроить.

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

Может, я неясно выразился… Риск менеджмент, условия входа-выхода — это не вопрос поста.

Вопрос поста в том, как эти условия наглядно и внятно изобразить (формализовать), когда таких условий становится очень много.

Если бы все это было формализовано, да еще верно, так все бы трейдеры заколачивали мешки денег регулярно ))) 

Вы не поверите, но «всех трейдеров» не существует в природе. У каждого свои цели и методы соответствующие.

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

Удачи в этом нелегком деле

Спасибо! Удача — бывает важнее всех навыков, ведь у тех, кто плыл на «Титанике» были и навыки, и деньги, и здоровье… Им не хватило немного удачи...

avatar
pessimist, Вы, на мой взгляд, уже сформировали представление о том, как должна «выглядеть на экране» ваша программа и как выполняется алгоритм. Это нормально. Но часто мешает переосмыслить взгляд на вещи, который уже в сознании считается окончательным. Поверьте, в процессе написания программы появятся моменты, которые заставят что-то менять, и даже частично переделывать логику. Потому, что вы столкнетесь с проблемами как чисто программного характера, так и параллельно увидите проблемы, связанные с ними или с логикой вариантов сценария, которые всплывут в процессе написания и осмысления кода. Насчет файлов и множества параметров — я спорить и настаивать не буду, я уже высказал свой совет, тут ведь еще дело вкуса каждого. Но в качестве иллюстрации — про окна — какая разница сколько окон, каждое окно в программе изначально создается в заданном месте экрана. Изначально задали эти места в нужном вам порядке, и вопрос решен, смысл запоминать эту информацию. Несколько экранов, различающихся размером и шрифтом? Не проблема — задайте параметр в исходных данных (например, он равен либо 1, либо 2), а в программе задайте два набора мест расположения окон (для экранов 1 и 2). При запуске задайте значение исходного параметра типа экрана и окна будут размещены нужным вам образом. И сохранять эту информацию не надо....
   Формализация — это своего рода искусство, а потому этот процесс разные люди реализовывают по разному даже в рамках одинаковых критериев. И еще — порой формализовать даже простые для человеческого мозга вещи — абсолютно не тривиальная задача. В качестве примера могу привести вопрос формализации тренда, да и тот же риск-менеджмент. Как "… наглядно и внятно изобразить (формализовать)..." условия вы нигде и не найдете по этим причинам, да потому, что такого представления нет, и быть не может (как минимум — на текущем этапе), иначе всем ими бы и руководствовались. 
   «Все тейдеры» — существуют просто потому, что они физически есть. Согласен, что их задачи не тождественны полностью, но каждый из них стремится получить прибыль. И если бы существовал абсолютно гарантированный способ такой торговли, да еще описанный в массах, да еще и формализованный — все бы торговали в плюс. Вопрос только в том, кто бы тогда обеспечивал их прибыль денежным ресурсом ))) Я считаю, что в самом общем смысле рынок всегда позволяет заработать, независимо от размеров ДЕПО и проч., вопрос в том, чтобы увидеть эту возможность и успеть ею воспользоваться в моменте, а не пост-фатум. 
   Еще раз оговорюсь — моя писанина — это не нравоучение и т.п., просто делюсь собственным опытом в общих чертах, возможно он будет как-то полезен. ))) 
pessimist, бодрый вечер!
Удалось реализовать задуманное? 
avatar
asfa, 

pessimist, бодрый вечер!
Удалось реализовать задуманное? 

Доброго времени суток!

Смотря, что -  считать задуманным. Если торговую идею — то нет. Она была построена на гипотезах и одна из гипотез оказалась ошибочной.

А если считать тему поста — то в каменты мне накидали кладезь полезной информации.

Единственный камент от автора с ленивым ником — оказался самым лаконичным и самым точным ответом на запрос поста — там ссылка на бесплатный онлайн-сервис по комфортной отрисовке блок-схем с интуитивно понятным интерфейсом 


avatar
pessimist, понятно.

Вопрос. Надо автоматизировать простую штуку: при снижении до определенного уровня надо продавать фьючерс. Но если при обратном движении будет достижение/превышение уровня, тогда нужно откупать на том же уровне. И так неограниченное число раз.

Lua-скрипты умею запускать, формулы и простой код понимаю 
Что можете посоветовать?
avatar
asfa, 

Что можете посоветовать?


Раньше был хороший бесплатный сайт, где автор буквально разжевал основные действия на Lua, которые нужны для решения Вашей задачки.

Однако, со временем — сайт стал просить за информацию денежков.

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

Самое сложное в Вашей штуке, на мой взгляд, это формализовать «определенный уровень». То есть, есть два варианта действий:

1) Программа сама определяет «уровень»;

2) Вы задаете программе «уровень» сами путем ввода с клавиатуры значения цены, вокруг которого свистопляска и происходит.

avatar
pessimist, напишу, спасибо!

Самое сложное в Вашей штуке...

всё просто — это одно число, которое задаётся руками на долгое время = до экспирации, т.е. на 3 месяца.
Т.е. п.2)
avatar
Блоксхемы — это зло. Запрограммировать простую логику можно, как только она усложняется появляется много ветвлений которые невозможно удерживать в фокусе внимания, здесь подойдет классическое программирование algotrading101.com/learn/backtrader-for-backtesting/
avatar

теги блога pessimist

....все тэги



UPDONW
Новый дизайн