<HELP> for explanation

Блог им. Burger

Роботы на VB (Excel)

Использую для рутинных операций робота, написанного в Excel под Альфу.
Поскольку пока трейдинг не является моим единственным источником дохода
встал вопрос удалённого управления роботом и через него терминалом, т.к.
войти под одним логином с разных компов нельзя — первое соединение
терминалится.
Для реализации удалённого управления в Excel завёл источник данных —
html-страничку, т.к. у меня есть свой домен.
Собственно «страничка» — это лишь буквенно-цифровой код из 10 символов,
который забирает Excel через «Подключение к источнику данных».
Дальше робот этот код «разбирает» на команды.
Для ввода кода написал простую html+php форму, которая сохраняет
управляющик код в страничку. Так что можно даже с телефона ввести
новую настройку робота.
Но столкнулся с проблемой, что при частом рефреше «Подключения» в Excel
выпадают ошибки:
Роботы на VB (Excel)
или
Роботы на VB (Excel)
Что завешивает робот.
Посоветуйте как перехватывать такие ошибки в Execl?
 

Наши руки не для скуки…
avatar

sander

Месье знает толк в извращениях…
avatar

sander

Привет!
Извини, что не совсем по теме поста.
А данные от экселя нормально передаются?
Если не сложно, то не поделишься файлом?
Если там какое-то ноу-хау, то во сколько его оценишь?)
Ковырял образец альфовский, но у меня что-то так и не заработало.
Спасибо!
avatar

krolix

krolix, Альфовский образец вполне адекватный, его можно
переделать на свой лад. Правда у них вроде 2 примера есть:
— один позволяет получить инфу по структуре API
— второй полноценный робот на пересечениях средних
Который имеется ввиду?
Андрей Кучумов, помнится, назывался alfa_trade_v006 (1 скорее всего).

Система своя, экспорт котировок из терминала настроил, вычисления тоже. Не понял, как можно там сделки совершать по результатам закрытия часовиков.

Второй вроде тоже видел, но там, кажется, только зашитые алгоритмы захода в сделки, которые даром не нужны.
krolix, да, alfa_trade_v006 не только для «тренировки» подойдёт.
Доработать можно почти как угодно для позиционной торговли.
А для высокочастотников Альфа в принципе не вариант, как брокер.
про Threading почитайте
avatar

_sg_

AndreiSk, раньше это VSTO называлось, сейчас есть спец. тип проекта Эксель в Visual Studio. Там можно на любом языке все что угодно написать, включая MultiTreading Приложение.
avatar

_sg_

вводите событие он error goto и опять сначала
avatar

Evg_gg_gg

Evg_gg_gg, у него при этом весь стек переполнится от эксепшенов. Ему надо написать полноценное хотя бы 2-х поточное приложение.
avatar

_sg_

_sg_, хотите сказать перехват только «нужных» ошибок реализовать
нельзя, только всех?
Собственно мне обработчик ошибкио не нужен, по логике
ошибка возникает, когда не успел обновится старый запрос,
а уже по таймеру поступил новый запрос. Поэтому мне главное,
не обработать, а переждать, и чтобы робот не прерывался
фатально…
Мне трудно судить «издалека» что у Вас там происходит. На мой взгляд у Вас робот обрабатывает что-то и обновляет данные в ячейках в фоновом режиме. В это время извне приходит запрос на изменение каких-то параметров его (робота) работы. Это происходит во время обновления данных. Эксель Вам выдает ошибку. Следовательно, необходимо разнести эти операции по разным потокам: Один поток обрабатывает и обновляет информацию. Другой поток «слушает» и обрабатывает внешние запросы.
avatar

_sg_

_sg_, в целом примерно так, только обновляется лишь одна ячейка,
из которой забирается значение управляющего сигнала,
после выполнения рефреша. Но видимо Excel лишь запускает
рефрешь, но не ждёт результата исполнения, а программа
сразу же пытается обсчитывать принятые данные…
Иногда рефрешь либо из-за инета, либо ещё по какой причине
«тормозит» и тогда возникает коллизия обращения к «занятым»
данным.
То есть Вы в цикле сначала делаете Refresh, а потом пытаетесь читать обновляемую ячейку в этом же цикле?
Это неправильно. Нужно написать обработчик события не помню как точно называется в Экселе по-моему OnChanged. Это обработчик будет вызываться когда значение в ячейке уже изменилось, то есть когда получен новый Ваш Код в результате Refresh'a. То есть Вы в цикле делаете ТОЛЬКО Refresh + Задержка. При этом в ячейку записывается Код. Но Читаете этот Код из ячейки по событию «OnChanged» в обработчике этого события, а не в цикле в котором Refresh.
avatar

_sg_

_sg_, Если Refresh делает сам Эксель по таймеру, тогда Вам необходимо написать только обработчик события «OnChanged», в котором и будете читать Ваш код.
avatar

_sg_

_sg_, разве Excel умеет «ловить» события? Вроде это особеннось C.
Ну Вы даете. Прогуглите про события в Екселе. Думаю найдете килограммы Примеров. А Я вначале думал, что у Вас там навороченная система, хотел Вас нацелить на VSTO, потоки итд. Теперь понятно, что в данном случае это не нужно.
avatar

_sg_

_sg_, :) Робот же не миллионными позами рулит, пока… зачем так заморачиваться…
_sg_, но идею с проверкой изменения стоит потестить
Почему удаленку не юзаешь?
avatar

EAGor

EAGor, в смысле? Софт типа RAdmin?
Андрей Кучумов, или mstsc
avatar

EAGor

EAGor, у меня есть бесплатный TeamViewer, правда нельзя разрывать сессию… Но в целом это не лучший вариант,
когда трафик лимитированный.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UP