Если к гидре подключаться как к удаленному серверу, есть возможность сделать импорт инструментов.
Есть ли возможность импортировать инструменты из гидры при локальном соединении?
Kazai Mazai:
Если к гидре подключаться как к удаленному серверу, есть возможность сделать импорт инструментов.
Есть ли возможность импортировать инструменты из гидры при локальном соединении?
В этом и вся соль - по простому никак.
Давай махнем. Мы тебе лицензию на гидра сервер, а ты нам доку на форум Гидры по своему чудо плагину. Есть возможность на ГитХаб выложить скомпилированное сразу?
Это после добавления инструментов в гидру моим чудо-плагином=))
Может версии библиотек не совпадают?
Лог гидры:
03:02:14.196|Error |S#.Data |System.ServiceModel.CommunicationException: Ошибка сериализации параметра http://stocksharp.com/hydraserver:GetSecuritiesResult. Сообщение 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()
Михаил Сухов:
Проверил - синхронизация прошла успешно. Проверял на дев версии, но на боевой эта часть такая же. А сколько инструментов примерно?
Я и один пробовал, и много.
Вот например, на чистой базе гидры добавляю один инструмент через свой чудо-плагин.В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. В студии пишет, что добавлено 19 инструментов.
Добавляю инструменты в гидре через источник финам.
В получается целая куча. В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. Пишет, что добавлено 19 инструментов.
Добавляю несколько в источнике. Тогда после синхронизации те 19 + эти что добавил.
В студии при этом инструменты не появляются. И бд студии тоже.
Студия и гидра 4.1.16.1
Ну и заодно, вот какой случай: в студии в справочнике бирж, добавляю в верхней части информацию о бирже, заполняю, жму сохранить, появляется в правом списке.
Далее в информации о биржевых площадках:
пишу код, данные и т.д. =>
сохранить (при выбранной, только что добавленной инфе о бирже) =>
"код площадки был изменен, будет создана новая площадка" => ok =>
"SqLiteException - Abort due to constrain violation: ExchangeBoard.Exchange may not be Null"
コメント (13)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
В этом и вся соль - по простому никак.
Давай махнем. Мы тебе лицензию на гидра сервер, а ты нам доку на форум Гидры по своему чудо плагину. Есть возможность на ГитХаб выложить скомпилированное сразу?
Легко =)
Проапрейдил лицензии. Только они скоро протухнут. Может получить через брокера сразу на год?
Спасибо.
У меня только у IB счет, к ним я так понял нет привязки.
Фэил =(
Это после добавления инструментов в гидру моим чудо-плагином=))
Может версии библиотек не совпадают?
Лог гидры:
Студии
Это нормальное явление, значит плагин начинает существовать реальным миром.
Судя по ошибке, в Security.ExtensionInfo что-то записывается, что не может сериализоваться. Если ссылка на код, где в плагине инструменты создаются?
Да действительно, там legacy-костыли были для древнейшей гидры.
Теперь все окей, инструменты синхронизируются, появляется сообщение, что инструменты добавлены, но в базу студии не сохраняются.
Ни сообщений, ни ошибок.
Кажется, что на стороне студии что-то, потому что с другими инструментами также.
А именно проверяется их наличие в хранилище инструментов (кнопка ввиде базы данных) или в панети инструментов?
И где кнопка в виде БД и в кнопке-бинокле искал. И в базе смотрел sqlite manager'ом.
Проверил - синхронизация прошла успешно. Проверял на дев версии, но на боевой эта часть такая же. А сколько инструментов примерно?
Я и один пробовал, и много.
Вот например, на чистой базе гидры добавляю один инструмент через свой чудо-плагин.В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. В студии пишет, что добавлено 19 инструментов.
Добавляю инструменты в гидре через источник финам. В получается целая куча. В источнике включен инструмент ALL. Подключаю, делаю синхронизацию. Пишет, что добавлено 19 инструментов.
Добавляю несколько в источнике. Тогда после синхронизации те 19 + эти что добавил.
В студии при этом инструменты не появляются. И бд студии тоже.
Студия и гидра 4.1.16.1
Ну и заодно, вот какой случай: в студии в справочнике бирж, добавляю в верхней части информацию о бирже, заполняю, жму сохранить, появляется в правом списке.
Далее в информации о биржевых площадках: пишу код, данные и т.д. => сохранить (при выбранной, только что добавленной инфе о бирже) => "код площадки был изменен, будет создана новая площадка" => ok =>
"SqLiteException - Abort due to constrain violation: ExchangeBoard.Exchange may not be Null"
Подозреваю, что в контроле фейл.
Апдейтер вроде как говорит, что студия у меня свежак) Или ты про гидру?