Связка MQL4 + .Net - страница 2

 

Вообще то MQL4 упрощенный язык до уровня Java и даже ещё проще с самыми необходимыми но минимумов функций. То есть он досупен как для профессионалов так и для тех кто специализируется именно на написании торговых стратегий. Да проф программисту привыкшему к С++ или java с его множеством функций будет не привычно в MQL4, но потом привыкаешь и даже ценишь простоту.

Если хочеться всё же стратегии написать на другом языке программирования, то используйте связку MQL4<->Dll<->.exe Тоже нет проблем хотя придётся немного повозиться.

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

 
LProgrammer >>:

Вы знаете, вы немного не правы - если внимательно присмотреться то MQL это просто си. Его компилятор даже делать не надо. Я вот тут собрался делать оптимизатор советников, и решил пока отложить - подождать MQL5 ... Но пока раздумывал - понял, что MQL совершенно в легкую ложиться в си, просто на уровне препроцессора ... И библиотек. И это очень правильно. Ну сделалали они свой компилятор но язык-то СИ.

MQL4 является сильно кастрированной версией С, причем пациенту удалили жизненно важные органы, это все не раз обсуждалось на этом форуме. Да, кому-то и кобыла невеста, но после работы на нормальных языках MQL4 выглядит скучно и бедно. Это как после Sybary WRX пересесть на инвалидную мотоколяску )) Все время думаешь не о том, как построить алгоритм, а о том, как впихнуть его в прокрустово ложе этого языка-инвалида.

Собственно, поэтому я и перенес всю обработку на С#, единственно жаль, теперь в конкурсе МТС не поучаствуешь. 

Про препроцессор я не понял, поясните плз. Как с помощью препроцессора, к примеру, эмулировать структуры, указатели и все остальное? Кстати, мне очень не хватает вычисляемых дефайнов и дефайнов с параметрами, типа

#define x1  5

#define x2 (x1+33)

#define xy(x, y) (x+y)

У вас есть препроцессор, который может это распарсить?



 

 
VDev писал(а) >>

MQL4 является сильно кастрированной версией С, причем пациенту удалили жизненно важные органы, это все не раз обсуждалось на этом форуме. Да, кому-то и кобыла невеста, но после работы на нормальных языках MQL4 выглядит скучно и бедно. Это как после Sybary WRX пересесть на инвалидную мотоколяску )) Все время думаешь не о том, как построить алгоритм, а о том, как впихнуть его в прокрустово ложе этого языка-инвалида.

Собственно, поэтому я и перенес всю обработку на С#, единственно жаль, теперь в конкурсе МТС не поучаствуешь.

Про препроцессор я не понял, поясните плз. Как с помощью препроцессора, к примеру, эмулировать структуры, указатели и все остальное? Кстати, мне очень не хватает вычисляемых дефайнов и дефайнов с параметрами, типа

#define x1 5

#define x2 (x1+33)

#define xy(x, y) (x+y)

У вас есть препроцессор, который может это распарсить?



Я могу вам ответить, шуткой - "что де плохому танцору..." :) Но не буду...

Попробую так - с одной стороны вы правы - среда разработки очень не удобная. Ну совершено ! И язык сам тоже НЕ позволяет, с легкостью строить мега-программы ... НО все дело в тот, что вам надо просто сосредоточится на главном в разработке вашей стратегии... Это примерно как автомобиль формулы 1, ( потому и формула, что все выхолощенно ) по сравнению с универсвалом для такси.

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

Другими словми, используйте С# ...

:) Который на мой взгляд полное убожество. Кстати. Да и даже сами классы, это для тупых... Так как все это делается только ради БЫСТРОЙ разработки кода ПРЕМЛИМОГО качества. То есть коммерческая разработка.

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

:) Не переоценивайте ценность самого языка как такового...

Что касается препроцессора, то что там делать то... Пара вечеров и можно из любого языка сделать транслятор в MQL... Это вообще не проблема. Но что это даст.

Я же имел ввиду другое - из MQL сделать си... :) Чтобы загнат его в свой оптимизатор. :))

 
LProgrammer >>:

Я могу вам ответить, шуткой - "что де плохому танцору..." :) Но не буду...

Попробую так - с одной стороны вы правы - среда разработки очень не удобная. Ну совершено ! И язык сам тоже НЕ позволяет, с легкостью строить мега-программы ... НО все дело в тот, что вам надо просто сосредоточится на главном в разработке вашей стратегии... Это примерно как автомобиль формулы 1, ( потому и формула, что все выхолощенно ) по сравнению с универсвалом для такси.

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

Другими словми, используйте С# ...

:) Который на мой взгляд полное убожество. Кстати. Да и даже сами классы, это для тупых... Так как все это делается только ради БЫСТРОЙ разработки кода ПРЕМЛИМОГО качества. То есть коммерческая разработка.

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

:) Не переоценивайте ценность самого языка как такового...

Что касается препроцессора, то что там делать то... Пара вечеров и можно из любого языка сделать транслятор в MQL... Это вообще не проблема. Но что это даст.

Я же имел ввиду другое - из MQL сделать си... :) Чтобы загнат его в свой оптимизатор. :))

Я по работе пишу на С/С++/С#, MATLAB, ASM, еще с десяток языков когда-то пользовал, так что есть, с чем сравнивать :) Ладно, спорить об этом неинтересно.

Но я не получил ответа на вопрос - как с помощью препроцессора "за пару вечеров" перевести С-код, использующий указатели, на язык MQL? Вы способны дать конкретный ответ?

Хотя бы вручную переведите на MQL...

typedef double(*strategy)(double, int);

/// тут расположены функции, реализующие различные торговые стратегии

const int stratCount = 2000;
strategy stg[stratCount]; // массив указателей на функции стратегий

int FindBestStrategy(stg, stratCount)

{
  for(int n=0; n < stratCount; n++)
  {
     double maxProfit = 0;
     int bestStrategy = 0;
     double profit = stg[n](Bid, Time);
     if(profit > maxProfit)
     {
         maxProfit = profit;
         bestStrategy = n;
     }
  }
  return bestStrategy;// на выходе имеет лучшую стратегию
}


 
Да, странно, что никто еще не выложил хотя бы пример связки mql4-NET. И жалко:)
 
VDev писал(а) >>
Через через свич и кейсы, if ( v=1) fun1(...)
 
MuruFigi >>:
Да, странно, что никто еще не выложил хотя бы пример связки mql4-NET. И жалко:)

Это точно, я этот пост ради этого и написал, что бы кто кинул масенький проектец, связи между mql4-NET(


что бы упростить себе жизнь) а тут все только и рассказывают какой mql4 плохой) да и так понятно) рас уж все переходят от него на другие языки)


киньте кто то демо проект) а?) а люди добрые

 

Мне было бы интересно написать шаблон приложения MQL4-NET. Но потребует времени определенного, бо есть много нетривиальных моментов. Я как раз думаю над вопросами:)

В MQL4 мучит столько не бесконечно убогий язык, а неустойчивая среда исключающая всякую надежность. Хотя я понимаю, что тут важнее ТС для заработка:)

 

Тут читали?

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

xsnet занималься подобной связкой. Во вложении его реализация библиотек.

Да в MQL4 не хватает некоторых возможностей С, к примеру, структрур. Но не стоит его называть убогим. Так как он создан не только для крутых программистов, знающих по 10 языков, но и для трейдеров. Вобщем у него своя специфика.

Файлы:
mtterm_1.zip  104 kb
 
LProgrammer >>:
Через через свич и кейсы, if ( v=1) fun1(...)

Вы мне напомнили историю, как-то в курилке один кадр, программист на С++, жаловался на трудную программисткую жизнь. Ему надо было сделать отрисовку на экране кучи графических объектов, там было управление подстанцией, на сенсорном экране была куча переключателей, разъеденителей и все такое, и их надо было отрисовывать постоянно

Этот чудила делал именно по вашему методу - как помню, вся байда отрисовки занимала экранов 20-25, ужас))

Тгда я спросил, почему он не использовал наследование и виртуальные функции, там весь код занял бы строк 20 (я про отрисовку). Оказалось,чел использовал С++ как обычный С и даже не знал о возможностях.

Так что ваши слова об классах, которые для тупых... я считаю сугубо пионерскими словами)) Метод копи-пасте на 2000 if, это на для тупых, это для упорных))