Синхронизация инструментов с хранилищем
Atom Ответить
26.08.2013


Если к гидре подключаться как к удаленному серверу, есть возможность сделать импорт инструментов.
Есть ли возможность импортировать инструменты из гидры при локальном соединении?

Теги:


Спасибо:




13 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 26.08.2013
Ответить


Kazai Mazai Перейти
Если к гидре подключаться как к удаленному серверу, есть возможность сделать импорт инструментов.
Есть ли возможность импортировать инструменты из гидры при локальном соединении?


В этом и вся соль - по простому никак.

Давай махнем. Мы тебе лицензию на гидра сервер, а ты нам доку на форум Гидры по своему чудо плагину. Есть возможность на ГитХаб выложить скомпилированное сразу?
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 26.08.2013
Ответить


Легко =)
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2013
Ответить


Kazai Mazai Перейти
Легко =)


Проапрейдил лицензии. Только они скоро протухнут. Может получить через брокера сразу на год?
Спасибо: Kazai Mazai

Kazai Mazai

Фотография
Автор статей
Дата: 27.08.2013
Ответить


Михаил Сухов Перейти
Kazai Mazai Перейти
Легко =)


Проапрейдил лицензии. Только они скоро протухнут. Может получить через брокера сразу на год?



Спасибо.

У меня только у IB счет, к ним я так понял нет привязки.
Автор топика
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 28.08.2013
Ответить


Фэил =(


Это после добавления инструментов в гидру моим чудо-плагином=))

Может версии библиотек не совпадают?

Лог гидры:

Код
03:02:14.196|Error  |S#.Data   |System.ServiceModel.CommunicationException: Ошибка сериализации параметра ÷ñÒ1710923379êÖ0õæ÷https://stocksharp.ru/hy...er:GetSecuritiesResult. ÷ñÒ1710923379êÖ1õæ÷Сообщение InnerException было "Тип "System.Int64[]" с именем контракта данных "ArrayOflong:http://schemas.microsoft.com/2003/10/Serialization/Arrays" не ожидается. Попробуйте использовать DataContractResolver или добавьте любые статически неизвестные типы в список известных типов - например, используя атрибут KnownTypeAttribute, или путем их добавления в список известных типов, передаваемый в DataContractSerializer.".  Подробнее см. InnerException. ---> System.Runtime.Serialization.SerializationException: Тип "System.Int64[]" с именем контракта данных "ArrayOflong:http://schemas.microsoft.com/2003/10/Serialization/Arrays" не ожидается. Попробуйте использовать DataContractResolver или добавьте любые статически неизвестные типы в список известных типов - например, используя атрибут KnownTypeAttribute, или путем их добавления в список известных типов, передаваемый в DataContractSerializer.
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType(XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в WriteKeyValueOfanyTypeanyTypeToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract )
   в System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)
   в WriteArrayOfKeyValueOfanyTypeanyTypeToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract )
   в System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType(XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в WriteSecurityToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract )
   в System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)
   в WriteArrayOfSecurityToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract )
   в System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)
   в System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)
   в System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)
   в System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)
   в System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter writer, Object graph)
   в System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart(XmlDictionaryWriter writer, PartInfo part, Object graph)
   --- Конец трассировки внутреннего стека исключений ---
   в System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart(XmlDictionaryWriter writer, PartInfo part, Object graph)
   в System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameter(XmlDictionaryWriter writer, PartInfo part, Object graph)
   в System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeBody(XmlDictionaryWriter writer, MessageVersion version, String action, MessageDescription messageDescription, Object returnValue, Object[] parameters, Boolean isRequest)
   в System.ServiceModel.Dispatcher.OperationFormatter.OperationFormatterMessage.OperationFormatterBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer)
   в System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter writer)
   в System.ServiceModel.Channels.BinaryMessageEncoderFactory.BinaryMessageEncoder.WriteMessage(Message message, Stream stream)
   в System.ServiceModel.Channels.StreamingConnectionHelper.WriteMessage(Message message, IConnection connection, Boolean isRequest, IConnectionOrientedTransportFactorySettings settings, TimeoutHelper& timeoutHelper)
   в System.ServiceModel.Channels.SingletonConnectionReader.StreamedFramingRequestContext.OnReply(Message message, TimeSpan timeout)
   в System.ServiceModel.Channels.RequestContextBase.Reply(Message message, TimeSpan timeout)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc& rpc)
03:28:39.294|Error  |UserConfig|System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в StockSharp.Hydra.UserConfig.Save()



Студии

Код
Server stack trace: 
   в System.ServiceModel.Channels.SocketConnection.ThrowIfNotOpen()
   в System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   в System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   в System.ServiceModel.Channels.SingletonConnectionReader.SingletonInputConnectionStream.ReadCore(Byte[] buffer, Int32 offset, Int32 count)
   в System.ServiceModel.Channels.SingletonConnectionReader.SingletonInputConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   в System.ServiceModel.Channels.DelegatingStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   в System.ServiceModel.Channels.MaxMessageSizeStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   в System.ServiceModel.Channels.SingletonConnectionReader.Close(TimeSpan timeout)
   в System.Xml.XmlBufferReader.Close()
   в System.Xml.XmlBaseReader.Close()
   в System.Xml.XmlBinaryReader.Close()
   в System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
   в System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
   в System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
   в System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   в StockSharp.Algo.History.Hydra.IRemoteStorage.GetSecurities(Guid sessionId, String[] securityIds)
   в StockSharp.Algo.History.Hydra.RemoteStorageClient.#=qcCIGSiyvYgo9yUgsmroHWMSha4lhKUjucgANNh2G0uQ=.#=qZjlZ1a84AfV2nhg22lpXpXCsZd3tVisKYs2vOJd6Nzo=(IRemoteStorage #=qVpXS2s6k_fELVAAiQO2hEA==)
   в Ecng.Net.ChannelHelper.Invoke[TChannel,TResult](ChannelFactory`1 factory, Func`2 handler)
   в StockSharp.Algo.History.Hydra.RemoteStorageClient.#=qefIL2lTZFJn8FQ3kiApGwT6kIwuVjMYIiFEF3GRodRg=(ISecurityStorage #=qE9GETcmYXdR$YhTtlB5BGxpmrdLuS_jrTQ8RAiR3Imk=, IEnumerable`1& #=qB4YN5_pjUZkoRfd$xHM_cw==)
   в StockSharp.Algo.History.Hydra.RemoteStorageClient.GetNewSecurities(ISecurityStorage securityStorage)
   в StockSharp.Studio.StorageSettingsWindow.Save()





Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.08.2013
Ответить


Kazai Mazai Перейти
Фэил =(


Это после добавления инструментов в гидру моим чудо-плагином=))

Может версии библиотек не совпадают?



Это нормальное явление, значит плагин начинает существовать реальным миром.

Судя по ошибке, в Security.ExtensionInfo что-то записывается, что не может сериализоваться. Если ссылка на код, где в плагине инструменты создаются?
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 28.08.2013
Ответить


Михаил Сухов Перейти
Kazai Mazai Перейти
Фэил =(


Это после добавления инструментов в гидру моим чудо-плагином=))

Может версии библиотек не совпадают?



Это нормальное явление, значит плагин начинает существовать реальным миром.

Судя по ошибке, в Security.ExtensionInfo что-то записывается, что не может сериализоваться. Если ссылка на код, где в плагине инструменты создаются?



Да действительно, там legacy-костыли были для древнейшей гидры.

Теперь все окей, инструменты синхронизируются, появляется сообщение, что инструменты добавлены, но в базу студии не сохраняются.

Ни сообщений, ни ошибок.

Кажется, что на стороне студии что-то, потому что с другими инструментами также.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.08.2013
Ответить


Kazai Mazai Перейти

Теперь все окей, инструменты синхронизируются, появляется сообщение, что инструменты добавлены, но в базу студии не сохраняются.

Ни сообщений, ни ошибок.

Кажется, что на стороне студии что-то, потому что с другими инструментами также.


А именно проверяется их наличие в хранилище инструментов (кнопка ввиде базы данных) или в панети инструментов?
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 28.08.2013
Ответить


Михаил Сухов Перейти
Kazai Mazai Перейти

Теперь все окей, инструменты синхронизируются, появляется сообщение, что инструменты добавлены, но в базу студии не сохраняются.

Ни сообщений, ни ошибок.

Кажется, что на стороне студии что-то, потому что с другими инструментами также.


А именно проверяется их наличие в хранилище инструментов (кнопка ввиде базы данных) или в панети инструментов?


И где кнопка в виде БД и в кнопке-бинокле искал.
И в базе смотрел sqlite manager'ом.

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 02.09.2013
Ответить


Проверил - синхронизация прошла успешно. Проверял на дев версии, но на боевой эта часть такая же. А сколько инструментов примерно?

Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 02.09.2013
Ответить


Михаил Сухов Перейти
Проверил - синхронизация прошла успешно. Проверял на дев версии, но на боевой эта часть такая же. А сколько инструментов примерно?



Я и один пробовал, и много.

Вот например, на чистой базе гидры добавляю один инструмент через свой чудо-плагин.В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. В студии пишет, что добавлено 19 инструментов.

Добавляю инструменты в гидре через источник финам.
В получается целая куча. В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. Пишет, что добавлено 19 инструментов.

Добавляю несколько в источнике. Тогда после синхронизации те 19 + эти что добавил.


В студии при этом инструменты не появляются. И бд студии тоже.

Студия и гидра 4.1.16.1


Ну и заодно, вот какой случай: в студии в справочнике бирж, добавляю в верхней части информацию о бирже, заполняю, жму сохранить, появляется в правом списке.

Далее в информации о биржевых площадках:
пишу код, данные и т.д. =>
сохранить (при выбранной, только что добавленной инфе о бирже) =>
"код площадки был изменен, будет создана новая площадка" => ok =>

"SqLiteException - Abort due to constrain violation: ExchangeBoard.Exchange may not be Null"

Подозреваю, что в контроле фейл.













Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 03.09.2013
Ответить


1. Попробовать на более свежей Студии (скорее всего это).
2. Попробовать на инструментах, закаченных других плагином (если не поможет пункт 1).
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 03.09.2013
Ответить


Михаил Сухов Перейти
1. Попробовать на более свежей Студии (скорее всего это).
2. Попробовать на инструментах, закаченных других плагином (если не поможет пункт 1).



Апдейтер вроде как говорит, что студия у меня свежак)
Или ты про гидру?
Автор топика
Спасибо:


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

loading
clippy