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

 
Itum:

¿Pueden decirme cómo calcular la distancia entre dos líneas paralelas incluyendo la escala del gráfico (para que la escala no se vea afectada)?

He aquí un ejemplo:

La línea roja es la distancia entre dos líneas paralelas, ¿cómo se puede calcular?

Tienes una línea perpendicular roja que cambiará en múltiplos de una simple línea vertical que conecta las dos líneas.

No te preocupes, tu respuesta es:

diferencia de precios al mismo tiempo en los dos puntos de las líneas.

//PS: Ya nadó...

Sin embargo, puede comprobar mi afirmación.

También hay una respuesta, pero está en geometría en "Triángulo rectangular". Longitud del cateto".

 
Itum:

¿Pueden decirme cómo calcular la distancia entre dos líneas paralelas incluyendo la escala del gráfico (para que la escala no se vea afectada)?

He aquí un ejemplo:

La línea roja es la distancia entre dos líneas paralelas, ¿cómo se puede calcular?

Primavera.

Calcula algo incluyendo la escala, pero de forma que la escala no le afecte.

¿Tal vez el paralelismo no debería afectar?

 
Itum:

¿Puedes decirme cómo calcular la distancia entre dos líneas paralelas incluyendo la escala del gráfico (para que no afecte a la escala)?

He aquí un ejemplo:

La línea roja es la distancia entre dos líneas paralelas, ¿cómo se puede calcular?

Ponga el MAH en el gráfico, fije los niveles y no tendrá que calcular nada.

 
Itum:

¿Cómo se puede calcular la distancia entre dos rectas paralelas incluyendo la escala del gráfico (para que la escala no se vea afectada)?

Depende de lo que quieras conseguir... Si quieres la distancia en píxeles, construye un triángulo y utiliza el teorema de Pitágoras para calcular el lado. Pero este valor estará influenciado por la escala. Si quieres el movimiento del precio, proyecta en el eje OX/OY y será el movimiento del precio. Si quieres la distancia en unidades, multiplica las proyecciones. Y así sucesivamente. La tarea es, de hecho, elemental.

 
   ObjectCreate("Line1",OBJ_TREND,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_TREND,0,Time[10],High[10],Time[20],Low[10]);
   ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2);
   
   Comment("Разница: ");
 
Itum:

Según la fórmula anterior, la distancia más corta R entre estas dos líneas paralelas:

   double V = (High[10]-Low[10])/(Time[10]-Time[20]);
   double R = (High[10]-Low[10])/sqrt(1+V*V) ; 

Donde V es la tasa de variación del precio con la unidad punto/segundo. También V = tangente de la pendiente de la línea en un sistema con una escala de 1 punto = 1 segundo.

Sólo hay que precisar que esta fórmula funciona si no hay huecos de tiempo entre barras. Por ejemplo, los fines de semana. De lo contrario, el resultado no será correcto. En este caso, es necesario utilizar la funciónPeriodSeconds() y calcular el delta de tiempo a través del número de barras multiplicado por el número de segundos de una barra.

Es decir, en este caso será:

   double V = (High[10]-Low[10])/(10*PeriodSeconds());
   double R = (High[10]-Low[10])/sqrt(1+V*V) ;


Además, debes entender que @Renat Akhtyamov tenía esencialmente razónen este post. Porquesi el intervalo de tiempo es lo suficientemente grande, el valor del denominador (sqrt(1+V*V))siempre será ligeramente mayor que 1.

Y entonces esta fórmula se puede simplificar:

double R = High[10]-Low[10] ;




 
Itum:
   ObjectCreate("Line1",OBJ_TREND,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_TREND,0,Time[10],High[10],Time[20],Low[10]);
   ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2); 
   
   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));
 
Sergey Kolemanov:

Lo tienes todo mal....
t1 en este caso siempre = t2

Todo lo que has escrito,

puede escribirse en una línea:

Comment("Разница: " + DoubleToString((High[10]-Low[10]) / _Point, 0));

el resultado sería el mismo.

 
Nikolai Semko:

Bueno, lo tenemos todo mal....
t1 en este caso siempre = t2

Todo lo que has escrito,

puede escribirse en una línea:

el resultado sería el mismo.

Sí, en su ejemplo t1 = t2 , y cómo se construyen realmente sólo lo sabe el tópico. Y si se construyen como t1 > t2 , luego se recalculan y t1 < t2, entonces ¿cómo se cuenta?

 
Nikolai Semko:

puede escribirse en una línea:

Comment("Разница: " + DoubleToString((High[10]-Low[10]) / _Point, 0));


Cuentas la distancia entre el Alto y el Bajo , y tiene líneas