Использование .NET, это возможно, задумайтесь над этим. - страница 4

 
xnsnet:

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

Эхх, истину глаголешь, однако... Я вот уже который месяц между делом пытаюсь дописать советник, о конечной эффективности и устойчивости которого имею только очень туманное представление. И даже когда в нем реально исчезнут грубые ошибки кодирования, тестер МТ4, боюсь, вряд ли принесет мне пользу. Пока единственный разумный вариант - онлайновое тестирование, которое тоже потребует времени, самого главного ресурса, который у нас есть. Да, остается еще вариант с бэктестингом, но совсем без помощи тестера, а с помощью собственного кода.
 

Кстати я нашел другой способ к чему привязывать контекст пересечени двух языков:)

Объявляя строку я получаю уникальный адрес памяти используемый скриптом, то есть мне не нужно создавать дескрипторов, достаточно адреса строки, мало того эту строку можно использовать как структуру данных для хранения:) Осенило в один прекрасный момент:) К примеру объявляя строку пробелов размером в 128 символом мы имеем в распоряжении 129 девять байт, первый из которых обнуляется при нициализации и остальные 128 байт используются для данных, до окончания работы эксперта. При завершении на всякий случай возвращаем прежнее значение строки из пробелов с нулем на конце. Из скрипта можно отследить использование, путем StringLen после инициализации она нулевая, при завершении снова 128 символов. Глупость конечно, но этот метод я сейчас успешно использую. При этом разработка адаптера отложена в связи с этой темой: 'Анализ нескольких валютных пар по валюте, ваше мнение, можно ли это использовать?' пишем по старинке пока, да и появляются мысли о том что возможно лучше сделать шаблонный компилятор для промежуточной библиотеки, по атрибутам методов сборки, все же дополнительные операции убрать можно путем автоматического экспорта:) До сих пор трудно понять почему не реализовали атрибут DllExport а только DllImport в . NET ведь можно было бы избежать стольких проблемм, в итоге придется наверное именно этот атрибут и реализовать:) Хотя конечно да, тогда была бы нарушена версионность в GAC, DLL ведь не знает об этом, поэтому с помщью такой промежуточной библиотеки ее можно поддерживать и делать единый экспорт для всех версий сборок. Вот до чего дошли, а ведь не занимался бы я этой проблеммой, ничего нового и не придумалось бы:) Ну а пока отложим это дело:)

Минимум операций, да и окно в котором скрипт выполняется уже имеет не то значение, так как паралелим свою оконную остнастку к терминалу, контролируясь из системного лотка панели задач, чтобы не пугать интерфейс самого терминала, для аналитических задач предостаточно на данный момент:) Как говорится программа в программе, начиная с одного вызова функции инициализации и до момента вызова функций завершения всех скриптов. Всегда мечтал так извратится над инструментом:) Примитивная среда разработки в полном взаимодествии с высокоуровневой оснасткой, черпая из нее только самое необходимое:) Особенно удобно если работа на двух мониторах или больше:) И самое главное, никто не отменял MQL, все взаимодействует на том уровне, который лично для меня, то что доктор прописал, как говорится не поймешь, пока не разделишь задачи на пополам, перетягивать в ту или иную сторону, не выход, когда можно встать меж двумя огнями:)

 

Чтобы не быть голословным предлогаю вашему вниманию шаблон, упрощен максимально, первое к чему стремился и не зря надеюсь:)

В архиве есть папка релиз, в ней берем две библиотеки и кидаем в корень терминала, експортная и рантайм, такой код нужен для их использования, строка из 128 пробелов, сейчас это особенно не важно, но обнуление строки при завершении может привести к вылету в случае не удовлетворения этого условия:

#import "mttermex.dll"
    int ClasterInit( string iContext, string iSimbol );
    int ClasterStart( string iContext, double iBid, double iAsk );
    int ClasterDeinit( string iContext );
#import
 
string Context = "                                                                                                                                 ";
 
int init() {
    ClasterInit( Context, Symbol() );
    return(0);
}
 
int deinit() {
    ClasterDeinit( Context ); 
    return(0);
}
 
int start() {
    ClasterStart( Context, Bid, Ask );
    return(0);
}

Все что делает этот код, описать можно на пальцах, проще некуда, при использовании советника, появляется иконконка в системном лотке, щелкнув на ней два раза появится окно, еще два раза скроется:) По сути ерунда, но именно ради этой ерунды я потратил несколько часов написания, и около недели отработки подхода:) Исходный код прилогается для VS2005. Вобщем вот, дураку должно быть понятно, что для чего и без коментариев, при условии знания C# и С++:) Именно на этой основе будет построен кластерный потиковый анализатор, который предназначен для работы со множеством советников по любому из необходимых инструментов.

Ах да, обязательное условие для просто посмотреть, .NET 2.0 хотя смотреть там не на что, только если на исходный код:))) Особенно полезно тем кто предпологает что-то ужасное и громандное в реализации хостинга через либу:))

Файлы:
mtterm_1.zip  104 kb
 
xnsnet:

Чтобы не быть голословным предлогаю вашему вниманию шаблон, упрощен максимально, первое к чему стремился и не зря надеюсь:)

Спасибо большое! Довольно долго искал, как решить эту проблему.
 
plan:
xnsnet:

Чтобы не быть голословным предлогаю вашему вниманию шаблон, упрощен максимально, первое к чему стремился и не зря надеюсь:)

Спасибо большое! Довольно долго искал, как решить эту проблему.
Какую проблему? Разве что вам нужна иконка в трейе и в этом заключается ваша проблема..... Для минимального советника берете код длл из примера, делаете из нее C++ проект в VS, добавляете поддержку clr и пользуетесь. Если не нравится синтакс С++, решаете задачу в C# или VB, а из C++ вызываете ваши класы, пользуясь вашими пространстами имен. Длл в C++ ложите в каталог experts\libraries, остальное - в каталог с terminal.exe. У меня так работает, без извращений...
 
olexij:
plan:
xnsnet:

Чтобы не быть голословным предлогаю вашему вниманию шаблон, упрощен максимально, первое к чему стремился и не зря надеюсь:)

Спасибо большое! Довольно долго искал, как решить эту проблему.
Какую проблему? Разве что вам нужна иконка в трейе и в этом заключается ваша проблема..... Для минимального советника берете код длл из примера, делаете из нее C++ проект в VS, добавляете поддержку clr и пользуетесь. Если не нравится синтакс С++, решаете задачу в C# или VB, а из C++ вызываете ваши класы, пользуясь вашими пространстами имен. Длл в C++ ложите в каталог experts\libraries, остальное - в каталог с terminal.exe. У меня так работает, без извращений...

Нет, дело не в иконке :) А с этим уже разобрался, благодоря топику. .. Просто изначально пошел не тем путем, хотел сделать через COM и заморочился малость...
 

New MetaTrader API for .NET from Amplefile

http://www.dotnetremoting.com/dow.aspx
inquires : support@dotnetremoting.com

 
Микро$офт НЕ ПИШЕТ программ на .NET. Она создала яго, чтобы ВЫ писали на нём. А сама на нём не пишет. Ни одного (практически). Вам это ни о чём не говорит?
 
DNR_00 >>:

New MetaTrader API for .NET from Amplefile

http://www.dotnetremoting.com/dow.aspx
inquires : support@dotnetremoting.com

скачал - установил - с ходу не заработало :(

пишет что cannot load library 'MT4Net.dll' (error 14001)

нашел MT4Net.dll - скопировал куда только можно (c:\Program Files\MetaTrader 4\experts\libraries\, c:\Program Files\MetaTrader 4\experts\, c:\WINDOWS\system32\) не помогло

у кого получилось запустить - отпишитесь что нужно сделать

 
ForexTools >>:

скачал - установил - с ходу не заработало :(

пишет что cannot load library 'MT4Net.dll' (error 14001)

нашел MT4Net.dll - скопировал куда только можно (c:\Program Files\MetaTrader 4\experts\libraries\, c:\Program Files\MetaTrader 4\experts\, c:\WINDOWS\system32\) не помогло

у кого получилось запустить - отпишитесь что нужно сделать

У меня все работает, MT4Net.dll лежит в C:\Program Files\MetaTrader 4