Скачать MetaTrader 5

Помогите разобраться, странная ситуация.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Escalibur
286
Escalibur  
Есть советник, входит по пересечению кривой индикатора SSRC уровня шкалы. В тестере работает очень медленно и по нажатию на кнопку стоп окно индикатора закрашивается белым цветом. Оказалась, что эта закраска это 256 окон индикатора. При запуске советника в тестере он начинает накидывать окна индикатора и дойдя по 256 прекращает, при этом эта ситуация только у меня, у разработчика такого нет. Уже голову сломали оба. Помогите пожалуйста.
Файлы:
experts.zip 39 kb
Vitalie Postolache
12267
Vitalie Postolache  
На настройках по умолчанию мне повторить такое не удалось, индикатор в одном окошке только, работает с обычной скоростью. Опубликуйте конфигурацию компьютера (железо, версия виндовс) и все настройки тестера, пробуйте на другом терминале. И поменяйте алгоритм трала, попытки модификаци ордера чуть ли не на каждом тике до добра не доведут ;)
Escalibur
286
Escalibur  
Действительно на терминале другого брокера все работает.Спасибо! Интересно почему в альпаривском не получается. причем на разных компах пробовал - одно и тоже.
Escalibur
286
Escalibur  
это происходит только на 5 знаковом брокере.(((
Vitalie Postolache
12267
Vitalie Postolache  

Мне вот что интересно, в комплекте есть индикатор ТМА, очень интересный, надо сказать. Так в нём вот такой кусок кода:

limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for(i=limit; i>=0; i--)
   {
      int y = iBarShift(NULL,timeFrame,Time[i]);
      buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,0,y);
      buffer2[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,1,y);
      buffer3[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,2,y);
      trend[i]   = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,3,y);


А таких iCustom нету, к которым он обращается, ошибок тоже никаких не пишет, рисует вроде ТМА, похожий на другие такие же индикаторы. Чудеса...

Artyom Trishkin
Модератор
77523
Artyom Trishkin  
evillive:

Мне вот что интересно, в комплекте есть индикатор ТМА, очень интересный, надо сказать. Так в нём вот такой кусок кода:


А таких iCustom нету, к которым он обращается, ошибок тоже никаких не пишет, рисует вроде ТМА, похожий на другие такие же индикаторы. Чудеса...

Если indicatorFileName - это имя данного индикатора, то он обращается сам к себе. Отсюда могут и вытекать те ошибки, о которых тут писалось выше.

Я уже встречал такой индикатор, который при определённых условиях запрашивает сам себя, но с другими настройками.

Artyom Trishkin
Модератор
77523
Artyom Trishkin  

Вот тут он вызывает себя с параметром returnBars

iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)

А вот тут он вызывает себя с параметром "calculateTma"

iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,0,y)

Ищите в нём проверку на эти входные параметры и получите ответ. Может и найдётся баг с пятизнаком...

Vitalie Postolache
12267
Vitalie Postolache  

Да, он сам себя вызывает, причём параметры вызова довольно странно переплетаются чуть выше по коду, а параметра "calculateTma" который он себе передаёт (о нём выше писалось) и вовсе нигде нету в коде, только "returnBars" и "calculateValue" есть:

string indicatorFileName;
bool   calculateValue;
bool   returnBars;
int    timeFrame;

      indicatorFileName = WindowExpertName();
      returnBars        = TimeFrame=="returnBars";     if (returnBars)     return(0);
      calculateValue    = TimeFrame=="calculateValue"; if (calculateValue) return(0);
      timeFrame         = stringToTimeFrame(TimeFrame);

А вот вызов индикатора:

iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,0,y) //насколько я могу понять, тут надо заменить "calculateTma" на "calculateValue", но меня другое удивило, индикатор работает и так...

З.Ы.: А на пятизнаке, насколько я понял, второй индикатор из комплекта багнутый (тот что в отдельном окне, открывает сразу 256 раз себя), а может и код советника виновен:

Оказалась, что эта закраска это 256 окон индикатора. При запуске советника в тестере он начинает накидывать окна индикатора и дойдя по 256 прекращает, при этом эта ситуация только у меня, у разработчика такого нет

Vladimir Gomonov
8283
Vladimir Gomonov  
artmedia70:

Если indicatorFileName - это имя данного индикатора, то он обращается сам к себе. Отсюда могут и вытекать те ошибки, о которых тут писалось выше.

Я уже встречал такой индикатор, который при определённых условиях запрашивает сам себя, но с другими настройками.

Вумён, ага. Похоже попал в точку.
Escalibur
286
Escalibur  
artmedia70:

Если indicatorFileName - это имя данного индикатора, то он обращается сам к себе. Отсюда могут и вытекать те ошибки, о которых тут писалось выше.

Я уже встречал такой индикатор, который при определённых условиях запрашивает сам себя, но с другими настройками.

У меня проблемы именно со вторым - SSRC. ТМА вроде работает.
Escalibur
286
Escalibur  
А почему на 4-х работает а на 5 вылетает?
1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий