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

 
LProgrammer >>:
Через через свич и кейсы, if ( v=1) fun1(...)

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

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

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

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

 
JTOne >>:

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


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


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

Свой проект кастрировать для демо займет слишком много времени. Может вам поможет такое:


1. начните с ДЛЛ в \experts\samples\DLLSample. Импортируйте проект в VS. Не забудьте влючить флаг /clr

2. Почитайте, как вызывать методы классов С# из С++. Google все знает.

3. Сделайте связку.


P.S. Named pipes вам не надо, shared memory тоже.

декларируя в С++-DLL неймспейс с вашими классами:


using namespace MyForexLibrary;

и имея в С из демо-проекта следующую структуру


struct RateInfoStruct
{
unsigned int ctm;
double open;
double low;
double high;
double close;
double vol;
};


и передавая данные в длл примерно такой функцией:


MT4_EXPFUNC void __stdcall Recommendation(const RateInfoStruct rateInfos[], іint numberRates,...)


вы можете например декларировать класс:


public class ExchangeRateInfo
{
public DateTime ctm;
public double open;
public double low;
public double high;
public double close;
public double vol;

public ExchangeRateInfo(DateTime ctm, double open, double high, double low, double close, double vol)
{
this.ctm = ctm;
this.open = open;
this.high = high;
this.low = low;
this.close = close;
this.vol = vol;
}

public ExchangeRateInfo(DateTime ctm, double open)
{
this.ctm = ctm;
this.open = open;
this.high = Double.NaN;
this.low = Double.NaN;
this.close = Double.NaN;
this.vol = Double.NaN;
}

};


В длл сконвертировать данние:


List<ExchangeRateInfo^>^ rates = gcnew List<ExchangeRateInfo^>();
for(int i=0; i<numberRates;i++)
{
rates->Add(gcnew ExchangeRateInfo(System::DateTime(rateInfos[i].ctm), rateInfos[i].open, rateInfos[i].high, rateInfos[i].low, rateInfos[i].close, rateInfos[i].vol));
}


инстанциировать ваш алгоритм, написанний в С#:


ExchangeRateTrendDirectionsAlgorithm^ algo = gcnew ExchangeRateTrendDirectionsAlgorithm(...);


и получить результат:


algo->GetRecommendation(rates);


который можно передать назад в MQL. Удачи!

 
VDev писал(а) >>

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

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

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

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

Чулила это Вы ... :)) Поучите жену как гртца щи варить... Кто-б меня тут еще поучал примерами... :) !!! Не понимая, что на самом деле важно... БЫТЬ, а не казаться... Хм... кстати - :) что-б Вы знали - у Вас, я уверен, вот прямо сейчас, на компе работает код который писал "я"... всего несколько лет назад... :) А Вы мне расказываешь про какие-то "красивости", да по мне так в рельности должно быть по большому счету просто глубоко похрен, на чем писать... Хоть "на подчиненных" ... :) хоть на C# ... Если не умеешь программировать "на чем придется" значит ты попросу дилетант... Еще раз - Вы видимо просто немного ( чуть-чуть ещё но ) не доросли, до того понимания про которое я говорю - :) ...

Вам такси, или шашечки...

 
Choomazik >>:

Свой проект кастрировать для демо займет слишком много времени. Может вам поможет такое:


1. начните с ДЛЛ в \experts\samples\DLLSample. Импортируйте проект в VS. Не забудьте влючить флаг /clr

2. Почитайте, как вызывать методы классов С# из С++. Google все знает.

3. Сделайте связку.


P.S. Named pipes вам не надо, shared memory тоже.

декларируя в С++-DLL неймспейс с вашими классами:


using namespace MyForexLibrary;

и имея в С из демо-проекта следующую структуру


struct RateInfoStruct
{
unsigned int ctm;
double open;
double low;
double high;
double close;
double vol;
};


и передавая данные в длл примерно такой функцией:


MT4_EXPFUNC void __stdcall Recommendation(const RateInfoStruct rateInfos[], іint numberRates,...)


вы можете например декларировать класс:


public class ExchangeRateInfo
{
public DateTime ctm;
public double open;
public double low;
public double high;
public double close;
public double vol;

public ExchangeRateInfo(DateTime ctm, double open, double high, double low, double close, double vol)
{
this.ctm = ctm;
this.open = open;
this.high = high;
this.low = low;
this.close = close;
this.vol = vol;
}

public ExchangeRateInfo(DateTime ctm, double open)
{
this.ctm = ctm;
this.open = open;
this.high = Double.NaN;
this.low = Double.NaN;
this.close = Double.NaN;
this.vol = Double.NaN;
}

};


В длл сконвертировать данние:


List<ExchangeRateInfo^>^ rates = gcnew List<ExchangeRateInfo^>();
for(int i=0; i<numberRates;i++)
{
rates->Add(gcnew ExchangeRateInfo(System::DateTime(rateInfos[i].ctm), rateInfos[i].open, rateInfos[i].high, rateInfos[i].low, rateInfos[i].close, rateInfos[i].vol));
}


инстанциировать ваш алгоритм, написанний в С#:


ExchangeRateTrendDirectionsAlgorithm^ algo = gcnew ExchangeRateTrendDirectionsAlgorithm(...);


и получить результат:


algo->GetRecommendation(rates);


который можно передать назад в MQL. Удачи!

Шок и трепет, пионеры в панике)))) Красиво загнул))) 

 
LProgrammer >>:

Чулила это Вы ... :)) Поучите жену как гртца щи варить... Кто-б меня тут еще поучал примерами... :) !!! Не понимая, что на самом деле важно... БЫТЬ, а не казаться... Хм... кстати - :) что-б Вы знали - у Вас, я уверен, вот прямо сейчас, на компе работает код который писал "я"... всего несколько лет назад... :) А Вы мне расказываешь про какие-то "красивости", да по мне так в рельности должно быть по большому счету просто глубоко похрен, на чем писать... Хоть "на подчиненных" ... :) хоть на C# ... Если не умеешь программировать "на чем придется" значит ты попросу дилетант... Еще раз - Вы видимо просто немного ( чуть-чуть ещё но ) не доросли, до того понимания про которое я говорю - :) ...

Вам такси, или шашечки...

Во черт, обещал же детей не обижать))) Виноват, но я мужественно продержался двое суток))

А вы случайно не сын разработчика этого MQL4? Папку обидел, чую...

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

Прогоните на своем компе, только на реальном счете. У вас есть РЕАЛЬНЫЙ счет? Инвест-пароли выкинем сюда, на сайт, а то пальцевать, сидя за клавой, все смелые)))

Вы согласны?

ДА ИЛИ НЕТ


 

 
VDev >>:

Во черт, обещал же детей не обижать))) Виноват, но я мужественно продержался двое суток))

А вы случайно не сын разработчика этого MQL4? Папку обидел, чую...

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

Прогоните на своем компе, только на реальном счете. У вас есть РЕАЛЬНЫЙ счет? Инвест-пароли выкинем сюда, на сайт, а то пальцевать, сидя за клавой, все смелые)))

Вы согласны?

ДА ИЛИ НЕТ


 

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

 

 
VDev >>:

Во черт, обещал же детей не обижать))) Виноват, но я мужественно продержался двое суток))

А вы случайно не сын разработчика этого MQL4? Папку обидел, чую...

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

Прогоните на своем компе, только на реальном счете. У вас есть РЕАЛЬНЫЙ счет? Инвест-пароли выкинем сюда, на сайт, а то пальцевать, сидя за клавой, все смелые)))

Вы согласны?

ДА ИЛИ НЕТ


 

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

 

 
VDev писал(а) >>

Во черт, обещал же детей не обижать))) Виноват, но я мужественно продержался двое суток))

А вы случайно не сын разработчика этого MQL4? Папку обидел, чую...

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

Прогоните на своем компе, только на реальном счете. У вас есть РЕАЛЬНЫЙ счет? Инвест-пароли выкинем сюда, на сайт, а то пальцевать, сидя за клавой, все смелые)))

Вы согласны?

ДА ИЛИ НЕТ

У вас операционка какая ? Windows? Вот там папу и ишите. Блин, хотите я докажу что Вы полный НОЛЬ в программировании ? :))

Ох, и люблю я это дело... Назовите для началу что такое "парадокс повторного использования" в высоко-производительном софте... многопоточном. далее поговоим явно... по ядру виндов. Академк блин доморощенный.

 
LProgrammer >>:

У вас операционка какая ? Windows? Вот там папу и ишите. Блин, хотите я докажу что Вы полный НОЛЬ в программировании ? :))

Ох, и люблю я это дело... Назовите для началу что такое "парадокс повторного использования" в высоко-производительном софте... многопоточном. далее поговоим явно... по ядру виндов. Академк блин доморощенный.

1. Типа, денег и реального счета для спора у вас нет, тока пальцы..

2. Гугл выдал 2 ссылки по вашей фразе http://rsdn.ru/Forum/message/2484647.flat.aspx

3. Разумеется, я ноль)) После моего последнего приезда вся Силиконовая долина это знает

4. ДА ИЛИ НЕТ? ставка $1000

 
VDev писал(а) >>

1. Типа, денег и реального счета для спора у вас нет, тока пальцы..

2. Гугл выдал 2 ссылки по вашей фразе http://rsdn.ru/Forum/message/2484647.flat.aspx

3. Разумеется, я ноль)) После моего последнего приезда вся Силиконовая долина это знает

4. ДА ИЛИ НЕТ? ставка $1000

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

2. Суцки. Есть повод для файла.

3. дынь-дынь... Я плачу... :)

4. Да конечно-же ДА как-же иначе-то. Дружок. :) Только не 1000 а 50000 и ... покажи деньги... и наличными ... :)