[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 197

 

Объясните. Никак не пойму. Почему условие

int Takeprofit = 62;

pp = MarketInfo(OrderSymbol(), MODE_POINT);

if(OrderTakeProfit() - OrderOpenPrice() < Takeprofit*pp )

срабатывает как истинное? Хотя обе части равны!! Как видно из нижеследующего.

2009.08.22 18:50:31 1999.10.11 23:43 Delta EURUSD,M1: OrderTakeProfit() - OrderOpenPrice() = 0.0062 Takeprofit*pp = 0.0062

Спасибо!

 

Раз работаете с вещественными числами, должны знать, что 0.0062 на самом деле может быть и 0.0061999, и 0.0062001.

Используйте нормализацию.

 
OneDepo писал(а) >>

Раз работаете с вещественными числами, должны знать, что 0.0062 на самом деле может быть и 0.0061999, и 0.0062001.

Используйте нормализацию.

Я пробовал нормализовать Takeprofit*pp - ничего не дало. Может обе стороны уравнения надо нормализовать?

 
001 >>:

Я пробовал нормализовать Takeprofit*pp - ничего не дало. Может обе стороны уравнения (исп. неравенства) надо нормализовать?

Да.

Второй вариант - работать с типом int, например:

int temp = 0.5 + (OrderTakeProfit() - OrderOpenPrice())/pp;
if (temp < Takeprofit)
 
OneDepo писал(а) >>

Да.

Второй вариант - работать с типом int, например:

Спасибо!

 

Здравствуйте!

как изменить цвет линии индикатора в зависимости от условия - например чтобы разный диапазон баров имел разный цвет?

Функция SetIndexStyle, которая как бы должна это делать, не отрабатывает ни установку цвета ни толщины линии- см рисунок

Код примера см ниже.

Каждая ступень должна быть другого цвета и толщины, а они все только красные и толщины 2.

//+------------------------------------------------------------------+
//|                                                       MinMax.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Gray

//---- buffers
double ExtMapBuffer1[];
double Val;
int ExtCountedBars=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Brown);
   SetIndexBuffer(0,ExtMapBuffer1);
   Val=Close[Bars-1];
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   

   if(Bars<=100) return(0);
   ExtCountedBars=IndicatorCounted();

   //---- check for possible errors
   if (ExtCountedBars<0) return(-1);
   if (ExtCountedBars>0) ExtCountedBars--;
   int    i,pos=Bars-ExtCountedBars-1; 
   Comment(Bars," ",ExtCountedBars, " ", pos); 
//---- last counted bar will be recounted
   
//----

   while(pos>=0) {
        
         if (pos<100 && pos>0)   { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Red); Val=1.45; }
         if (pos<200 && pos>100) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,Blue); Val=1.44; }
         if (pos<300 && pos>200) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4,Yellow); Val=1.43; }
         if (pos<400 && pos>300) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,5,Magenta); Val=1.42; }
             
      ExtMapBuffer1[pos]= Val;
    
    pos--;
     }
  return(0);
  }
//+------------------------------------------------------------------+
 
stera писал(а) >>

Здравствуйте!

как изменить цвет линии индикатора в зависимости от условия - например чтобы разный диапазон баров имел разный цвет?

Функция SetIndexStyle, которая как бы должна это делать, не отрабатывает ни установку цвета ни толщины линии- см рисунок

Код примера см ниже.

Каждая ступень должна быть другого цвета и толщины, а они все только красные и толщины 2.

Использовать дополнительные буферы, каждый со своим стилем и цветом

 
Vinin >>:

Использовать дополнительные буферы, каждый со своим стилем и цветом

Когда-то инициировал подобный вопрос, и совместными усилиями разобрались в том, что и так должно было ясно :))

SetIndexStyle при использовании в старте честно меняет цвет, но всего буфера сразу. То есть на текущем графике буфер (линия) будет иметь цвет, соответствуюший последнему сработавшему применению SetIndexStyle.

 
stera писал(а) >>

Здравствуйте!

как изменить цвет линии индикатора..

Посмотрите здесь .

 
granit77 писал(а) >>

Когда-то инициировал подобный вопрос, и совместными усилиями разобрались в том, что и так должно было ясно :))

SetIndexStyle при использовании в старте честно меняет цвет, но всего буфера сразу. То есть на текущем графике буфер (линия) будет иметь цвет, соответствуюший последнему сработавшему применению SetIndexStyle.

Большое спасибо, granit77.

исчерпывающий ответ.
я так и подозревал, но не мог поверить, что в эту функцию заложена такая странная идея.

Возможно, что для каких-то целей и надо менять цвет всего буфера, но более практичным является

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

В EasyLang например, это есть.

Напишу разработчикам.

А есть ли где-то более подробное описание функций MQL?

С илюстрациями действия тех или иных параметров?

А то все параметры приходится либо тестить самому, либо выкусывать из чужих примеров.

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