Проблеммы при тестировании

 
У важаемые создатели MT4.

У меня к вам вопросы.

1. Когда я тестирую, то при отладке "забываю" закрывать окрытые после тестирования окна графиков,
если их накопилось штук 5-8, то через некоторое время компьютер выдает, что виртуальная память заканчивается. И вообще работа становится медленной. Почему так? И что теперь делать.

2. Не могли бы Вы сделать в последующей версии тестера - гибкий режим вывода графиков, или с перерисовкой, или без. То что нужно бесконца открывать новый график - это просто дико!!!
И дико неудобно. Спросите кого угодно из тех кто "влип" с Вашим тестером. Они Вам, я почти уверен скажут тоже самое.

3. Большинство экспертов которые я тестирую,- на графике выводимого индикатора - одно, а сделки открываются и закрываются не в тех местах где стоят условия? Почему так?

Извините, может я слишком резско, но говоря просто по-русски - я затрахался.
То что в Омеге делается за 5 минут, на то в МТ4 уходят часы и дни.
Если опять же сказать порезче - программа дикий вампир времени.
Но она к сожалению единственная, которая навязывается нашими русскоязычными серверами.

Я понимаю Вас, что это большой труд сделать такую программу, но постарайтесь все-же к людям отнестись по-человечески, тогда я думаю и к Вам окружающие тоже будут так относиться.

Все равно с уважением - Александр.
 
Чтобы не быть голословным привожу текст индикатора и эксперта, попрбуйте протестировать с 3.11.2005 по 8.11.2005, но может и я где-то что-то сделал неправильно. Тестиравал на EURUSD5 в режиме со всеми тиками.

Индикатор:
//-----------at_ALR+ma2-------------
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 SkyBlue
#property indicator_color2 Red
#property indicator_color3 Silver
//-------------------------------------
extern int hrLR=14;
extern double k=0.5;
extern double k2=0.5;
extern double kma=0.25;
//----------------------
double at[],ma3[],a0[];
double lr[10000],sx,sy,sxy,sx2,aa,bb;
double sum,sum2,ma[10000],ma2,sum3;
int p,pma,pma2,pma3;
//******************************************************************
int init() {
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,at);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ma3);
   SetIndexBuffer(2,a0);
//-------------------------------------------
p=hrLR*60/Period(); pma=p*k; pma2=p*k2; pma3=p*kma;
//-------------------------------------------
return(0);}
//******************************************************************
int start() {
int cbi,i,n;
//int counted_bars=IndicatorCounted();
//if (counted_bars<0) return (-1);
//if (counted_bars>0) counted_bars--;
cbi=Bars-IndicatorCounted()-2;
//------------------------------------ 
for(i=cbi; i>=0; i--) {
if (i<Bars-p-1) {sx=0; sy=0; sxy=0; sx2=0; 
for (n=0; n<=p-1; n++) {sx=sx+i+n; sy=sy+Close[i+n]; sxy=sxy+(i+n)*Close[i+n]; sx2=sx2+MathPow(i+n,2);}   
aa=(sx*sy-p*sxy)/(MathPow(sx,2)-p*sx2); bb=(sy-aa*sx)/p;
lr[i]=bb+aa*i;}
if (i<Bars-p-pma-1) { sum=0.0; for (n=0; n<=pma-1; n++) {sum+=lr[i+n];} ma[i]=sum/pma;}
if (i<Bars-p-pma-pma2-1) { sum2=0.0; for (n=0; n<=pma2-1; n++) {sum2+=ma[i+n];} ma2=sum2/pma2; 
at[i]=(ma[i]-ma2)/Point; }
if (i<Bars-p-pma-pma2-pma3-1) { sum3=0.0; for (n=0; n<=pma3-1; n++) {sum3+=at[i+n];} ma3[i]=sum3/pma3;}
a0[i]=0.0000001;
}
//--------------------------------------------------------------------
   return(0);}
//********************************************************************



Эксперт:

//-----------at_ALR+ma2--------------------
extern int hrLR=14;
extern double k=0.5;
extern double k2=0.5;
extern double kma=0.43;
//-------------------
extern double TakeProfit = 200;
extern double StopLoss = 200;
extern double Lots = 1;
//---------------------------------
double at,atp,ma,map;
int nn,kk,f;
//***************************************************************
int start() {
int cnt, ticket, total, bar;
//----------------------------------
at = iCustom(NULL,0,"at_ALR+ma2",hrLR,k,k2,kma,0,0);
atp = iCustom(NULL,0,"at_ALR+ma2",hrLR,k,k2,kma,0,2);
ma = iCustom(NULL,0,"at_ALR+ma2",hrLR,k,k2,kma,1,0);
map = iCustom(NULL,0,"at_ALR+ma2",hrLR,k,k2,kma,1,2);
//*******************************************************************************************
total=OrdersTotal();
if(total<1) { 
kk=0;
//--------------------------
if (f==0) {
if (at>=ma && atp<map) nn=1; 
if (at<=ma && atp>map) nn=2; }
if (nn==1) {ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"at_ALR+ma2",0,0,Blue);}
if (nn==2) {ticket=OrderSend (Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"at_ALR+ma2",0,0,Red);}
//--------------------------
return(0);}
//*******************************************************************************************
for(cnt=0;cnt<total;cnt++) {
nn=0; OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//---------------------------------------------------------
if(OrderType()==OP_BUY) {if (at<=ma && atp>map) {kk=2; nn=2;} 
if (kk==2) {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); return(0);}}   
//--------------------------------
if(OrderType()==OP_SELL) {if (at>=ma && atp<map) {kk=1; nn=1;} 
if (kk==1) {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); return(0);}}
//*******************************************************************************************
}
return(0);}
//+------------------------------------------------------------------+
 
Вопрос первый - какая операционка?

1. Когда я тестирую, то при отладке "забываю" закрывать окрытые после тестирования окна графиков,
если их накопилось штук 5-8, то через некоторое время компьютер выдает, что виртуальная память заканчивается. И вообще работа становится медленной. Почему так? И что теперь делать.

А как много графических объектов и сделок на каждом графике?

2. Не могли бы Вы сделать в последующей версии тестера - гибкий режим вывода графиков, или с перерисовкой, или без. То что нужно бесконца открывать новый график - это просто дико!!!
И дико неудобно. Спросите кого угодно из тех кто "влип" с Вашим тестером. Они Вам, я почти уверен скажут тоже самое.

Чтобы закрыть окно, нужно два щелчка мыши или комбинация клавиш Ctrl+W. Совершенно не вижу проблем в этом.

3. Большинство экспертов которые я тестирую,- на графике выводимого индикатора - одно, а сделки открываются и закрываются не в тех местах где стоят условия? Почему так?

Это напрямую зависит от написанного кода эксперта. Проверьте, пожалуйста, каждое расхождение и подумайте - почему так случается. Нет ли ошибки в коде или неправильного понимания ситуации?

То что в Омеге делается за 5 минут, на то в МТ4 уходят часы и дни.

Ну это видимо сгоряча выдали. Не нужно грешить на инструмент. Может дело в чем-то другом.
 
Вопрос первый - какая операционка?

Операционка Windows XP

[/quote]А как много графических объектов и сделок на каждом графике? [/quote]


Конкретно, я специально далее привел код индикатора и эксперта, там всего 2 линии и 1 гистограмма,
на этой комбинации, когда открыто 5-10 графиков и выдается сообщение о нехватке виртуальной памяти.
Незнаю, связано ли это с тем что у меня там 4 цепочки циклов, то есть Линейная регрессия, от нее 1-ый mov,
от него 2-ой mov, от разности 2-х первых - 3-ий mov.average. Вынужден накручивать столько циклов, потому что Ваш iMAOnArray не работает на такой комбинации.

Чтобы закрыть окно, нужно два щелчка мыши или комбинация клавиш Ctrl+W. Совершенно не вижу проблем в этом.

Незнаю почему Вы так упрямничаете с этим крайне неудобным режимом, толи у Вас проблемка отношений с разработчиком тестера, к которому близско не подходи, а то укусит, толи неохота переделывать, толи считаете, что это решение верх технологического прогресса, которое сделает МТ4 неподражаемым.
Но если как работают профессиональные компании, провели бы опрос, хотя бы на форуме, сколь удобно такое решение. Но, пока во всех Ваших прибамбасах с программированием разберешься, и по 40-70 раз пощелкаете на открывание графика, - у Вас просто палец будет отваливаться. А скорее всего Вы просто не работали на нем в режиме нормального разработчика. Вот и не видите никаких проблем.


Это напрямую зависит от написанного кода эксперта. Проверьте, пожалуйста, каждое расхождение и подумайте - почему так случается. Нет ли ошибки в коде или неправильного понимания ситуации?

Насчет кода я уже его привел, може там и есть ошибки, не могу утверждать, но ведь график-то строит идеально, а эксперт берет совсем не в тех точках. И это не только в этом эксперте, а практически все дивергенции нормально не работают.

То что в Омеге делается за 5 минут, на то в МТ4 уходят часы и дни.
Ну это видимо сгоряча выдали. Не нужно грешить на инструмент. Может дело в чем-то другом.

Вот конкретно на постраение данной комбинации, которую я привел, вместе с тестированием, в Омеге у меня ушло минут 15. И берет тютелька в тютельку. А с МТ4 - второй день мучаюсь. И это уже повторялось много раз. Вся прелесть тестера, где заведены реальные спреды, и возможность уточненного теста, становится просто пустышкой-конфеткой под носом у ребенка.
Прошу Вас отнестись к тому, что я сказал со вниманием. Цените время других и свое тоже. Его к сожалению не бесконечное количество, по крайней мере на физическом уровне.

С уважением Александр.
 
У меня еще 2 вопроса к разработчикам.

1. Есть ли в МТ4 команда, чтобы при срабатывании условий на покупку или продажу, ордер генерировался бы в начале следующего бара. Или нужно городить нечто типа if (bar!=Bars) ?

2. Почему при тестировании отложенных ордеров не ставится значек при включении Buy или Sell,
а ставится только в точке постановки ордера. И что теперь, разукрашивать и нагромождать что-то, типа Arraw, чтобы видеть этот момент? Или можно сделать чтобы ставил отметку при включении?
 
Я бы рекомендовал не путать теоретические тесты (Омега, Метасток, отвлеченные от реальности команды купить/продать) с реальной работой (МетаТрейдер, реальные торговые заявки с реальной обратной связью).

Если есть расхождения в индикаторах и торговле по ним, то нужно проверять свой код.
Насчет кода я уже его привел, може там и есть ошибки, не могу утверждать, но ведь график-то строит идеально, а эксперт берет совсем не в тех точках. И это не только в этом эксперте, а практически все дивергенции нормально не работают.


1) к сожалению, Вы не принимаете во внимание то, что используете "режим с потиковым моделированием, при котором бар может видоизменяться десятки и сотни раз(десятки и сотни промежуточных состояний)".
2) графики Вы смотрите в сформировавшемся состоянии (одно состояние).
3) условия пересечения слишком просты
if (at>=ma && atp<map) nn=1; 
if (at<=ma && atp>map) nn=2;


необходимо проверять как минимум две-три точки, а не принимать решение на однократной проверке(подумайте о разнице в 0.0000001 между сблизившимися линиями?)

Обратите внимание также на статьи из раздела:
https://www.mql5.com/en/code

 
У меня еще 2 вопроса к разработчикам.

1. Есть ли в МТ4 команда, чтобы при срабатывании условий на покупку или продажу, ордер генерировался бы в начале следующего бара. Или нужно городить нечто типа if (bar!=Bars) ?

Такой отложенной команды нет, необходимо самостоятельно принимать решение (и контролировать исполнение) в любой момент времени.

2. Почему при тестировании отложенных ордеров не ставится значек при включении Buy или Sell,
а ставится только в точке постановки ордера. И что теперь, разукрашивать и нагромождать что-то, типа Arraw, чтобы видеть этот момент? Или можно сделать чтобы ставил отметку при включении?

Этот момент мы упустили - обязательно улучшим. Спасибо.
 
1. Есть ли в МТ4 команда, чтобы при срабатывании условий на покупку или продажу, ордер генерировался бы в начале следующего бара. Или нужно городить нечто типа if (bar!=Bars) ?

Можно сделать так:
if(условие открытия ордера && Volume[0]>0) x=1;
if(x==1 && Volume[0]<1) OrderSend.....
Только проинициализируй х в начале программы.
 
Я бы рекомендовал не путать теоретические тесты (Омега, Метасток, отвлеченные от реальности команды купить/продать) с реальной работой (МетаТрейдер, реальные торговые заявки с реальной обратной связью).

Я уже отмечал, что Ваш тестер этим потенциально и хорош.


1) к сожалению, Вы не принимаете во внимание то, что используете "режим с потиковым моделированием, при котором бар может видоизменяться десятки и сотни раз(десятки и сотни промежуточных состояний)".
2) графики Вы смотрите в сформировавшемся состоянии (одно состояние).
3) условия пересечения слишком просты
if (at>=ma && atp<map) nn=1; 
if (at<=ma && atp>map) nn=2;


необходимо проверять как минимум две-три точки, а не принимать решение на однократной проверке(подумайте о разнице в 0.0000001 между сблизившимися линиями?)



Вообще-то я это принимал во внимание, но при тестировании в режиме "контрольные точки" и "по ценам открытия" - те же несовпадения. Более того я сделал распринтовку показаний индикаторов в эксперте и он выдает несколько другие данные, чем в индикаторе на графике? Почему так? Ведь в этом причина.
Условия пересечения при неправильных данных не будут работать хоть на 100 точках перепроверки.

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

Я сделал скрипт, который ставит текущий профит и общий профит прямо на графике, в точках закрытия, - очень приятная и полезная для анализа штука, но вот в конце тест резско обрывается и не удается проставить окончательный профит и балланс, видимо потому что функция start перестает работать,
а так хотелось бы видеть заключительный результат прямо на графике. Можно ли как то сделать, что бы
окончательные данные все-таки отобразились бы?

Заранее благодарю - Александр.
 
Более того я сделал распринтовку показаний индикаторов в эксперте и он выдает несколько другие данные, чем в индикаторе на графике? Почему так?

Проверьте, пожалуйста, каждый случай и подумайте, почему так?
Уверен, что найдете ошибку в своем понимании/восприятии ситуации.

Я сделал скрипт, который ставит текущий профит и общий профит прямо на графике, в точках закрытия, - очень приятная и полезная для анализа штука, но вот в конце тест резско обрывается и не удается проставить окончательный профит и балланс, видимо потому что функция start перестает работать,
а так хотелось бы видеть заключительный результат прямо на графике. Можно ли как то сделать, что бы
окончательные данные все-таки отобразились бы?

К сожалению, нет. В конце теста все позиции принудительно закрываются без уведомления.
 

Проверьте, пожалуйста, каждый случай и подумайте, почему так?
Уверен, что найдете ошибку в своем понимании/восприятии ситуации.


Вот видите на что Вы меня подписываете. Сейчас Вы сами попали в капкан который невольно выставили для всех потребителей тестера МТ4. То есть Вы не можете ответить на этот вопрос потому, что просто не видите, что считает тестер. На мой взгляд при проектировании Вы изначально пошли по ложному пути и сейчас идет цепная реакция. Одна ошибка вызывает другую. Вам лучше было сделать просто режим plot, который выводил бы на графике реальные расчетные данные, и все! И все бы были рады и потребители и создатели. Но исправить ошибку никогда не поздно. Мой совет - расслабьтесь, в конце -концов, сходите в церковь, очиститесь от ложных основ, и сделайте как лучше для оптимальной работы.
Инача хорошая идея реалистичного тестера будет просто обесценена и будет создавать несчастное состояние у всех кто им пользуется. Вам это надо?
Причина обращения: