Pergunta para os conhecedores - página 19

 

Pergunta sobre as ferramentas da linha Gann.

A linha Gunn é "construída em um ângulo de quarenta e cinco graus ", nagrade Gunn também, as linhas"construídas em um ângulo de 45 graus ". Deve ser uma coincidência, IMHO, mas eles não o fazem!

 
hedger:

Pergunta sobre as ferramentas da linha Gunn.

A linha Gunn é "construída em um ângulo de quarenta e cinco graus ", nagrade Gunn também, as linhas"construídas em um ângulo de 45 graus ". Deve ser uma coincidência, IMHO, mas eles não o fazem!

O ângulo correto é de 40 graus, Mendeleev estabelecido.

45 graus é siberiano.

 
hedger:

Pergunta sobre as ferramentas da linha Gunn.

A linha Gunn é "construída em um ângulo de quarenta e cinco graus ", nagrade Gunn também, as linhas"construídas em um ângulo de 45 graus ". Deve ser uma coincidência, IMHO, mas eles não o fazem!


E onde você encontrou os diplomas?
 
Vinin:

Onde você encontrou diplomas?

Aqui mesmo: https://www.metatrader5.com/ru/terminal/help/objects/gann/gann_line

"A Linha Gann

A Linha Gann é uma linha traçada em um ângulo de 45 graus. Esta linha também é chamada "one-to-one" (1x1), o que significa uma mudança no preço por unidade de tempo".

E aqui: https://www.metatrader5.com/ru/terminal/help/objects/gann/gann_grid

"A grade de Gann

Gann Grid representa tendências, construídas em um ângulo de 45 graus (Gann Lines)".

 

Boa tarde!

Aqui está a questão. Modifiquei ligeiramente a função da I.Kim e agora esta função retorna o número da barra onde o último pendente, bystop ou selltop foi definido.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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));
}

Além disso, eu preciso quase da mesma função. Mas deve retornar o número da barra onde não foi a última, mas as primeiras paradas foram definidas na tabela!

Eu não posso fazer isso. Por favor, me diga. - como fazer isso?

 
Rita:

Boa tarde!

Aqui está a questão. Modifiquei ligeiramente a função da I.Kim e agora esta função retorna o número da barra onde o último pendente, bystop ou selltop foi definido.

Além disso, eu preciso quase da mesma função. Mas deve retornar o número da barra onde não foi a última, mas as primeiras paradas foram definidas na tabela!

Eu não posso fazer isso. Por favor, me diga. - como fazer isso?

Estabelecer o valor inicial de t mais alto e mudar o sinal na condição
 if (t<OrderOpenTime())

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

Spsb. Eu mudei o sinal. Mas a função ainda não está funcionando. Coloquei isso no comentário. Continua retornando -1.

Além disso, eu não entendo muito bem. Onde e como exatamente devo definir um valor inicial maior de t ?

 
Rita:

Spsb. Eu mudei o sinal. Mas a função ainda não está funcionando. Coloquei isso no comentário. Continua retornando -1.

Além disso, eu não entendo muito bem. Onde e como estabelecer um valor inicial maior de t ?

datetime t;
t = TimeCurrent();

Você poderia simplesmente definir a hora atual.
 
Rita:

Boa tarde!

Aqui está a questão. Modifiquei ligeiramente a função da I.Kim e agora esta função retorna o número da barra onde o último pendente, bystop ou selltop foi definido.

Além disso, eu preciso quase da mesma função. Mas deve retornar o número da barra onde não foi a última, mas as primeiras paradas foram definidas na tabela!

Eu não posso fazer isso. Por favor, me diga. - como fazer isso?


Algo como isto

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));
}
 
Obrigado a todos vocês. Funcionou! A função está funcionando!