ATcl - интерпретатор Tcl для MT4 - страница 8

 

Упомянутый скрипт для создания дистр.проектов готов и включен в состав библиотеки ATcl.
В библиотеке расположен по пути Libraries/ATcl/app/mq45dist.tcl

Чтобы работал нужен(внезапно) tcl, и zip :-)

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

Если в параметр сразу передать имя файла, то никаких окон открывать не будет, отработает как консольное приложение.

Скрипт tcl прикладываю.

Помимо добавления скрипта, исправлены некоторые баги,
и перезалиты архивы библиотеки на сайте http://nektomk.ru/ru:atcl:install и SourceForge https://sourceforge.net/projects/mt-atcl/

ATcl
  • nektomk.ru
Рад представить вам библиотеку ATcl v1 beta - интерпретатор Tcl для MT4. Расширяте возможности ваших программ MQL, используйте СУБД, дополняйте сетевыми средствами, интегрируйте их с любыми программами используя Tcl.
Файлы:
 

Ещё одно, и самое простое (и насущное) применение : конфигурации софта/экспертов/панелей и прочего. То есть всякие файлы с настройками :-)

с ATcl очень просто всё это содержать в простых текстовых файлах.

# комментарии начинаются с # и идут до конца строки

# именованное значение "use_gui"
set use_gui true

# список (вектор) значений
set vector { 1.0 2.0 0.12 }

# список из список (матрица)

set matrix {
  { 1 2 3 }
  { 4 5 6 }
  { 7 8 9 }
}

# хеш ( ключ->значение)
set option(key1) "например строка"
set option(key2) "другая строка"

# можно сразу

array set option {
   key3 0.21
   another_key { можно задавать произвольные значения }

}

и считать всё это в MT4 очень просто:

ATcl *tcl=new ATcl;     // создадим новый интерпретатор (их можно много делать)

tcl.Eval("source MQL4/Files/myconfig.tcl"); // прочесть конфигурацию

bool use_gui = tcl.Long("use_gui",0); // взять переменную "use_gui" как long, или вернуть 0 по умолчанию

double vector[];
tcl.ToArray("vector",vector); // копировать список в массив.

double matrix[][3];
tcl.ToArray("matrix",0,matrix[0]); // читать 1-ю строку матрицы
tcl.ToArray("matrix",1,matrix[1]); // и так далее
tcl.ToArray("matrix",2,matrix[2]);

string option_key1=tcl.String("option(key1)",""); // хеши можно читать указывая полное имя
string option_key2=tcl.String("option","key2",""); // или отдельно ключ, значение

delete tcl; // всё прочитали, интерпретатор больше ненужен

кстати как бонус, можно заодно прочесть и встроенные/системные переменные окружения :-)

string APPDATA=tcl.String("env","APPDATA",""); // окружение Windows - %APPDATA%
string TEMP=tcl.String("env","TEMP","");     // рекомендованный каталог для временных файлов %TEMP%

 

По мотивам сообщения в английской части форума и для объяснения

"Зачем всё это надо и почему именно так"

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

Черновик первой части - http://nektomk.ru/atcl:why в ней идёт в постановка вопроса и выявление требований.

вычитаю, может какие ошибки поправлю и продублирую в местных блогах.Если есть вопросы, комментарии, предложения - отвечу и дополню :-)

во второй части будет разбор всех упомянутых языков и систем. Явно получается узко-специальная и требующая бэкграунда

 

давно не писал я столько текстов :-) но раз уж пообещал и начал, надо делать..

в продолжении первой части про выбор языка,

набросал вторую часть http://nektomk.ru/atcl:whynot где бегло рассмотрел довольно много всяких систем.

Даже людям далёким от ATcl и идей про расширение возможностей MQL может быть полезно и небезинтересно.

вместе с первой частью будет опубликована в местных блогах. Надо "взять паузу" и еще раз перечитать+подправить грамматику и обороты речи :-)

update: первая часть опубликована и в местных блогах https://www.mql5.com/ru/blogs/post/718610 чтобы можно было читать не выходя с сайта

выбор языка, часть 2
  • nektomk.ru
Взял смелость и в статье объединяю большие «числогрызы» в одну главу. Они не решат наших задач про «взаимодействие с миром», про GUI, и так далее, но они востребованя. На них, с их помощью, благодаря им делаются и отрабатываюся торговые стратегии. Начну с R, так получилось что с практикой его применения в MT знаком очень плотно. Фактически это...
 
По материалам переписки - максимально детальная инструкция по установке

1. Вам необходимо установить Tcl 32 бита для Windows

К сожалению недавно (месяц или два назад) ActiveState прекратил поддержку 32 бита и
удалил инсталлятор из доступных загрузок. Это был наиболее удобный дистрибутив для Windows
и разработка ATcl велась на нём. Другие дистрибутивы ещё не тестировал, проверю только в выходные.

------------------------------
Установка Tcl 32 бит в Windows
------------------------------

1.1 Дистрибутив BAWT

1.1.1 Загрузите дистибутив со страницы http://www.bawt.tcl3d.org/download.html (прямая ссылка на загрузку http://www.bawt.tcl3d.org/download/Tcl-BI/SetupTcl-8.6.8-x86_Bawt-0.8.0.exe )

1.1.2 Исполните инсталлятор. Обязательно согласитесь с установкой "С Redistributable" и также обязательно поставьте пункт "добавить Bawt в переменную PATH"

1.1.3 Чтобы изменения PATH вступили в силу надо перезайти в сессию Windows или просто перезагрузить компьютер.

------------------------------
Установка ATcl
------------------------------

2. Скачайте архив ATcl c SourceForge https://sourceforge.net/projects/mt-atcl/

2.1 Откройте каталог данных терминала MT4. В терминале выбрать "меню Файл / открыть каталог данных"

2.2 Распакуйте туда архив. В каталогах MQL4/Experts MQL4/Libraries и проч. должны появиться подкаталоги ATcl

2.3. ВАЖНО ! В разных дистрибутивах (поставках) Tcl основная DLL имеет разные названия. В ActiveTcl - tcl86t.dll и ATcl ожидает именно такого имени. В BAWT tcl86.dll (без буквы 't')
просто в каталоге C:/tcl/bin скопируйте файл tcl86.dll в tcl86t.dll
.

2.4. В терминале перечитайте каталоги или перезапустите терминал.

2.5. При запуске программ испоьзующих ATcl не забывайте ставить пункт "разрешить импорт функций из DLL"
BAWT - Downloads
  • Paul Obermeier
  • www.bawt.tcl3d.org
BAWT - Build Automation With Tcl
 

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

 
kovtynmen:

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

Не понял проблему ;-)

что значит "удаляет и советников и индикаторы" ? поясните суть, если можно со скриншотами

 
Maxim Kuznetsov:

Не понял проблему ;-)

что значит "удаляет и советников и индикаторы" ? поясните суть, если можно со скриншотами

Да конечно, вот скриншоты журнала

Expert TradePanel

Custom indicator CawtExcel

 
kovtynmen:

Да конечно, вот скриншоты журнала


1. когда запускаете советник/индикатор убедитесь что разрешен импорт из DLL

2. в предыдущей инструкции выделено цветом - если вы ставили дистрибутив BAWT то надо в нём, в каталоге c:/tcl/bin скопировать tcl86.dll в tcl86t.dll, то есть добавить к имени dll-ки букву t

других проблем, кроме разрешения использования DLL в терминале и имени DLL-ки дистрибьютера быть не должно - только что на чистом VDS, поставил MT4, поставил BAWT и библиотеку ATcl из sourceforge (не "вариант-в-разработке", а именно публично доступный). Полёт нормальный

 
Maxim Kuznetsov:

1. когда запускаете советник/индикатор убедитесь что разрешен импорт из DLL

2. в предыдущей инструкции выделено цветом - если вы ставили дистрибутив BAWT то надо в нём, в каталоге c:/tcl/bin скопировать tcl86.dll в tcl86t.dll, то есть добавить к имени dll-ки букву t

других проблем, кроме разрешения использования DLL в терминале и имени DLL-ки дистрибьютера быть не должно - только что на чистом VDS, поставил MT4, поставил BAWT и библиотеку ATcl из sourceforge (не "вариант-в-разработке", а именно публично доступный). Полёт нормальный

Спасибо, это все уже попробовал и проверил результат тот же. Завтра уже попробую все поставить по новой вместе с мт4. Хотя есть вариант, что возможно, что то с правами доступа на win 10.