Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 807

 
borilunad:

Спасибо, большое! Проверил через Comment, работает! Видимо не правильно информацию принял про использование нескольких ТФ в тестере.
 
Veterros:
Спасибо, большое! Проверил через Comment, работает! Видимо не правильно информацию принял про использование нескольких ТФ в тестере.
Не за что, всегда проверяйте комментом в тестере в VisualMode и на демо! Я провожу тестирование на М1 на открытых барах, а эксперт может висеть на любом ТФ, но желательно, чтобы были открыты все графики, начиная с М1 до ТФ включительно, с которого тоже берутся данные. У меня до D1, т.к. пользуюсь дневными линиями Пивота, сопротивлений и поддержек.
 

Здравствуйте! Прикрепленный индикатор рисует фракталы. Рисует он их прямо на хай/лоу баров и из-за этого не видно самих хай/лоу. Подскажите, как сделать, чтобы можно было регулировать расстояние между фракталом и баром? Нужно, чтобы фрактал был немного выше/ниже бара.

Если это не сложные действия, возможно не составит труда это сделать прямо в этом индикаторе...

Помогите, пожалуйста!

Файлы:
 
Serhios:

Здравствуйте! Прикрепленный индикатор рисует фракталы. Рисует он их прямо на хай/лоу баров и из-за этого не видно самих хай/лоу. Подскажите, как сделать, чтобы можно было регулировать расстояние между фракталом и баром? Нужно, чтобы фрактал был немного выше/ниже бара.

Если это не сложные действия, возможно не составит труда это сделать прямо в этом индикаторе...

Помогите, пожалуйста!

Очевидно, надо добавить какое-то значение для верхнего фрактала и вычесть такое же значение для нижнего, тогда фракталы будут смещены по вертикали. Подойдёт, например, значение ATR, как в прицепе.
Файлы:
 
evillive:
Очевидно, надо добавить какое-то значение для верхнего фрактала и вычесть такое же значение для нижнего, тогда фракталы будут смещены по вертикали. Подойдёт, например, значение ATR, как в прицепе.

Спасибо. Но, неужели в решении данной задачки нужно задействовать значение другого индикатора. Ведь есть значение бара на котором нарисовался фрактал. Разве нет функции, которая сместит фрактал по вертикали относительно значения хай/лоу бара?
 
Serhios:

Спасибо. Но, неужели в решении данной задачки нужно задействовать значение другого индикатора. Ведь есть значение бара на котором нарисовался фрактал. Разве нет функции, которая сместит фрактал по вертикали относительно значения хай/лоу бара?

Вместо значения индикатора можно взять любое значение в пунктах (целое), помноженное на _Point, будет постоянное смещение на данное кол-во пунктов. С индикатором проще, нет необходимости подбирать расстояние.

Пример для верхнего фрактала:

Ext1[i+center] = cur + 30*_Point;
 
evillive:

Вместо значения индикатора можно взять любое значение в пунктах (целое), помноженное на _Point, будет постоянное смещение на данное кол-во пунктов. С индикатором проще, нет необходимости подбирать расстояние.

Пример для верхнего фрактала:

Лучше масштабировать, иначе значки фракталов будут уползать за границы экрана. Можно так: 

// Определение LastBar по расположению StopLine на графике
bool fNewStopLine(){
   bool New;
   int StopBar, Error;
   double Shift;
   datetime StopLine;
   if( ObjectFind("StopLine")==0 ){                // Есть стоп-линия
      StopLine=ObjectGet("StopLine",OBJPROP_TIME1);// Время стоп-линии
      StopBar=iBarShift(NULL,0,StopLine);          // Бар стоп-линии
      LastBar=StopBar+1;                           // Бар окончания построения
      if( StopBar<=БарОкончания ){                 //    правее или на последнем баре
         LastBar=БарОкончания;                     // Перенести на нулевой бар
         StopBar=LastBar-1;
         StopLine=Time[StopBar];
         if( !ObjectMove("StopLine",0,StopLine,0) ){
            if( !РежимОтладки ) PlaySound("alert.wav");
            Print("***   StopLine - объект не перемещен, ошибка "+GetLastError());
      }  }
      if( StopLine!=OldStopLine ){                 // Новая стоп-линия
         ReInit();                                 // Повторная инициализация
         ClearScreen();                            // Очистить экран
         Shift=0.01*(WindowPriceMax()-WindowPriceMin())*СдвигИндикатораТиков;
         Error=fArrow("TickIndicator","",0,StopBar // Сформировать индикатор тика
                     ,WindowPriceMin()+Shift,0,0,0,0
                     ,ЗнакИндикатораТиков,ЦветИндикатораТиков,РазмерИндикатораТиков);
         OldStopLine=StopLine;                     // Стоп-линия обработана
         New=true;                                 // Выполнить построение заново
      }
      else{                                        // Нет новой стоп-линии
         New=false;                                // Построение заново не выполнять
   }  }
   else{                                           // Нет стоп-линии
      New=false;                                   // Построение заново не выполнять
      Error=fObjectDelete("TickIndicator");        // Удалить индикатор тика
   }
   return(New);
}
а можно просто использовать значки фракталов, не закрывающие экстремумы баров, вот так: 

 

Всё-таки непонятно мне про приоритеты и порядок операций, вот, например,

*
/
%

Умножение
Деление
Деление по модулю

Слева направо


Чему будет равно выражение а=б/с*с, а=б или же а=б/с^2?

 
evillive:


Чему будет равно выражение а=б/с*с, а=б или же а=б/с^2?

Проверил скриптом:

   double a;
   double b=10.0;
   double c=4.0; 
   a=b/c*c;
   Print("a=",a);

 Принт в журнале: a=10.0

PS: а если сделать так:  a=c*c/b;  то принт будет а=1.6

 
tuner:

Проверил скриптом:

 Принт в журнале: a=10.0

PS: а если сделать так:  a=c*c/b;  то принт будет а=1.6

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


А на практике сначала деление, потом умножение...