dr-mart

Продолжаю изучать C#

Примерно 22 часа чистого времени уже потратил. С чего я начал в этот раз, я уже подробно тут описал. Чуть раньше (12 января) я задавался вопросом как ваще вызывать функцию подключенной библиотеки. Итак, что я делал с того момента? Я вернулся к книжке Изучаем C#, которую забросил читать на 255 странице 3 года назад. Сейчас начал читать её с начала, попутно выполняя все задания в C#. Сейчас дошел до 145 страницы пока. Читая книгу, и выполнив задание, я стал сам себе рассказывать (записывая экран с комментариями на ютуб), что я только что сделал. Это помогает мне осмыслить суть процессов.

Параллельно смотрю мануальчик по библиотеке SmartCom, чтобы понять, что мне надо вообще понять. Вроде пока моё примитивное знание говорит мне, что можно подрубить библиотеку через:
Продолжаю изучать C# 
Пока к сожалению что-то идёт не так:
Продолжаю изучать C#

Ну ничего, я пока ещё не претендую, чтобы хоть что-то работало, потому что почти методом тыка действую. В своей книжке я видимо не дошёл до такого понятия как «Событие», но что вот я вижу в мануале по смарткому:
Продолжаю изучать C#
Идёт описание «события» с кучей параметров. Пока из учебника я понимаю, что это функция, которая принимает в себя параметры, указанные в скобочках. С другой стороны, мне непонятно, ведь функция UpdateQuote должна наоборот передавать нам параметры? 

Ну типа моя логика говорит что синтаксис должен наверное быть примерно следующим:

Double martQuote = last.UpdateQuote(SIH6); — типа получить последнюю котировочку по SIH6.

Как на самом деле работать с синтаксисом такого события, я пока не знаю и даже не догадываюсь. Надо ещё почитать)) Глядишь страниц 150 по книге ещё пройду, уже всё заработает.

P.S. Супер-программисты, не ржите надо мной, это ж ради удовольствия и общего развития)
★9
69 комментариев
Ржать не будем, до смешных ошибок ещё надо дорасти.
Лучше прокомментируй, что стало с топиками Решпекта сегодня? :)
avatar
я наверное дурак, но мне такие события не ясны…
avatar
а на хрена тебе учить С# када у тебя работает толпа программеров?
avatar
shortillo, хочет поди code review регулярно проводить)
avatar
Никто не смеется. Обучение любым навыкам всегда идет на пользу! Читаю с интересом! :-)
вообще, там должно быть событие на которое подписываешься и которое отвечает за обновление котировок.

Double martQuote = last.UpdateQuote(SIH6);  - этот предполагает что когда дело дойдет до него, то в martQuote  просто закинет последнюю котировку, но в таком случае тебе придется вызывать это миллион раз, и не будет обновляться в автоматическом режиме.
avatar
Тоже изучаю С#, все получится главное не забрасывать…
avatar
Ключевой момент в том, что прежде чем нажимать Connect, надо подписаться на события. На события установления соединения, на события получения данных и так далее...

Надо в книжке про C# прочитать главу про event-ы.
avatar
SergeyEgorov, во
этот аспект пока за рамки моей компетенции выходит
я пока не понимаю что значит подписаться на события)
Спасибо за камент
Почему С#, а не Java?
avatar
grevlanik, ну потому что большинство людей почему то именно C# используют
geekbrains.ru/ предлагаю начать с этого
я не аффелирован никоим образом
avatar
>мне непонятно, ведь функция UpdateQuote должна наоборот передавать

не функция, а метод )
функция относящаяся к классу
наверняка есть перегрузки, может и принимать и передавать параметры, которые могут быть и не обязательные
короче поставь курсор на имя и нажми f12 там все увидишь
avatar
ну да конечно… биржа пройденый этап… книгу написал… счас тима изучит си и будет ваять книгу про программирование… психологические аспекты кода… дисциплина и код… копипаста как вариант усреднения кода... 
avatar
ves2010, типа того
Тимофей Мартынов, 
я вот старкрафт2 за зергов прошел… счас думаю потратить 400 геймечасов на фолаут4… жаль борделендсов больше нет
avatar
Это точно сайт о трейдинге? :)
avatar
Том Сойер, точно
помню пытался начать с Изучаем с#, грыз через не могу, все без толку. Троелсен мне зашел в разы легче
зато благодаря Изучаем с# я бросил на время с# и прокодил питон и R, за это весьма благодарен авторам
avatar
MTrader, если с нуля, то Шилд наверно лучше будет… Хотя сам тоже Троелсена пользовал, но не с нуля...

MTrader, троелсен книга у меня тоже есть
но она выглядит страшнее!
Тимофей Мартынов, тебе шашечки или ехать? Это не рекомендация была, но личный опыт. Я не распробовал изучаем сишарп. Ты сам помню писал про тонкую грань оптимальной нагрузки для изучения чего либо, в данном случае лучше задай вопрос не перешел ли ты эту грань в область непосильного понимания, я думаю перешел и мотивация играет против тебя, тут надежда только на инсайт, что снижает вероятность освоения но увеличивает скорость при сексесе
avatar
Что-то я не понимаю, ты изучаешь сишарп что бы прогать под стокшарп потом или что?
avatar
Максим Дмитриевский, я думаю, для того чтобы прогать непосредственно под API SmartCom, избегая лишнюю прокладку в виде StockSharp.
avatar
Alexand77, кроме коннектров, которые в s# по сути и есть прокладка, в s# огромное количество функционала, который облегчит Вам жизнь… На то, что я, например, делаю за 15 мин, Вам придется потратить месяц… И не факт, что Ваш код будет лучше... 
Сергей Гаврилов, мне сначала надо программирование изучить
Сергей Гаврилов, я не спорю абсолютно с этим, кроме того, я в S# писал и более менее разобрался. 
Но меня на тот момент времени не устроил уровень бесплатной поддержки — предлагали пройти обучение на почти любой вопрос. Кроме того, как то завязываться не хотелось на непонятных мне людей, вот у них же там была бесплатная лицензия — в какой то момент она может стать платной (если уже не стала, я просто не слежу). 
Поэтому в какой то момент я решил по хардкорному, без прокладок :) Да, потратил и больше месяца и не факт, что мой код лучше, зато он мой, я его полностью знаю.
А с S# последней каплей стало, когда после очередного обновления перестали приходить свечи (это давно было, года два назад). Я написал в поддержку, мне сказали да, есть такое дело со SmartCom, мы его в очередь поставили, так как SmartCom не является нашим приоритетом, то мы когда-нибудь поправим, следите за обновлениями. Я следил месяца три — не поправили и перестал следить.
avatar
Alexand77, у меня есть ряд моментов, к-е я бы хотел попробовать закодить чисто с целью автоматизации
Тимофей Мартынов, так может в этом случае не стоит опускаться до API, а переместится на уровень повыше, типа того же S#, TSLab или вот там внизу какую-то неизвестную мне библиотеку предлагают? 
На уровне API даже для того, чтобы автоматизировать закрытие всех позиций в конце дня — кучу всего придется «ненужного» написать, о чем ты сейчас даже не подозреваешь. 
avatar
Максим Дмитриевский, просто чтобы прогать)
Тимофей Мартынов, с такими лукавым настроем просто прогать не получится :)
avatar
Тимофей, переменные ip, порт, логин, пароль заполнены?
в вашем коде они пустые, если только не заполняются в другом месте.
avatar
Андрей К, заполнены выше, все норм
Тимофей, рекомендую видеоуроки вот этого индуса:
www.youtube.com/watch?v=YR6fxe1wa8g
Там С++, правда, но применительно к .NET разница минимальная, всё тоже самое, практически.
avatar
вот начиная с bool martConnect можно убрать отсюда, это не тут нужно.
Вместо этого подпишитесь на событие об удачном соединении:
SmartCom.Connected += new _IStClient_ConnectedEventHandler(SmartCom_Connected);

Потом собственно обработчик этого события :

private void SmartServer_Connected()
{
   //а вот тут, то что должно происходить по событию успешного //соединения и сделайте, например вывод окошка.
}

avatar
Alexand77, так, подписку на события мы ещё не проходили

спасибо за камент)
Тимофей Мартынов, ну все, считай прошел :)  Алексей ниже тот же самый код практически привел, еще и с событием о дисконнекте.
avatar
Почитал доку. UpdateQuote не передает. Это срабатывает событие при изменении котировки на рынке. Груба говоря, как котировка изменится, сработает эта функция.
avatar
Андрей К, спс
смартком работает по событиям, то есть запросил что то, и ждёшь соответсвующего события в ответ. главное не забыть подписаться на нужный обработчик. для твоего примера подключения нужно сделать так:
avatar
Алексей, спасибо
но мне надо пока понять, как это работает в теории
Тимофей Мартынов, в теории это вот так выглядит. Надо читать сверху вниз.
avatar
Тимофей Мартынов, так я вам и про теорию могу :-)
1. Смартком «событийная фигня» если хочешь что то получить то должен:
1. создать обработчик события.
2. отправить запрос.
например:
что бы узнать что подключись к серверу — добавляем обработчик SmartCom_Connected(); затем отправляем запрос типа «горшочек вари» :-) SmartCom.Connect(...). всё ловим ответ
для коннекта конечно сложней так как нужно ещё и диконект ловить, да и если мы уже подключены то ответа никакого не будет. но в теории работает так. если что спрашивайте я нём собаку съел :-) и не одну
avatar
Тимофей, здесь как раз про SmartCom — уроки по разработке на библиотеке под SmartCom:
www.youtube.com/playlist?list=PLZYekWHmh5oG6iuCQsfA2Rp6ieORpMToo
Библиотека опенсорсная и хорошо покрыта тестами — по сути тесты это небольшие примеры как работают части этой библиотеки, в том числе взаимодействие со SmartCom.
Здесь C# — короткие уроки: www.youtube.com/playlist?list=PLZYekWHmh5oGyvXSaqaXPL9nOCLjGl1SA
avatar
wyg, так это уже библиотека над SmartCom, она не поможет изучить работу с API, а только запутает. 
Это наверняка хорошая библиотека, работающая со SC, но по сути в видео описывается, как работать с ее абстракциями, она скрывает API от пользователя. Хотя я до сих пор не понимаю, что хочет Тимофей, или писать самому с нуля под API или просто сговнякать какой то секретный алгоритм — в этом случае и TSLab подойдет.
avatar
Alexand77, он хочет как-то запустить тестовую программу TestConnect. Но что-то там сам пишет и оно не работает.
Счастливый Конец, ну TestConnect должен запускаться просто без «как-то».
А на понимание логики, как устроен TestConnect у меня ушло довольно много времени, там свои прибабахи есть, которые лучше было бы и не знать, не много бы потерял. 
Мне бы кто тогда, без воды все рассказал на примерах с пустого листа за пару дней, я бы сэкономил кучу времени. 
А чужой код всегда чужой код, если хозяин не поясняет то разбираться можно долго.
avatar
Alexand77, «она скрывает API от пользователя.»
Библиотека хорошо покрыта тестами, где видно как именно работают части этой библиотеки, в том числе взаимодействие со SmartCom. Это хороший пример того как можно сделать. Всегда лучше если есть куда посмотреть.
avatar
wyg, я же не против. Тут главное в чем цель, разобраться как работает API SmartCom или за одно еще разобраться как работает чья-то, пусть и хорошая, но проприетарная, библиотека и как она взаимодействует со SmartCom.
avatar
Alexand77, код там весь открыт в отличии от S#
avatar
wyg, это просто отлично, жаль я про вас раньше не слышал.
avatar
Alexand77, автор библиотеки smart-lab.ru/profile/SergeyEgorov/

avatar
 Тимофей, я взял TestConnect как затравку, сделал так чтобы оно работало, а дальше выкинул весь ненужный мусор из нее (в частности бары). Не стал создавать новое приложение, просто переделал под себя. Робот под SmartCom, 5 месяцев полет нормальный.
Счастливый Конец, сначала я так же поступил, про это напейсал первую статью в своем блоге. Но за это время поднатаскался в C#, в целом вспомнил программирование чему учили в универе, и напейсал с нуля что то вроде библиотеки, не такой навороченной как S# конечно, но зато каждую буковку в ней знаю и не закрыта она для меня.
avatar
Alexand77, «не закрыта она для меня» так может сделаете ее не закрытой и для остальных — т.е. опенсорсной? многим была бы большая помощь ) разместить можно на github.com
avatar
wyg, смысла не вижу особого, она не причесанная к тому же, да и лень просто.
Помощь я вижу в паре тройке базовых уроков, в том, как стартануть с нуля на смарткоме. Было бы чуть больше времени, я может бы и сваял бы что-то такое. 
Просто вот в разборе чужого кода — это все конечно круто, но и для этого нужно иметь определенные скилы, согласитесь. 
avatar
Alexand77, конечно некоторый скил нужен. Залить код на github дело 5 минут, и я бы на вашу библиотеку посмотрел с интересом возможно и еще кому-то поможет, там глядишь и контрибьюторы найдутся… А то что код «не причесан» — так нет предела совершенству ) Кому будет интересно — сделают форк, причешут в меру своих способностей… Опять же на bitbucket.org есть и приватные репозитории бесплатные, если уж на столько код секретный )
avatar

В Альфе  перешли на 4-ю версию. А там что-то типа С#. Вот подумываю:
— вспомнить программирование или поменять брокера;
Торгую только фьючерсами. Да и денег на счету в Альфе осталось немного.

 

avatar
Тимофей, ты собрался роботов на C# писать? Но для этого нужна рабочая стратегия…
avatar
обработчик события это код (твой метод, функция) который ты даешь этой в данном случае библиотеке,  который она (библиотека) вызовет когда котировка придет. те не ты вызываешь, а твой код вызовут когда в библиотеке произойдет это событие… ну это же  очень просто )
avatar
Я, как бывший учитель информатики, скажу так: Главное — это описать алгоритм, остальное для тебя сделают индусы, или китайцы, или даже наши. Не трать время на бесполезные знания, лучше прочитай несколько книг по алгоритмизации и т.п.
avatar
LAW, +1
avatar
LAW, не согласен. Умеение описать решение задачи в виде алгоритма это одно, а запрограммировать алгоритм — это другое. Иногда из программирования алгоритма видны его косяки, о которых индусы не скажут (им пофиг). Короче — правильной дорогой идет Тимофей, надо еще уметь сказать свой алгоритм машине. Можно и с переводчиком по штатам кататься, но приятнее самому разговаривать.
LAW, Што вы, кругом враги, грааль попалят!!!111 Только хардкор, лучше на ASM.
avatar
Тимофей Мартынов, Погоди, но разве не вы делали этот сайт? Я уже год с небольшим думаю, что вы программист и сами разработали этот сайт. Я что, ошибался? 
Если string, то 'SIH6'
avatar
Зачем писать все с нуля?
Есть же (была по крайней мере) тестовая простая прога на сайте с событием коннект().

Здесь важно то, что функции-события вызываешь не ты,
они сами вызываются. Чтобы узнать текущий bid или ask придется ждать, пока придет событие и вызовет соотв. функцию.
Заводишь какие-нибудь public переменные и в них  кидаешь то, что приходит в функции типа UpdateQuote.

Считаю — все экранные формы нафиг. Они ничего не дают. Только загромождают код
avatar
Тимофей, ты — молодец! 
уверен, что твой подвиг сподвигнет и таких как я пойти таким же путём)))) 
удачи!)
avatar

теги блога Тимофей Мартынов

....все тэги



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