Примерно 22 часа чистого времени уже потратил. С чего я начал в этот раз, я уже
подробно тут описал. Чуть раньше (12 января) я
задавался вопросом как ваще вызывать функцию подключенной библиотеки. Итак, что я делал с того момента? Я вернулся к книжке Изучаем C#, которую забросил читать на 255 странице 3 года назад. Сейчас начал читать её с начала, попутно выполняя все задания в C#. Сейчас дошел до 145 страницы пока. Читая книгу, и выполнив задание, я стал сам себе рассказывать (записывая экран с комментариями на ютуб), что я только что сделал. Это помогает мне осмыслить суть процессов.
Параллельно смотрю мануальчик по библиотеке SmartCom, чтобы понять, что мне надо вообще понять. Вроде пока моё примитивное знание говорит мне, что можно подрубить библиотеку через:
Пока к сожалению что-то идёт не так:
Ну ничего, я пока ещё не претендую, чтобы хоть что-то работало, потому что почти методом тыка действую. В своей книжке я видимо не дошёл до такого понятия как «Событие», но что вот я вижу в мануале по смарткому:
Идёт описание «события» с кучей параметров. Пока из учебника я понимаю, что это функция, которая принимает в себя параметры, указанные в скобочках. С другой стороны, мне непонятно, ведь функция UpdateQuote должна наоборот передавать нам параметры?
Ну типа моя логика говорит что синтаксис должен наверное быть примерно следующим:
Double martQuote = last.UpdateQuote(SIH6); — типа получить последнюю котировочку по SIH6.
Как на самом деле работать с синтаксисом такого события, я пока не знаю и даже не догадываюсь. Надо ещё почитать)) Глядишь страниц 150 по книге ещё пройду, уже всё заработает.
P.S. Супер-программисты, не ржите надо мной, это ж ради удовольствия и общего развития)
Лучше прокомментируй, что стало с топиками Решпекта сегодня? :)
Double martQuote = last.UpdateQuote(SIH6); - этот предполагает что когда дело дойдет до него, то в martQuote просто закинет последнюю котировку, но в таком случае тебе придется вызывать это миллион раз, и не будет обновляться в автоматическом режиме.
Надо в книжке про C# прочитать главу про event-ы.
этот аспект пока за рамки моей компетенции выходит
я пока не понимаю что значит подписаться на события)
Спасибо за камент
я не аффелирован никоим образом
не функция, а метод )
функция относящаяся к классу
наверняка есть перегрузки, может и принимать и передавать параметры, которые могут быть и не обязательные
короче поставь курсор на имя и нажми f12 там все увидишь
я вот старкрафт2 за зергов прошел… счас думаю потратить 400 геймечасов на фолаут4… жаль борделендсов больше нет
зато благодаря Изучаем с# я бросил на время с# и прокодил питон и R, за это весьма благодарен авторам
но она выглядит страшнее!
Но меня на тот момент времени не устроил уровень бесплатной поддержки — предлагали пройти обучение на почти любой вопрос. Кроме того, как то завязываться не хотелось на непонятных мне людей, вот у них же там была бесплатная лицензия — в какой то момент она может стать платной (если уже не стала, я просто не слежу).
Поэтому в какой то момент я решил по хардкорному, без прокладок :) Да, потратил и больше месяца и не факт, что мой код лучше, зато он мой, я его полностью знаю.
А с S# последней каплей стало, когда после очередного обновления перестали приходить свечи (это давно было, года два назад). Я написал в поддержку, мне сказали да, есть такое дело со SmartCom, мы его в очередь поставили, так как SmartCom не является нашим приоритетом, то мы когда-нибудь поправим, следите за обновлениями. Я следил месяца три — не поправили и перестал следить.
На уровне API даже для того, чтобы автоматизировать закрытие всех позиций в конце дня — кучу всего придется «ненужного» написать, о чем ты сейчас даже не подозреваешь.
в вашем коде они пустые, если только не заполняются в другом месте.
www.youtube.com/watch?v=YR6fxe1wa8g
Там С++, правда, но применительно к .NET разница минимальная, всё тоже самое, практически.
Вместо этого подпишитесь на событие об удачном соединении:
SmartCom.Connected += new _IStClient_ConnectedEventHandler(SmartCom_Connected);
Потом собственно обработчик этого события :
private void SmartServer_Connected()
{
//а вот тут, то что должно происходить по событию успешного //соединения и сделайте, например вывод окошка.
}
спасибо за камент)
но мне надо пока понять, как это работает в теории
1. Смартком «событийная фигня» если хочешь что то получить то должен:
1. создать обработчик события.
2. отправить запрос.
например:
что бы узнать что подключись к серверу — добавляем обработчик SmartCom_Connected(); затем отправляем запрос типа «горшочек вари» :-) SmartCom.Connect(...). всё ловим ответ
для коннекта конечно сложней так как нужно ещё и диконект ловить, да и если мы уже подключены то ответа никакого не будет. но в теории работает так. если что спрашивайте я нём собаку съел :-) и не одну
www.youtube.com/playlist?list=PLZYekWHmh5oG6iuCQsfA2Rp6ieORpMToo
Библиотека опенсорсная и хорошо покрыта тестами — по сути тесты это небольшие примеры как работают части этой библиотеки, в том числе взаимодействие со SmartCom.
Здесь C# — короткие уроки: www.youtube.com/playlist?list=PLZYekWHmh5oGyvXSaqaXPL9nOCLjGl1SA
Это наверняка хорошая библиотека, работающая со SC, но по сути в видео описывается, как работать с ее абстракциями, она скрывает API от пользователя. Хотя я до сих пор не понимаю, что хочет Тимофей, или писать самому с нуля под API или просто сговнякать какой то секретный алгоритм — в этом случае и TSLab подойдет.
А на понимание логики, как устроен TestConnect у меня ушло довольно много времени, там свои прибабахи есть, которые лучше было бы и не знать, не много бы потерял.
Мне бы кто тогда, без воды все рассказал на примерах с пустого листа за пару дней, я бы сэкономил кучу времени.
А чужой код всегда чужой код, если хозяин не поясняет то разбираться можно долго.
Библиотека хорошо покрыта тестами, где видно как именно работают части этой библиотеки, в том числе взаимодействие со SmartCom. Это хороший пример того как можно сделать. Всегда лучше если есть куда посмотреть.
Помощь я вижу в паре тройке базовых уроков, в том, как стартануть с нуля на смарткоме. Было бы чуть больше времени, я может бы и сваял бы что-то такое.
Просто вот в разборе чужого кода — это все конечно круто, но и для этого нужно иметь определенные скилы, согласитесь.
В Альфе перешли на 4-ю версию. А там что-то типа С#. Вот подумываю:
— вспомнить программирование или поменять брокера;
Торгую только фьючерсами. Да и денег на счету в Альфе осталось немного.
Есть же (была по крайней мере) тестовая простая прога на сайте с событием коннект().
Здесь важно то, что функции-события вызываешь не ты,
они сами вызываются. Чтобы узнать текущий bid или ask придется ждать, пока придет событие и вызовет соотв. функцию.
Заводишь какие-нибудь public переменные и в них кидаешь то, что приходит в функции типа UpdateQuote.
Считаю — все экранные формы нафиг. Они ничего не дают. Только загромождают код
уверен, что твой подвиг сподвигнет и таких как я пойти таким же путём))))
удачи!)