Calcule a distância entre duas linhas paralelas incluindo ! - página 3

 
Sergey Kolemanov:

Você está contando a distância entre Alto e Baixo , e ele tem linhas

Você está falando de linhas paralelas. E em linhas paralelas, a distância vertical é sempre a mesma em qualquer barra. Em seu exemplo, a distância entre as linhas é(Alta[10]-Baixa[10]). Você não precisa calcular o tempo para isso de forma alguma.

Você pode verificá-lo e terá o mesmo resultado o tempo todo.

Você pode encontrar uma fórmula mais geral aqui

Mas como o denominador está muito próximo de 1 mesmo na tabela de minutos, ele pode ser simplificado para:

double R=(Price2-Price1);

Já foi dito por @Renat Akhtyamov neste post

 
Sergey Kolemanov:
Dependendo do ângulo, a distância variará... Então qual é a diferença entre as linhas ? )
 
Itum:
Dependendo do ângulo, a distância variará... Então qual é a diferença entre as linhas ? )
Dependendo do ângulo, todas as distâncias mudarão por múltiplos, já que você tem um triângulo em ângulo reto. Portanto, não importa realmente onde você mede. Meça o que você acha que é a distância mais simples.
 
Renat Akhtyamov:
Dependendo do ângulo, todas as distâncias mudarão por múltiplos, já que você tem um triângulo em ângulo reto. Portanto, não importa onde você mede. Meça o que você acha que é a distância mais simples.

Por favor, mostre-me um exemplo.

 ObjectCreate("Line1",OBJ_TRENDBYANGLE,0,Time[0],High[10],Time[10],Low[10]);
   ObjectSetInteger(0,"Line1",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line1",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Line1",OBJPROP_WIDTH,2);
   
   ObjectCreate("Line2",OBJ_TRENDBYANGLE,0,Time[10],High[100],Time[20],Low[10]);
   ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2);

   ObjectSetDouble(0,"Line1",OBJPROP_ANGLE,260); // 85 
   ObjectSetDouble(0,"Line2",OBJPROP_ANGLE,260); // 85
/*   
   ObjectCreate("Value",OBJ_TREND,0,Time[0],High[10],Time[10],High[10]);
   ObjectSetInteger(0,"Value",OBJPROP_RAY,false);
   ObjectSetInteger(0,"Value",OBJPROP_COLOR,Gold);
   ObjectSetInteger(0,"Value",OBJPROP_WIDTH,3);
   */

// Предлагали сделать так и не помогает !

   double V = (ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0)-ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0))/((datetime)ObjectGetInteger(0, "Line1", OBJPROP_TIME, 0)-(datetime)ObjectGetInteger(0, "Line2", OBJPROP_TIME, 0));
   double R = (ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0)-ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0))/sqrt(1+V*V) ; 
   
   
   Comment("Разница: R=",R, " | ");

// Предлагали сделать и так и также не помогает !
   
   datetime t1 = (datetime)ObjectGetInteger(0, "Line1", OBJPROP_TIME, 0);
   datetime t2 = (datetime)ObjectGetInteger(0, "Line2", OBJPROP_TIME, 0);
   double p1 = 0;
   double p2 = 0;
   
   if(t1 > t2)
   {
      p1 = ObjectGetValueByTime(0, "Line1", t2);
      p2 = ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0);
   }
   if(t1 < t2)
   {
      p1 = ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0);
      p2 = ObjectGetValueByTime(0, "Line2", t1);;
   }
   if(t1 == t2)
   {
      p1 = ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0);
      p2 = ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0);
   }
   
   Comment("Разница: " + DoubleToString(MathAbs(p1 - p2) / _Point, 0));
 
Itum:
Dependendo do ângulo e mudará a distância ... Qual é a diferença entre as linhas ? )

Você precisa encontrar a distância entre duas linhas paralelas, e não importa o tamanho, desde que o valor não mude quando você muda a escala?

Eu o entendi corretamente? Se assim for, por favor, me dê o código que verifica o valor e não funciona com você, porque comigo funciona e o valor não muda.

 
Itum:

Por favor, mostre-me um exemplo.

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);
Ou seja, se a Linha1 está no topo e a Linha2 está no fundo
 
Renat Akhtyamov:
Ou seja, se a Linha1 está no topo e a Linha2 está no fundo
sim
 
Itum:
sim

Tente minha linha ao invés das que você tem abaixo dela, se isso lhe convém

// Предлагали сделать так и не помогает !

Este será o comprimento da linha azul:


 

Renat Akhtyamov:

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);

Hmmm... Sabe, isso também não ajuda ) ... Você tentou executar meu código de cima... Não é o resultado que você quer.

Talvez eu não esteja explicando direito.

 
Renat Akhtyamov:

Tente minha linha ao invés das que você tem abaixo dela, se lhe convém

Este será o comprimento da linha azul:


Isso mesmo ... Eu preciso do comprimento. a linha vermelha. Imagine se estas duas linhas paralelas fossem verticais, o que mostraria a linha azul? (em ângulos diferentes, será de comprimento diferente)

Se você desenhar duas linhas paralelas com 10 cm de distância em uma folha branca(Fig.7), esta folha pode ser torcida da maneira que você quiser em qualquer ângulo e ainda haverá os mesmos 10 cm(Fig.6).