Общие вопросы по разработке > Вылезти из песочницы

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
YUBA
Сообщения: 43
Зарегистрирован: 02 ноя 2016, 16:38
Поблагодарили: 4 раза

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

Непрочитанное сообщение YUBA » 20 янв 2017, 01:13

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

KakTak
Сообщения: 128
Зарегистрирован: 21 мар 2016, 17:55

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

Непрочитанное сообщение KakTak » 24 янв 2017, 22:40

Явно не хватает события типа OnDeinit(). :([/quote]

или Resend :))

YUBA
Сообщения: 43
Зарегистрирован: 02 ноя 2016, 16:38
Поблагодарили: 4 раза

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

Непрочитанное сообщение YUBA » 25 янв 2017, 02:23

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

Leeuwenhoek
Сообщения: 9
Зарегистрирован: 12 дек 2016, 17:45
Поблагодарили: 3 раза

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

Непрочитанное сообщение Leeuwenhoek » 25 янв 2017, 09:49

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

YUBA
Сообщения: 43
Зарегистрирован: 02 ноя 2016, 16:38
Поблагодарили: 4 раза

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

Непрочитанное сообщение YUBA » 25 янв 2017, 19:15

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

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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

Непрочитанное сообщение Сергей » 25 янв 2017, 20:15

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

YUBA
Сообщения: 43
Зарегистрирован: 02 ноя 2016, 16:38
Поблагодарили: 4 раза

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

Непрочитанное сообщение YUBA » 26 янв 2017, 00:30

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

Leeuwenhoek
Сообщения: 9
Зарегистрирован: 12 дек 2016, 17:45
Поблагодарили: 3 раза

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

Непрочитанное сообщение Leeuwenhoek » 26 янв 2017, 12:00

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

YUBA
Сообщения: 43
Зарегистрирован: 02 ноя 2016, 16:38
Поблагодарили: 4 раза

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

Непрочитанное сообщение YUBA » 26 янв 2017, 13:18

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

Leeuwenhoek
Сообщения: 9
Зарегистрирован: 12 дек 2016, 17:45
Поблагодарили: 3 раза

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

Непрочитанное сообщение Leeuwenhoek » 26 янв 2017, 14:14

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

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

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


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей