Альтернативный коннектор
Atom
04.11.2011
Char


Судя по количеству просмотров темы про ITINConnection ( http://www.itinvest.ru/f.../index.php?showforum=26 )
Вопрос актуален.
В аттаче простейший пример использования, думаю у тех кому надо не составит проблемы просмотреть список публичных методов коннектора.

Использован SmartX 2.3

требования:
х86

инициализировать(соответсвенно ITINConnection в референсы):
_itConn = Connection.init("SMARTX/V.2.3.548.709"); // Так будет работать
// _itConn = new Connection(); // так нельзя получите ошибку на коннекте.

Зависимости:
loader_lib.dll //Эта либа умеет нативно грузить в память либы и возвращать указатели на функции в либе. Нативно - всмысле сама аллочит кучу, грузит и дергает длл_мэйн,
и если что не так она пишет в системный лог.
Зачем сделано так а не через системные вызовы мне непонятно



NativeSmart.rar 518 KB (227)

Теги:


Спасибо: Mikhail Sukhov


Mikhail Sukhov

Фотография
Дата: 05.11.2011
Ответить


Char
Судя по количеству просмотров темы про ITINConnection ( http://www.itinvest.ru/f.../index.php?showforum=26 )
Вопрос актуален.


Актуален - это да. Только вот не через эту библиотеку. Я ее смотрел пол года назад через Reflector. Был удивлен обилием локов внутри нее + обработкой ошибок через возникающий MessageBox. Лично мне тогда показалось это сырой альфа версией, которую использовать для реальной торговли просто опасно. Плюс ко всему, я так и не понял, чем это решение лучше SmartCOM. Тот же x86, то же выделение памяти, которое не освободить без перезагрузки робота, если что-то не так... Кроме отсутствия установки SmartCOM я плюсов не нашел.
Спасибо:

Char

Фотография
Дата: 05.11.2011
Ответить


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

Эксепшены в ней генерятся следующим образом:
SmartAssembly.SmartExceptionsCore.StackFrameHelper.CreateExceptionN(exception, objArray);
Где в exception.Data по ключу, указаному в ресурсах, дописывается LinkedList<object>; с описаниием ошибки по мнению смарт ассембли =) (имхо удобно)
после чего производится
throw;

иногда эксепшены применают вот такой вид.
throw new Exception(SmartAssembly.StringsEncoding.Strings.Get(8727));

и реже
throw new ITINConnectionException(...);

Как минимум плюс в возможности одновременной работы нескольких экземпляров программ (например гидра и робот / робот, и параллельно можно что-то отлаживать).
А про память скажу так - надо опросить активных пользователей SmartX как у них приложение ведет себя.

з.ы. глянул тут ITrader может что и напишу.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy