← Atrás

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

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

¿Le resultó útil este tema?

Compartir tema

Comentarios (13)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Mikhail Sukhov
Mikhail Sukhov

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

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

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

Kazai Mazai
Kazai Mazai Autor

Легко =)

Mikhail Sukhov
Mikhail Sukhov

Kazai Mazai: Легко =)

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

Kazai Mazai
Kazai Mazai Autor

Михаил Сухов:

Kazai Mazai: Легко =)

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

Спасибо.

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

Kazai Mazai
Kazai Mazai Autor

Фэил =(

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

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

Лог гидры:

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()
Mikhail Sukhov
Mikhail Sukhov

Kazai Mazai: Фэил =(

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

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

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

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

Kazai Mazai
Kazai Mazai Autor

Михаил Сухов:

Kazai Mazai: Фэил =(

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

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

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

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

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

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

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

Kazai Mazai
Kazai Mazai Autor

Михаил Сухов:

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

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

Kazai Mazai
Kazai Mazai Autor

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

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

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

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

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

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

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

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

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

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

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

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

Михаил Сухов:

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

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