Вопрос к знатокам MQL - страница 7

 

Кто встречал похожую проблему: при тестировании советника в журнале сперва появляется несколько строк типа "2010.08.18 22:23:37 TestGenerator: unmatched data error (volume limit 32 at 2010.08.18 21:15 exceeded)" и значок "Въезд воспрещён" (из ПДД). А потом идут информационные строки по ходу тестирования. Это недостаток сервера ДЦ или советник что-то не то запрашивает?

 

Обычно, так бывает, если некорректно заданы даты начала и окончания тестирования.

Либо, на начальном участке тестирования  некорректные котировки (или отсутствие их), - дыры, пропуски баров на разных тф и т.п...

 
pathfinder1:

Кто встречал похожую проблему: при тестировании советника в журнале сперва появляется несколько строк типа "2010.08.18 22:23:37 TestGenerator: unmatched data error (volume limit 32 at 2010.08.18 21:15 exceeded)" и значок "Въезд воспрещён" (из ПДД). А потом идут информационные строки по ходу тестирования. Это недостаток сервера ДЦ или советник что-то не то запрашивает?

А для прикола: сделайте поиск по сайту с запросом "TestGenerator: unmatched data error", а потом нам расскажете.
 

Дебри... volume limit меняется от 32 до 4826 . Но похоже на то, что история не сформирована. Ведь задаю другой отрезок времени - и всё ОК.

 

1) перезакачать историю, сначала по кнопке "Page Ap", потом через Историю котировок, пересчитать все ТФ, зайти в тестер/историю и стереть все файлы - должно попустить, или у вас в истории дыра, тогда надо удалить всю хистори, и провести все операции.

 

Добрый день всем!

Опять вопрос по треугольнику в окне индикатора.

Добилась нормальной отрисовки треугольника - острием в сторону схождения. 

Но вот никак не пойму,

1. Как мне задать цвет треугольника в функции

ObjectCreate("TRIANGLE", OBJ_TRIANGLE,WindowFind(WindowExpertName()), 
         level_1, delta_1,  level_2,delta_2,    level_3,delta_3); 

если там не предусмотрено цветовой опции ?

2. У меня не меняется направление треугольника, при смене схождения/расхождения линий.

Код я задаю вот так:

 datetime  level_1, level_2, level_3;

if ( MathAbs(Symbol1[1]-SymbolS[1]) > MathAbs(Symbol1[0]-SymbolS[0]) ) {
//если имеет место  схождение линий SUM-RDX, задаем переменные для 
// вершины треугольника вправо-  
        level_1=Time[0]+3500;  delta_1= 0.1;
        level_2=Time[0]+3500;  delta_2=-0.1;
        level_3=Time[0]+10500;  delta_3   =0;  
 }       
if ( MathAbs(Symbol1[1]-SymbolS[1]) <= MathAbs(Symbol1[0]-SymbolS[0]) )
{//если имеет место  расхождение линий SUM-RDX, задаем переменные для
// вершины треугольника влево -      
       level_1=Time[0]+3500;  delta_1=0;
       level_2=Time[0]+10500;  delta_2=0.1;
       level_3=Time[0]+10500;  delta_3=-0.1;
  } 
  //==задаем отрисовку треугольника ===================                  
ObjectCreate("TRIANGLE", OBJ_TRIANGLE,WindowFind(WindowExpertName()), 
              level_1, delta_1 ,level_2,delta_2,level_3,delta_3); 

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

Деинит задаю.

int deinit()  {
ObjectDelete("TRIANGLE");
   return(0);  }
 

1. ObjectSet( name, OBJPROP_COLOR, col); // name - имя объекта, col - цвет объекта

2. для изменения значений координат используйте

ObjectSet(name, OBJPROP_PRICE1, price1);
ObjectSet(name, OBJPROP_PRICE2, price2);
ObjectSet(name, OBJPROP_PRICE3, price3);
ObjectSet(name, OBJPROP_TIME1, time1);
ObjectSet(name, OBJPROP_TIME2, time2);
ObjectSet(name, OBJPROP_TIME3, time3);

 

Благодарю, keekkenen !

Сделала, как вы написали. Всё работает так, как и нужно !!! 

 

 

Добрый день всем.

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

Даже не знаю, как подойти к решению вопроса.

Сделала вот так:

 color Color_C ;
 double BufW[];

int init() {
    
  SetIndexStyle(4,DRAW_LINE,STYLE_DOT,2,Color_C);
  SetIndexBuffer(4,BufW);
  SetIndexLabel(4,"Channel width");
  return(0);
               }
int start() {
  
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
.... .... ... 
    BufW[i]=(iMA(Symbol3.Name,Period(),MA........ .... );
                             }  // Конец отрисовки ценовых линий

if( BufW[i-1] => BufW[i] )   Color_C = Green;
  else  Color_C = Red;


Но это не работает.

 

SetIndexStyle(4,DRAW_LINE,STYLE_DOT,2,Color_C);
SetIndexBuffer(4,BufW);
SetIndexLabel(4,"Channel width");

SetIndexStyle( 5,DRAW_LINE,STYLE_DOT,2,Color_X);
SetIndexBuffer( 5,BufX);
SetIndexLabel( 5,"Channel width");

..............

......................

double ma=iMA(...................,................,i);

double ma1=iMA(......,...............,...........I+1);

if(ma>ma1)

BufW=ma;

else

BufX=ma;

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