Общие вопросы по разработке > Вылезти из песочницы
Re: Вылезти из песочницы
Сейчас изучаю вопрос по подключению внешнего NET софта (функций ДЛЛ, например) к АД4-Скрипт. Еще не пробовал, но в теории получается, все почти также как запись-чтение файлов. Там сложность в том, что надо какую то ДЛЛ вначале в NET собрать, потом ее как-то проверить (тоже софт написать), а уж потом к АД4-скрипт подключать. На пару дней работы. Пока занят другим.
М.б кто возьмется? Все расскажу.
М.б кто возьмется? Все расскажу.
Re: Вылезти из песочницы
Ну, вот и попробовал. Все написал, отработал и проверил алгоритм в С#. При переносе кода в АД4-Скрипт все скомпилировалось, Но заработало только после продолжительных танцев с бубном, переходящих в полную безнадежность мероприятия.YUBA писал(а):Сейчас изучаю вопрос по подключению внешнего NET софта (функций ДЛЛ, например) к АД4-Скрипт.
В результате импорт функций из DLL в АД4-Скрипт отработан. На картинке вывод результатов скрипта [img]DLL.png[/img] Одна функция DLL читает сумму двух чисел и выводит 7.69, вторая выводит "Привет AD4-Script из NetDLL".
На днях подготовлю описание и файлы и выложу.
- Вложения
-
- DLL.png (8.31 КБ) 23616 просмотров
-
- Сообщения: 9
- Зарегистрирован: 12 дек 2016, 17:45
- Поблагодарили: 3 раза
Re: Вылезти из песочницы
Как это удалось? Reflection, поиск метода по названию и вызов через Invoke?
Хотя других вариантов похоже и нету... А так, вообще, быстро отрабатывает?
Время не замеряли? Судя по логам где-то пара секунд..?
Хотя других вариантов похоже и нету... А так, вообще, быстро отрабатывает?
Время не замеряли? Судя по логам где-то пара секунд..?
Re: Вылезти из песочницы
Да, Reflection...... Invoke. Время на экране. Чего его мерять - что выросло, то выросло. Засада в OnUpdate() -ДЛЛ надо грузить при каждом вызове. Думаю, м.б из него, OnUpdate(), вообще не выходить - вошли, и сидим там.... вечно.)Leeuwenhoek писал(а):Как это удалось? Reflection, поиск метода по названию и вызов через Invoke?
Хотя других вариантов похоже и нету...
Последний раз редактировалось YUBA 26 янв 2017, 00:32, всего редактировалось 1 раз.
Re: Вылезти из песочницы
Добрый... Не бейте сильно ибо познаю только все это( да и мозг не молодой)...проблема у меня такая что при создании робота который писал бы исторические данные
для экселя чтото не получается(((..мож я чтото не так делаю?? (пишет недопустимый термин)
для экселя чтото не получается(((..мож я чтото не так делаю?? (пишет недопустимый термин)
Re: Вылезти из песочницы
В Ексель напрямую не получится. Наиболее просто в файлы формата CSV. Из этого формата можно уже открыть в Екселе.Сергей писал(а):..проблема у меня такая что при создании робота который писал бы исторические данные
для экселя чтото не получается(((
-
- Сообщения: 9
- Зарегистрирован: 12 дек 2016, 17:45
- Поблагодарили: 3 раза
Re: Вылезти из песочницы
Вообще было бы круто в Initialize() как-то сборочку поднять, чтобы в памяти висела, а потом в OnUpdate() уже поднятую вызывать. Время вызова сократится (т.к. каждый раз не поднимать), но, к сожалению, это только мечты... Нет глобальной переменной, в которой сможем передать сборку в OnUpdate().
Re: Вылезти из песочницы
Если OnUpdate() выполняется в своем потоке и ничего не вешает, то ничего больше и не нужно. Все остальное из него организуется. Но это надо еще проверить.Leeuwenhoek писал(а):Вообще было бы круто в Initialize() как-то сборочку поднять, чтобы в памяти висела, а потом в OnUpdate() уже поднятую вызывать.
-
- Сообщения: 9
- Зарегистрирован: 12 дек 2016, 17:45
- Поблагодарили: 3 раза
Re: Вылезти из песочницы
Можно попробовать в OnUpdate сделать Thread.Sleep(). Больше чем уверен на терминал не повлияет.
Но тоже не хотелось бы долго в OnUpdate() зависать. Следующий бар вызовет тот же метод. Если бары будут
приходить чаще чем отрабатывает метод, думаю ничего хорошего не будет. Хотя если торговать H1, M15, M5
то доп затраты в 1-2-3 сек вообще никак не повлияют...
Но тоже не хотелось бы долго в OnUpdate() зависать. Следующий бар вызовет тот же метод. Если бары будут
приходить чаще чем отрабатывает метод, думаю ничего хорошего не будет. Хотя если торговать H1, M15, M5
то доп затраты в 1-2-3 сек вообще никак не повлияют...
Не по теме
Как получить завтрашнее число?
DateTime GetTomorrow()
{
Thread.Sleep(1000 *60 *60 * 24);
return DateTime.Now;
}
DateTime GetTomorrow()
{
Thread.Sleep(1000 *60 *60 * 24);
return DateTime.Now;
}
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей