Библиотеки: Tester - страница 6

 
fxsaber:

У кого есть свои торговые панели для MT4, могут быстро создать Тестер для ручной торговли в MT5, который превосходит MT4 тем, что по реальным тикам и реал-тайм.

Ну и денежку за это получать, т.к. подход удовлетворяет всем правилам Маркета.


Не верю, но, возможно, такие Маркет-продукты Тестеров "нового поколения" будут весомой причиной перехода простых юзеров на MT5.

Насколько востребованы ручные и полуавтоматические Тестеры - должны знать продавцы панелек. Может, выскажутся.

Не нужны...

Сюда приходят за станками для печати денег ...  Профи которые торгуют сами и ищут удобные панели 1 к 1000... Я знаю о чем говорю...

 
Vladimir Pastushak:

Не нужны...

Сюда приходят за станками для печати денег ...  Профи которые торгуют сами и ищут удобные панели 1 к 1000... Я знаю о чем говорю...

Интересно. Получается, что Маркет подавляюще востребован, как быстрый поиск тестерного грааля.

Утилиты и даже индикаторы в Маркете - удел долей процента пользователей. Не срубить на этом разработчикам. Наверное, это логично.


ЗЫ Выходит, что лучшая популяризация MT5 - топовый сигнал на основе MT5-маркет советника. Но это нереально, т.к. если есть советник и сигнал под MT5, то обязательно будет он же под MT4.

 
fxsaber:

Интересно. Получается, что Маркет подавляюще востребован, как быстрый поиск тестерного грааля.

Утилиты и даже индикаторы в Маркете - удел долей процента пользователей. Не срубить на этом разработчикам. Наверное, это логично.

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

Не смотря ни на что, я продолжаю верить в будущее МТ5. Иррациональное, интуитивное начало указывает мне путь... И никогда не подводит.

 

fxsaber:

// Неиспользуемые On-функции нужно прописать пустыми.
void OnTick() {}
void OnTimer() {}
int OnInit() { return(INIT_SUCCEEDED); }
void OnDeinit( const int ) {}

Можно обойтись и без этого. 

Посмотрите как я это решил здесь с помощью фейковых функций:

bool              OnChart=false;    // Признак наличия в теле программы обработчика события OnChartEvent                
bool              OnZ=true;
...
void MyChartEvent(long id,const long &lparam,const double &dparam,const string &sparam) {}  // Фейковая функция
void SetOnChart(long x) {OnChart=false; OnZ=false;}                                         // Фейковая функция

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
  { 
   if(id==CHARTEVENT_MOUSE_MOVE) 
     { 
      W.MouseX=(int)lparam; 
      W.MouseY=(int)dparam; 
      W.MouseBar=(double)W.Left_bar+1-(double)W.MouseX/(double)W.dx_pix; 
      //W.MousePrice=W.Y_max-(double)W.MouseY*W.dy_pix; 
      W.MouseSubWin=XYToTimePrice(W.MouseX,W.MouseY,W.MouseTime,W.MousePrice,id); 
     } 
   if(id==CHARTEVENT_CHART_CHANGE) ChartChanged(); 
   if(OnZ) SetOnChart(sizeArr); 
   if(OnChart) MyChartEvent(id,lparam,dparam,sparam); 
  } 

...
#define OnChartEvent SetOnChart(int x) {OnChart=true;  OnZ=false;}\ 
void MyChartEvent 

вся хитрость в разных заменяемых типах внутренних параметрах функции.

В моем случае фейковая функция имеет параметр id long, а оригинальная int

 
Nikolai Semko:

Можно обойтись и без этого. 

Посмотрите как я это решил здесь с помощью фейковых функций:

вся хитрость в разных заменяемых типах внутренних параметрах функции.

В моем случае фейковая функция имеет параметр id long, а оригинальная int

Вы, похоже, не поняли, для чего нужны On-функции в том контексте. Они продолжают выполняться.

 
fxsaber:

Вы, похоже, не поняли, для чего нужны On-функции в том контексте. Они продолжают выполняться.

я прекрасно понял.
Просто в моем решении их можно не писать и можно писать( реализовано только OnChartEvent). И при этом они все равно будут выполняться.

А в Вашем варианте наличие их обязательно.

Обратите внимание на пример индикатора для класса iCanvas

В его теле нет функции OnChartEvent, хотя она выполняется. Если вы впишите в тело этого индикатора эту функцию со своей обработкой, то ошибки не будет.

 
Nikolai Semko:

я прекрасно понял.
Просто в моем решении их можно не писать и можно писать. И при этом они все равно будут выполняться.

А в Вашем варианте наличие их обязательно.

С OnFunc( void ) такое не прокатит. Более того, тот же OnChartEvent может быть вызываемым методом.

 
fxsaber:

С OnFunc( void ) такое не прокатит. Более того, тот же OnChartEvent может быть вызываемым методом.

Да, с безпараметрической функцией реальная головоломка. Пока не нашел решения.

А с методами не понял. Что, у Вас эта проблема решена? Ведь Вы тоже используете дефайн имен ON- функций, как я понимаю.

 
Nikolai Semko:

А с методами не понял. Что, у Вас эта проблема решена? Ведь Вы тоже используете дефайн имен ON- функций, как я понимаю.

Да, решена.

 
fxsaber:

Да, решена.

Т.е. если я буду использовать в своем советнике или индикаторе Ваш Tester.mqh и в моем классе будет одноименный метод OnChartEvent, то проблем у меня не будет и ошибок не будет?

Причина обращения: