Блог им. Therollingstones

Начало разработки.

Не волнуйтесь, вы все это запрограммируете и сделаете, я обещаю. В результате мы хотим получить программу, рассмотрим её общие принципы с другими программами, которые мы научимся программировать. Программа читает входные данные с клавиатуры, параллельно она автономно читает информацию из нужных баз данных. Вы можете провести параллель со многими программами, которые читают статистику реального времени и проводят сравнения с базами данных. Программы могут выполнять разные цели, работать с разной информацией, но они будут составлены по похожим принципам, давайте рассмотрим их. Может вы захотите написать программу которая будет оценивать ленту котировок, которая будет читать историю из баз, насущный пример. Самое главное, мы будем разбирать готовый рабочий код. Который вы сможете переработать для своих целей. Мы пройдем абсолютно все этапы от A до Я. Калькулятор это целая система механизмов — запуск работы с перехватом фатальных ошибок. А как же быть с цикличностью? Если вы ввели неправильные данные, калькулятор должен исправить ошибку, очистить неправильные символы и снова быть готовым к запросу. Также было бы не плохо записать в файл x = 100, y = 200, а потом программа будет читать переменные из этого файла, например если мы запишем x+x и нажмем Enter программа ответит = 200. На данный момент мы уже согласились, что программа должна перехватывать фатальные ошибки, должна исправлять рабочие ошибки, читать базу данных. Также помимо пред загрузки было бы хорошо добавить переменные прямо в процессе вычислений. Также в программе есть блок который вычисляет математическое выражение непосредственно. 

Cамой большой сложностью для новичка, является создание первого проекта и подключение библиотек, мы вместе запустим первый проект и установим библиотеки, вы уже сегодня начнете выполнять упражнения из этого крутого курса 1drv.ms/b/s!Aik_YYEGJIBwhYN6NJCJt4LDnkoYTg(который кстати уже слушал Кембридж, а теперь Smart_Lab). После начала  вы довольно быстро дойдете до главы 6, в первых главах нет ничего принципиально сложного, вы даже начнете программировать калькулятор из главы 6, но если вы начнете подходить к изучению книги профессионально, вы захотите перебрать этот калькулятор от и до, если делать это самостоятельно и одному, это долго … мы сделаем это вместе.

В этом первом топике мы подготовим все для разработки и запустим первый проект, после этого вы сможете начать самостоятельную проработку книги. Во втором топике, мы разработаем некоторый циклический прототип. А вот потом, мы начнем разрабатывать калькулятор, причем, мы будем изучать готовую отлаженную модель. Потом соберем еще несколько фундаментальных программ. В результате у вас будут все необходимые библиотеки, которые вы будете понимать, в общем вы будете подготовлены так, как это видит создатель языка C++. Ну а потом вы уже сами почитаете книгу и разберетесь. Моя задача обеспечить успешное прохождение этого курса. C++ очень похож на C#, Fortran или Java, вам не обязательно будет зацикливаться именно на этом языке.

Начало разработки.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

1) Если у вас проблемы с Windows, вы можете скачать самый последний официальный пробный Windows бесплатно www.microsoft.com/en-gb/software-download/windows10. Он ничем не отличается от того пиратского Windows который вы скачаете на «проверенном сайте» к тому же вы получаете поддержку от корпорации Microsoft, в любом случае, чтобы не случилось, вы всегда можете поставить новый Windows, у меня всегда есть Windows на флешке, установка Windows и дополнительного ПO занимает около часа. Предлагается множество способов установки.


Начало разработки.


Можно просто обновить компьютер, а можно скачать установщик. Сказать честно, обновил компьютер я всего один раз, когда у меня была пиратка, а потом всегда ставил Windows с флешки. Давайте разберемся как записать Windows на флешку. Скачаем инструмент и запустим на компьютере.Начало разработки.
Инструмент установки просит согласиться с условиями использования. Читаем, соглашаемся. Нас опять спрашивают, мы можем просто обновить компьютер, а можем создать установочный USB или DVD, выбор за вами а я выбираю создание установочного носителя, Next.
Начало разработки.


Выбираем параметры по умолчанию, Next.

Начало разработки.



Программа предлагает записать ISO сразу на флешку или просто скачать ISO на компьютер, чтобы потом провести запись на флешку или диск. В самом начале, у меня не получилось сразу записать ISO на флешку(загрузка останавливалась и все тут), я не знаю как развить этот вариант, попробуйте сначала его, зато я точно знаю как записать ISO на флешку, предварительно скачав его на компьютер, используя другую официальную утилиту от Microsoft. Выбираю ISO file и жму Next.
Начало разработки.


Нужно выбрать место загрузки ISO, качаю просто в загрузки и все тут. Скачивание займет какое-то время. После загрузки будет установка, после установки программа предложит записать файл на DVD или флешку, видимо это обновление, можете попробовать данный вариант или просто придерживайтесь инструкций, просто нажмите завершение после установки. Вроде бы там будет кнопка finish, посмотрите в переводчике если я ошибаюсь, но смысл команды должен быть — завершение, а не отмена. В любом случае будет две кнопки))


Теперь нужно скачать официальную утилиту записи ISO на флешку.

www.microsoft.com/en-us/download/details.aspx?id=56485

Начало разработки.
Выбираю Английский язык и жму Download. Выходит еще один запрос, выбираю Американскую версию и жму Next. Скачиваю программу и запускаю. 
Начало разработки.


Программа просит указать ISO файл, я указываю на Windows.iso который сохранил в загрузках, Next
Начало разработки.

Дальше необходимо выбрать USB носитель, Next
Начало разработки.

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


Программа предложит очистку носителя, обязательно нажмите Erase USB Device, потом подтвердите и запись начнется.
Начало разработки.


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


2) Для разработки понадобится Visual Studio, её также можно скачать бесплатно,  visualstudio.microsoft.com/
Начало разработки.




скачивайте Community 2017(ну или любую другую), и выполняйте установку, там все очень просто. Рискуйте использовать браузер Microsoft Edge, минимальный бонус даже в том, что видео в 1080 даже на самом простом компьютере можно смотреть бесплатно. Также я рекомендую создать учетную запись в Windows и использовать бесплатное облако OneDrive, для хранения общей библиотеки кода. Если инопланетяне украдут ваш ноутбук вы все равно сможете получить доступ к коду с другого компьютера, пока они будут подбирать код. Мне было бы очень обидно потерять например все наработки вместе с компьютером. Сделайте все это сразу и спите спокойно.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Итак, в результате у нас имеется новый Windows, среда разработки VisualStudio, самое время создать новый проект на языке C++ и добавить библиотеки. Запустите Visual Studio, выберите file>>New>>Project
Начало разработки.
Выберите Visual C++, Windows Desktop, Windows Console Application, название проекта и заметьте, я выбрал место сохранения облако OneDrive(но, это не обязательно) 

Начало разработки.


Может такое быть, что Visual С++ не будет в окне выбора, тогда нужно сделать следующее. Повторите инструкции file>>New>>Project, и кликните по ссылке установщика Visual Studio



Начало разработки.


Можете сразу закрыть Visual Studio и ожидать открытие установщика. В результате вы должны найти пункт Desktop development with C++ и поставить галочку, затем в правом нижнем углу нажать клавижу модификации, все. Так как у меня все установлено я не смогу моделировать процесс, когда установка завершится, создайте новый проект на языке C++
Начало разработки.
В результате вы увидите вот такое окно, это чистый проект на языке C++ с минимальным кодом, нам осталось лишь поставить библиотеки.Начало разработки.
Давайте скачаем стандартную библиотеку инструментов, вы убедитесь потом что мы выполняем лишь вводные инструкции книги, только более иллюстрировано. Вот главная страница поддержки книги  www.stroustrup.com/Programming/  вы еще рассмотрите её более внимательно. Найдите раздел Начало разработки.
Ну или вот ссылка на него  www.stroustrup.com/Programming/PPP2code/  и кликните по ссылке  std_lib_facilities.h в результате перед вами откроется обычный текстовый код. Теперь нужно снова открыть наш первый проект и нажать комбинацию клавиш, CTRL+O, в результате откроется корневая папка проекта.Начало разработки.
Создайте новый текстовый файл и назовите его std_lib_facilities.h и измените разрешение файла с .txt на .h  на некоторых версиях, разрешение файла срыто по умолчанию, в этом случае, зайдите в мой компьютер, просмотр и кликните опции Начало разработки.

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



Начало разработки.


В результате из нового текстового файла создайте std_lib_facilities.h да да да, это просто переименованный текстовый файл формат которого изменен с .txt на .h  в результате вы увидите вот это Начало разработки.
А теперь копируйте текстовый код  из std_lib_facilities.h с сайта поддержки, ссылку на который я приводил ранее в наш файл std_lib_facilities.h который мы создали в корневой папке. И сохраните изменения, все библиотека установлена, давайте запустим программу! Уберите абсолютно весь код который был сгенерирован по умолчанию при создании проекта, и копируйте в проект вот этот код   1drv.ms/t/s!Aik_YYEGJIBwhcwNHw-MK2IWB0Xaxw

после этого нажмите CTRL+F5 И ЗАПУСТИТЕ ПРОГРАММУ!!! уРА!!!!

Начало разработки.



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

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



    ★24
    80 комментариев
    обязательно давайте обратную связь об ошибках! 
    avatar
    C++, по моему, не лучший выбор для программирования торговых стратегий. Это больше системный язык для низкоуровневого программирования.

    Хотите писать быстрых и стабильных роботов? Разбирайтесь в qlua, и программируйте прямо в терминале.
    Хотите мощности языка и работы с БД — берите C#.

    p.s.
    Хотите стильного ретро — программируйте на Турбо Паскале :)
    avatar
    Turbo Pascal, сейчас юнити учу и C#,  решил все же юнити и управляемый C# для начала, а потом уже С++ Direct и шейдеры …. ужас … ))))))))))))  с мнением по С++ полностью согласен, но согласитесь, профи напишет на C++ все что угодно, как и на турбо паскаль.

    Просто тут очень богатая книга на практику. Ну как не уметь писать грамматику? 

    avatar
    therollingstones, смотря для чего все это.
    Юнити — это, кажется, для программирования игр, не?
    Зачем это в торговле?
    avatar
    Turbo Pascal, ну я просто рассказываю, мы как то обсуждали, просто … про юнити я тут пока не буду писать, там знания C# = C++ нужны
    avatar
    Turbo Pascal, Может я свой терминал хочу написать)
    avatar

    therollingstones, для этого сначала нужно стать профессиональным трейдером, чтобы понимать из чего должен состоять True терминал.

    Это примерно 7-10 лет.

    По прошествии этого времени вам вряд ли захочется программировать.

    Вы просто будете брать деньги с рынка и нанимать программистов.

    Ну а если не станете Pro трейдером, то и за терминал браться не стоит.

    Ибо спроса не него не будет.

    Turbo Pascal, Вы когда-нибудь пробовали запустить на QLua одновременно больше 20-ти ботов? Я пробовал, и могу дать однозначное заключение, что встроенный в квик интерпритатор Lua — не лучшая среда для реализации всей логики «тяжелых» роботов.
    Однако, справедливости ради, стоит отметить, что первых своих роботов действительно имеет смысл начать писать именно на этом языке.
    avatar
    Prophetic, на qlua лучше всего написать универсальный «обменник» со своей внешней системой, где уже будет логика и заброс команд обратно в квик.
    avatar
    Turbo Pascal, А вот с этим утверждением я согласен на 100%. Чем я благополучно и пользуюсь последние несколько лет.
    avatar

    Prophetic, какие библиотеки используете для спаривания LUA с внешним миром ?

    Тарас Громницкий, QUIKSharp
    avatar

    Prophetic, ага.

    Статьи на их сайте читал.

    Очень даже норм.

    Как дойдут руки сделаю свою связку по их рецептам.

    Тарас Громницкий, Честно говоря, не понимаю о каких «статьях на их сайте» идет речь. Это проект с открытым исходным кодом:
    github.com/finsight/QUIKSharp/issues
    Основная задача — повторить весь функционал QLua, встроенный в Квик. На сколько я понимаю, где-то на 99% эта задача выполнена. Какого-то отдельного сайта, посвещенного этой библиотеке я не встречал. Внутри проекта есть тестовые демо-приложения, для облегчения процесса знакомства с библиотекой и процессом написания торговых роботов. Если Вы знакомы с программированием и с C# в частности, то никаких дополнительных статей Вам скорее всего не потребуется.
    avatar

    Первая и самая критичная ошибка — это выбор языка.

    Для обучения азам программирования C++ не подходит.

    А с учетом уровня смартлаба это справедливо вдвойне.

    Второй вопрос к задаче.

    «Hello world» — это норм.

    А вот дальше должно быть что-то простое и при этом полезное в трейдинге.

    Чтобы у ученика не опустились руки и появился первый опыт.

    Например чтение/запись файлов, чтобы юзер смог поработать с .tri файлами Квика.

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

    Java или C#.

    Вот видео в тему

    Тарас Громницкий, оййй как все сложно, не так все и сложно … вы следите за блогом)
    avatar
    Тарас Громницкий, 

    Конкретно для обучения азам программирования C++ не подходит.

    Какие все нежные стали.
    Я азам программирования на PL/1 на ЕС-1066 учился, потом на ассемблере для 8086.

    А сейчас — «ой, это слишком неудобный язык для обучения, другой неудобный для этого, третий неудобный для того/сего».

    А потом вон кодеры кбгобот-style вырастают.
    avatar
    Turbo Pascal, а потом они пишут программы — «которые почему то не работают» из книги 
    avatar
    Turbo Pascal, Ну и как постигнуть это программирование и какой выхлоп??? Вы грите а то годами спорите а простой чел вас читает и патеет!!!
    avatar

    Turbo Pascal, начнём с того, что PL/1 и ассемблер вы изучали от того, что других языков тогда не было.

    Либо ваши преподы безнадёжно отстали от жизни.

    Или учились в вузе на какой-то специфичной специальности.

     

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

    Не рассеивать сознание избыточной информацией и не перегружать его.

    Потом пожалуйста.

    Но не сразу.

    Вы ведь начиная качаться не хватаете штангу в 50 кг.

    Тут ровно то же.

     

    А какбыроботы вырастают от жажды наживы.

    К сожалению даже среди профи в любой области подобных людей масса.

    Это следствие дикого капитализма где человек человеку корм.

    Turbo Pascal, я писал на алголе, фортране, VBA, трех разных асемблерах, Си с стиле Карниган_Ричи и на специальном языке для матричного процессора. Писал все, от драйверов и управления периферийными устройствами до сложной цифровой обработки сигналов. Но современное программирование очень далеко ускакало от языков калькуляторного типа. Стиль мышления сменился, а не просто языки.
    avatar
    Тарас Громницкий, ну вот тут я готов спорить, сам создатель C++ говорит что обучает ключевым принципам которые 150% понадобятся в реальных приложениях, думаете он ошибается? К тому же я в начале довольно четко законспектировал суть определенной отрасли программ.
    avatar

    therollingstones, у реальных приложений есть область применения.

    Он говорит о достаточно низкоуровневых вещах, которые 99% людей на смартлабе просто не нужны.

    C++ был создан именно для этого и этим обусловлена его сложность, граничащая с гибкостью.

    Тарас Громницкий, Ну на че попроще всегда можно время потратить… 
    avatar

    therollingstones, поверьте мне в Java и C# заё**в достаточно.

    Это становится ясно по ходу дела.

    Всё не так просто.

    Я смотрю ты постиг программирование!!! Када ты начинал а это 2 года назад ты обещал мне робота слепить!!!
    Так то я уже два года жду!!!
    avatar
    SEREGA, я удочки раздаю, мы тут обсуждали, что если я напишу робота на C++, в терминале все равно нужно программировать, чтобы он принял сигнал, тогда давай 2л$ и я напишу терминал, ))
    avatar
    therollingstones, Всмысле платно чтоле??? Ты ведь грил что стопудова сделаешь!!! 
    avatar
    SEREGA, алгоритм я легко напишу, но ты сам его подключай бесплатно.) Кому надо тот подключит, на ловца и…
    avatar

    therollingstones, алгоритм — это примерно 20% робота.

    Остальное — это инфраструктура, которой он пользуется и UI.

    Тарас Громницкий, это я понимаю. И мне сейчас глупо будет спорить об этом)
    avatar
    Тарас Громницкий, алгоритм — это 95% содержания робота и 5% его кода. ИМХО. 
    avatar

    SergeyJu, с точки зрения создания идеи и итоговой ценности да.

    С точки зрения процесса программирования написал выше.

     Зачем изучать программинг ??? Если искуcственный интеллект вавсю шпрехат???
    avatar
    SEREGA, ТРОЛЬ +++ )
    avatar
    therollingstones, Че троль -то??? Я два вопроса вам задал и ответа не получил!!! Зачем трата времени про что вы грите если квантовый комп это всё решает за секунду!!! это к примеру печатать и продавать книги при развитом интернете 

    avatar
    SEREGA, а кто по для квантового компа пишет, квантовая пустота?)
    avatar
    therollingstones, Подходит то время када про что вы грите будет невастребовано будет достаточно пользоватся модулями потому как оных и сейчас терабайты!!! а сами модули будут создаватся именно квантовым компом!!! Это супермашина!!!
    avatar
    SEREGA, я бы поспорил.) 
    avatar
    therollingstones, Это кароче землю капать лопатой!!! или экскаватором
    avatar
    SEREGA, не) нужно делать точный алгоритм и комп его просто быстро выполняет.
    avatar
    therollingstones, Ты пытался вроде пристроится програмером??? не получилася ??? или просто джунеоры уже не нужны??? тема какая у вас
    avatar
    SEREGA, я еще не понял, вижу что — то, )
    avatar

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

    В трейдинге подобные вещи приносят лишь убыток.

    Смотрите продажу роботов.

    Тарас Громницкий, Ну только!!! Согласен!!! Я закодить модули могу у разных програмёров а саму программу соберёт третье лицо он даже не шипко то и обратит внимание!!! (да и полуавтомат!!!)))
    avatar
    cowboy, ойой я не сторонник Ганна, Элиота и пр) 
    avatar
    О, понеслась! Сейчас тебе расскажут, что C++ отстой, потом, что нужно использовать другие фреймворки, потом — другие алгоритмы =)
    avatar

    Cheshire Cat, не отстой.

    Просто у него своя сфера применения.

    Нет смысла забивать гвоздь отвёрткой, а саморез вкручивать молотком.

    vladimir55, значит проекты у вас не сильно большие.

    В средних и крупных проектах остро встаёт вопрос архитектуры.

    Подбор стека технологий под текущий и перспективный функционал.

    Декомпозиция элементов системы, создание интерфейсов взаимодействия и расширения.

    Тестирование и документация.

    В общем помимо языка есть масса смежных вещей.

    перед тем как изучать си++ сначала изучи это
    бу-га-га-га"!!!
    avatar
    Kapeks, бл(((
    avatar

    vladimir55, в области трейдинга есть проекты разных размеров.

    Поэтому имеется место стеку технологий, архитектуре и даже документации.

    Правильно ли я понял, что Вы хотите написать  оболочку для SmartCom (терминал и фреймворк для роботов)?

    //Imhо, Вы «замучаетесь пыль глотать», как сказал кто-то. 

    " — Тебя сразу убить или желаешь помучиться?" ©

    Если есть желание помучиться самому + помучить присоединившихся, тогда нет вопросов.

    Если нужно делать деньги на бирже, тогда лучше использовать TSLab (платно) или OSA.Engine (бесплатно): http://o-s-a.net/ (но там С#).

    Навскидку, два человека с этого ресурса, которые пытались решить аналогичную задачу:
    Сергей Егоров https://smart-lab.ru/profile/SergeyEgorov/
    Александр77 smart-lab.ru/profile/Alexand77/

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




    ti-m, пусть фигачит. это же «интересный проэкт»!!! почти как текстовый редактор и сайт на пэ-ха-пэ!!!


    avatar
    ti-m, я, к слову, решил. До сих пор крутится.
    avatar
    ti-m, цель научить программировать, для начала.
    avatar

    vladimir55, позвольте придраться.

    «Но я точно знаю, что робот по этому ТЗ зарабатывал бы.
    И копать надо где-то в области машинного обучения.»

    Вы точно знаете или копать надо где-то в области машинного обучения ?

    vladimir55, хм… интересно.

    А зачем там машинное обучение ?

    Необходимо компьютерное зрение ?

    Т.е. визуальное распознание неких формаций ?

    Алена c++ уже читал? =))
    avatar
    Андрей К, а какая книга конкретно?
    avatar
    therollingstones, Алена c++ — это женщина программист. По имени Алена. Работает в Майкрософт разрабом на c++. Ведет блог Алена c++, ну или вела. Писала про интересные вещи.
    Пользуется авторитетом в инете
    avatar
    Андрей К, оккккк! сенкс)
    avatar
    therollingstones, а есть ссылка конкретная?) там много видосов
    avatar
    Андрей К, http://alenacpp.blogspot.com/

    ?
    avatar
    therollingstones, да
    avatar

    vladimir55, вы смотрите в стакан.

    Биды, аски, спреды и скорости их изменения можно собирать программно в реальном времени.

    Вопрос в динамических формациях.

    Есть ли их определение или общая структура ?

    vladimir55, по идее нужно какое-то время пособирать эти данные.

    Зафиксировать в какое время рынок стоял, а в какое летал во все стороны.

    И выделить закономерности в собранных данных для обоих крайних случаев.

    Вообще для понятия «летает во все стороны» есть волатильность.

    SECRET, стабильность софта зависит от разработчика, а не от языка.

    Про скорость согласен.

    SECRET, количество прослоек конечно влияет, но не так критично, как вам видится.

    Иначе до сих пор писали бы в двоичном коде.


    теги блога therollingstones

    ....все тэги



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