Страница 5 из 7

Re: Вылезти из песочницы

Добавлено: 20 янв 2017, 01:13
YUBA
Сейчас изучаю вопрос по подключению внешнего NET софта (функций ДЛЛ, например) к АД4-Скрипт. Еще не пробовал, но в теории получается, все почти также как запись-чтение файлов. Там сложность в том, что надо какую то ДЛЛ вначале в NET собрать, потом ее как-то проверить (тоже софт написать), а уж потом к АД4-скрипт подключать. На пару дней работы. Пока занят другим.
М.б кто возьмется? Все расскажу.

Re: Вылезти из песочницы

Добавлено: 24 янв 2017, 22:40
KakTak
Явно не хватает события типа OnDeinit(). :([/quote]

или Resend :))

Re: Вылезти из песочницы

Добавлено: 25 янв 2017, 02:23
YUBA
YUBA писал(а):Сейчас изучаю вопрос по подключению внешнего NET софта (функций ДЛЛ, например) к АД4-Скрипт.
Ну, вот и попробовал. Все написал, отработал и проверил алгоритм в С#. При переносе кода в АД4-Скрипт все скомпилировалось, Но заработало только после продолжительных танцев с бубном, переходящих в полную безнадежность мероприятия.
В результате импорт функций из DLL в АД4-Скрипт отработан. На картинке вывод результатов скрипта [img]DLL.png[/img] Одна функция DLL читает сумму двух чисел и выводит 7.69, вторая выводит "Привет AD4-Script из NetDLL".
На днях подготовлю описание и файлы и выложу.

Re: Вылезти из песочницы

Добавлено: 25 янв 2017, 09:49
Leeuwenhoek
Как это удалось? Reflection, поиск метода по названию и вызов через Invoke?
Хотя других вариантов похоже и нету... А так, вообще, быстро отрабатывает?
Время не замеряли? Судя по логам где-то пара секунд..?

Re: Вылезти из песочницы

Добавлено: 25 янв 2017, 19:15
YUBA
Leeuwenhoek писал(а):Как это удалось? Reflection, поиск метода по названию и вызов через Invoke?
Хотя других вариантов похоже и нету...
Да, Reflection...... Invoke. Время на экране. Чего его мерять - что выросло, то выросло. Засада в OnUpdate() -ДЛЛ надо грузить при каждом вызове. Думаю, м.б из него, OnUpdate(), вообще не выходить - вошли, и сидим там.... вечно.)

Re: Вылезти из песочницы

Добавлено: 25 янв 2017, 20:15
Сергей
Добрый... Не бейте сильно ибо познаю только все это( да и мозг не молодой)...проблема у меня такая что при создании робота который писал бы исторические данные
для экселя чтото не получается(((..мож я чтото не так делаю?? (пишет недопустимый термин)

Re: Вылезти из песочницы

Добавлено: 26 янв 2017, 00:30
YUBA
Сергей писал(а):..проблема у меня такая что при создании робота который писал бы исторические данные
для экселя чтото не получается(((
В Ексель напрямую не получится. Наиболее просто в файлы формата CSV. Из этого формата можно уже открыть в Екселе.

Re: Вылезти из песочницы

Добавлено: 26 янв 2017, 12:00
Leeuwenhoek
Вообще было бы круто в Initialize() как-то сборочку поднять, чтобы в памяти висела, а потом в OnUpdate() уже поднятую вызывать. Время вызова сократится (т.к. каждый раз не поднимать), но, к сожалению, это только мечты... Нет глобальной переменной, в которой сможем передать сборку в OnUpdate().

Re: Вылезти из песочницы

Добавлено: 26 янв 2017, 13:18
YUBA
Leeuwenhoek писал(а):Вообще было бы круто в Initialize() как-то сборочку поднять, чтобы в памяти висела, а потом в OnUpdate() уже поднятую вызывать.
Если OnUpdate() выполняется в своем потоке и ничего не вешает, то ничего больше и не нужно. Все остальное из него организуется. Но это надо еще проверить.

Re: Вылезти из песочницы

Добавлено: 26 янв 2017, 14:14
Leeuwenhoek
Можно попробовать в OnUpdate сделать Thread.Sleep(). Больше чем уверен на терминал не повлияет.
Но тоже не хотелось бы долго в OnUpdate() зависать. Следующий бар вызовет тот же метод. Если бары будут
приходить чаще чем отрабатывает метод, думаю ничего хорошего не будет. Хотя если торговать H1, M15, M5
то доп затраты в 1-2-3 сек вообще никак не повлияют...

Не по теме
Как получить завтрашнее число?

DateTime GetTomorrow()
{
Thread.Sleep(1000 *60 *60 * 24);
return DateTime.Now;
}