Написание (программирование) внешних функций для Метастока можно осуществить с помощью Metastock Developer's Kit. Metastock Developer's Kit - это комплект разработчика для создания внешних dll и присоединения (линковки) их к программе Equis Metastock (http://www.metastock.com).
Поэтому для написания dll нужно установить Metastock Developer's Kit.
MDK – является приложением к компиляторам.
В комплект установки MDK также включает:
- Пустой шаблон исходника программы (DLL) и всех необходимых модулей к нему
- Образец исходника с примерами функций
- Прорамма MSXtest для быстрой проверки созданных MSX DLL.
Во время установки MDK сам метасток надо закрыть иначе выдаст ошибку.
Программирование внешних dll можно осуществлять на следующих языках: С, Delphi и PBasic. Но программирование на С имеет больше возможностей при созданию внешних фунций.
После установки каталог С: EquisMDKMSX будет содержать три папки с именами С, Delphi и PBasic содержащие файлы образца исходника с примерами функций, файл структур переменных и пустой шаблон исходника.
В идеальном случае работа с MDK выглядит так:
Запускаете дельфиОткрываете из него файл MSXTmplt.pas.Сохраняете его как проект (save as... и выбираете там .dpr)Закрываете дельфи и открываете только что созданный проект *.dpr теми же дельфями.И глядя на готовый шаблон, прописываете в него свою функциюКомпилируете проект. (В каталоге с проектом должен появиться файл *.dll)Затем кладете этот файл в папку с программой для тестирования MSX DLL и тестируете. MSXTest очень хорошая тестилка, она прогонит через вашу функцию все возможные и невозможные варианты, а если ошибка не в функции, а в самой dll, то вы тоже об этом узнаете.После этого берете созданную вами библиотеку и кладете ее в папку EquisMetaStockExternal Function DLLs запускаете метасток и можете вызывать свою функцию такой формулой: ExtFml("DllName.FuncName", p1, p2 , ...,pn),
где:
DllName - имя вашей dll без расширения.
FuncName - имя вашей функции
р1, р2... - параметры, если они есть у вашей функции
Так можно действовать в идеальном случае. В нашем случае (не идеальном) нужно будет сперва разобраться как писать функции, а затем уже писать их. А разобраться MDK предлагает только по готовым примерам. Чтобы хоть как-то помочь вам в этом, я прилагаю исходник шаблона с переведенными на рус.яз. коментариями, и исходник (написанный мной) с функцией rnd (генератор случайных чисел).
Дело в том, сразу разобраться со штатным образцом (DelphiSampleDLL.pas) тяжело. А моя функция rnd очень простая, задействует минимум кода. К тому же я крайне обильно напичкал ее комментариями в помощь начинающим. Кстати эта функция по-своему интересна и позволит вам развеять миф о том, что шансы на рынке равны (50/50).