¡Calcula la distancia entre dos líneas paralelas incluyendo ! - página 3

 
Sergey Kolemanov:

Estás contando la distancia entre el alto y el bajo, y él tiene líneas

Estás hablando de líneas paralelas. Y en las líneas paralelas la distancia vertical es siempre la misma en cualquier barra. En su ejemplo, la distancia entre las líneas es(Alto[10]-Bajo[10]). No es necesario calcular el tiempo para esto en absoluto.

Puede comprobarlo y tendrá siempre el mismo resultado.

Puede encontrar una fórmula más general aquí

Pero como el denominador está muy cerca de 1 incluso en el gráfico de minutos, se puede simplificar a:

double R=(Price2-Price1);

Ya lo dijo @Renat Akhtyamov en este post

 
Sergey Kolemanov:
Dependiendo del ángulo, la distancia variará... ¿Cuál es la diferencia entre las líneas? )
 
Itum:
Dependiendo del ángulo, la distancia variará... ¿Cuál es la diferencia entre las líneas? )
Dependiendo del ángulo, todas las distancias cambiarán por múltiplos, ya que tienes un triángulo rectángulo. Así que no importa realmente dónde se mida. Mide lo que creas que es la distancia más sencilla.
 
Renat Akhtyamov:
Dependiendo del ángulo, todas las distancias cambiarán por múltiplos, ya que tienes un triángulo rectángulo. Así que no importa en absoluto dónde se mida. Mide lo que creas que es la distancia más sencilla.

Por favor, muéstrame un ejemplo.

 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:
Dependiendo del ángulo y cambiará la distancia ... ¿Cuál es la diferencia entre las líneas? )

Hay que encontrar la distancia entre dos líneas paralelas, y no importa su tamaño, siempre que el valor no cambie al cambiar la escala...

¿Le he entendido bien? Si es así, por favor, dame el código que comprueba el valor y no funciona contigo, porque conmigo funciona y el valor no cambia.

 
Itum:

Por favor, muéstrame un ejemplo.

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);
Es decir, si la línea 1 está en la parte superior y la línea 2 en la inferior
 
Renat Akhtyamov:
Es decir, si la línea 1 está en la parte superior y la línea 2 en la inferior
 
Itum:

Pruebe mi línea en lugar de las que tiene debajo, si le conviene

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

Esta será la longitud de la línea azul:


 

Renat Akhtyamov:

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

Hmmm... Ya sabes, tampoco ayuda ) ... Has probado a ejecutar mi código de arriba... No son los resultados que quieres.

Tal vez no lo estoy explicando bien.

 
Renat Akhtyamov:

Pruebe mi línea en lugar de las que tiene debajo de esto, si le conviene

Esta será la longitud de la línea azul:


Así es... Necesito la longitud. la línea roja. Imagina que estas dos líneas paralelas fueran verticales, ¿qué mostraría la línea azul? (en diferentes ángulos, serán de diferente longitud)

Si dibujas dos líneas paralelas separadas por 10 cm en una hoja blanca(Fig.7), esta hoja se puede retorcer de cualquier manera y en cualquier ángulo y seguirá habiendo los mismos 10 cm(Fig.6).


Razón de la queja: