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

 

Вопрос по линейным инструментам Ганна.

Линия Ганна «строится под углом в сорок пять градусов», в Сетке Ганна тоже линии, «построенные под углом в 45 градусов». Должно бы быть совпадение, ИМХО, но ведь не совпадают!

 
hedger:

Вопрос по линейным инструментам Ганна.

Линия Ганна «строится под углом в сорок пять градусов», в Сетке Ганна тоже линии, «построенные под углом в 45 градусов». Должно бы быть совпадение, ИМХО, но ведь не совпадают!

Правильный угол - 40 градусов, Менделеев установил.

45 градусов- это сибирский.

 
hedger:

Вопрос по линейным инструментам Ганна.

Линия Ганна «строится под углом в сорок пять градусов», в Сетке Ганна тоже линии, «построенные под углом в 45 градусов». Должно бы быть совпадение, ИМХО, но ведь не совпадают!


А где вы градусы нашли?
 
Vinin:

А где вы градусы нашли?

Вот здесь: https://www.metatrader5.com/ru/terminal/help/objects/gann/gann_line

«Линия Ганна (Gann Line)

Линия Ганна (Gann Line) представляет собой линию, проведенную под углом в 45 градусов. Эту линию называют также "один к одному" (1x1), что означает одно изменение цены к единице времени».

и здесь: https://www.metatrader5.com/ru/terminal/help/objects/gann/gann_grid

«Сетка Ганна (Gann Grid)

Сетка Ганна (Gann Grid) представляет собой тренды, построенные под углом в 45 градусов (Линии Ганна)».

 

Добрый день!

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

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru/                  |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара установки последнего ордера или -1.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastOPDER(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

Кроме этого мне нужна почти такая-же функция. Но чтобы она возвращала номер бара установки не последнего, а самого первого из всех имеющихся на графике стопордеров!

Никак не могу этого добиться. Пож., подскажите. - как это сделать?

 
Rita:

Добрый день!

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

Кроме этого мне нужна почти такая-же функция. Но чтобы она возвращала номер бара установки не последнего, а самого первого из всех имеющихся на графике стопордеров!

Никак не могу этого добиться. Пож., подскажите. - как это сделать?

Задайте начальное значение t побольше и смените знак в условии
 if (t<OrderOpenTime())

на противоположный.
 

Спсб. Знак я сменила. Но функция пока не заработала. Вывела её в коммент. Она постоянно возвращает -1.

И ещё я не совсем поняла. Где именно и как нужно задать побольше начальное значение t ?

 
Rita:

Спсб. Знак я сменила. Но функция пока не заработала. Вывела её в коммент. Она постоянно возвращает -1.

И ещё я не совсем поняла. Где именно и как нужно задать побольше начальное значение t ?

datetime t;
t = TimeCurrent();

Можно просто задать текущее время.
 
Rita:

Добрый день!

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

Кроме этого мне нужна почти такая-же функция. Но чтобы она возвращала номер бара установки не последнего, а самого первого из всех имеющихся на графике стопордеров!

Никак не могу этого добиться. Пож., подскажите. - как это сделать?


Что-то примерно так

int NumberOfBarOpenFirstOPDER(string sy="0", int tf=0, int op=-1, int mn=-1) {
   datetime t=TimeCurrent();
   int      i, k=OrdersTotal();

   if (sy=="" || sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==sy) {
            if (op<0 || OrderType()==op) {
               if (mn<0 || OrderMagicNumber()==mn) {
                  if (t>OrderOpenTime()) t=OrderOpenTime();
               }
            }
         }
      }
   }
   return(iBarShift(sy, tf, t, True));
}
 
Всех благодарю. Получилось! Работает функция!
Причина обращения: