0
Answered

Аттрибут FeatureId для распространения индикатора

rovus 2 years ago updated by Андрей Ринас2 (ATAS developer) 1 year ago 6

Здравствуйте. 

Хотел разобраться как работает распространение индикаторов через вашу платформу. Следую этой инструкции https://support.orderflowtrading.ru/knowledge-bases/46/articles/25878-rasprostranenie-indikatorov и столкнулся с проблемой. Во 2 пункте упоминается атрибут FeatureId который у меня никак не получается найти. Ссылку на сборку ATAS.Indicators добавил.

Не могли бы вы помочь с этим? Может атрибут переименовали или он находится в другой dll?

GOOD, I'M SATISFIED
Satisfaction mark by rovus 2 years ago
+1
Under review

Здравствуйте!

Получил ответ от разработчиков:

данная возможность доступна только API ATAS v5. Добавьте ссылку на ATAS.Indicators.dll этой версии и проблемы быть не должно.

С Уважением.

Спасибо за ответ.

После смены версии атрибут нашелся и индикатор получилось загрузить в ваш сервис.

Правда, после того как я скачал индикатор по предоставленной вашим сервисом ссылке и поместил его в нужную папку ATAS начал выдавать следующую ошибку:

Error loading indicators from 'C:\Users\{username}\Documents\ATAS\Indicators\6e3c7b12d079b0a93e7f27116128678a.dll': System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Users\{username}\Documents\ATAS\Indicators\6e3c7b12d079b0a93e7f27116128678a.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Users\{username}\Documents\ATAS\Indicators\6e3c7b12d079b0a93e7f27116128678a.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at ATAS.Indicators.IndicatorManager.LoadTypes(String pluginPath)

Эту ошибку удалось обойти поставив галочку возле опции "Unblock" в свойствах скачанного индикатора. Может это поможет кому-то еще.

Answered

Спасибо, учтём этот момент!

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

Давайте я опишу свои действия:

1) Я (пользователь A) выдал права на доступ к индикаторам пользователю B, подождал 10-20 минут, они так в его списке индикаторов и не появились. 

2) После этого скачал эти индикаторы с вашего сервиса, подложил в нужную папку, зашел пользователем B и они появились. 

3) Затем, пользователем A забрал доступ у пользователя B к этим индикаторам не удаляя их из папки ~/Documents/ATAS/Indicators, сделал logout/login пользователем B и в списке индикаторов они перестали отображаться.

Сейчас у меня все работает точь в точь как написано в самом конце вашей документации

После создания индикатора Вы получите ссылку на загруженный в сервис dll файл.
Эту ссылку можно давать Вашим пользователям для скачивания индикатора.
Также для каждого индикатора Вы сможете указывать пользователей, которые имеют доступ к этому индикатору, а также экспирацию этого доступа.
Если у пользователя есть загруженный индикатор, но нету доступа, либо доступ завершился, пользователь данный индикатор в платформе не увидит и не сможет использовать.

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

Вижу, Вы правы. Длл файлы автоматически блокируются операционной системой после скачивания. Я задал вопрос разработчикам по этому поводу, может есть возможность с этим сделать. :)