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

 
Itum:


Así es... Y necesito la longitud de la Línea Roja... Imagina que estas dos líneas paralelas fueran verticales, ¿qué mostraría la línea azul?

Es una verdadera basura.

He mostrado el principio de la automatización de este tipo de cálculo, el resto depende de ti, ya que estás bien de cerebro.

Y aquí nos encontramos con algo...

https://www.mql5.com/ru/forum/233174

Значения трендовых линий при оптимизации ?
Значения трендовых линий при оптимизации ?
  • 2018.03.25
  • www.mql5.com
Известна первая точка по фракталам Известна вторая точка по вершинам high-low На графике рисуются трендовые линии по точкам Как получить цены тренд...
 
Itum:


Así es... Y necesito la longitud de la Línea Roja... Imagina que estas dos líneas paralelas fueran verticales, ¿qué mostraría la línea azul?

Es posible que esta línea roja no sea perpendicular debido a que sólo puede ser trazada por el precio de la barra y el tiempo.

Como opción, veo la siguiente secuencia: determinamos la pendiente de la línea de tendencia o trazamos la línea de tendencia por un ángulo y obtenemos el ángulo perpendicular por el que calculamos la distancia a la segunda línea.

Pero esto es sólo una teoría. Hay que comprobarlo.

 
Alexey Viktorov:

Es posible que esta línea roja no sea perpendicular porque sólo se puede trazar en función del precio de la barra y del tiempo.

Como opción, veo la siguiente secuencia: determinamos la pendiente de la línea de tendencia o trazamos la línea de tendencia por el ángulo y obtenemos el ángulo perpendicular en base al cual calculamos la distancia a la segunda línea.

Pero eso es sólo teoría. Hay que probarlo.

Qué pena. Es el momento de aplicar las transformadas de Fourier.

 
Renat Akhtyamov:

Realmente apesta.

Te he enseñado el principio de la automatización de este tipo de cálculos, el resto depende de ti, pues estás bien de la cabeza.

Bueno, aquí también hemos dado con algo.

https://www.mql5.com/ru/forum/233174

un poco, no es lo mismo... pero algo parecido hay )

Qué rompecabezas...

 
Itum:

un poco, no es lo mismo... pero hay algo parecido).

Qué rompecabezas...

No hay rompecabezas.

Encuentra el ángulo, encuentra el cateto usando la fórmula.

Este es el tema:

https://www.mql5.com/ru/forum/163710
Расчёт угла наклона трендовой линии.
Расчёт угла наклона трендовой линии.
  • 2016.12.17
  • www.mql5.com
Добрый день. Нужно расcчитать угол наклона трендовой линии на графике в градусах программно (MQL5...
 
Itum:

Muy bien... Y necesito la longitud. la línea roja. Imagina que las 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 de papel blanco(Fig.7), puedes girar la hoja en cualquier ángulo y seguirán siendo los mismos 10 cm(Fig.6).


Estoy confundido sobre sus objetivos...

Dígame lo que tiene inicialmente, por favor. No me queda claro cómo se puede preguntar por la distancia si no tenemos líneas paralelas, y si las tenemos, ¿cómo se construye la segunda línea sin ese dato?

Arriba has citado el código de las dos líneas, pero, permíteme, ahí no hay paralelismo alguno.

¿O la tarea consiste simplemente en construir líneas paralelas? ¿O para comprobar si las líneas son paralelas? ¿O simplemente encontrar la diferencia entre dos líneas cualesquiera en cualquier momento?

El ejemplo con la hoja es muy simple, pero el gráfico puede mostrar una imagen diferente debido a los agujeros en la historia, como un ejemplo - cortar la hoja en tres partes y eliminar la parte central, conectar las dos partes restantes y verá que las líneas se han convertido en curva, pero la distancia entre ellos se conserva. En consecuencia, podemos medir la distancia en cualquier punto en el que la línea aún no se haya cortado, y para ello necesitamos coordenadas en dos puntos sin agujeros para cada línea, o con agujeros restaurados.
 

Para resolver el problema hay que:

1. dibujar una perpendicular a las líneas paralelas dadas

2. determinar los puntos de intersección de la perpendicular con las líneas dadas

3. calcular la distancia entre los puntos de intersección


Claramente en imágenes:

(diferentes líneas y distancias entre ellas)



.............................................................................


.............................................................................


.............................................................................


.............................................................................


 

De todos modos, hizo esta opción - se puede establecer delta y se puede encontrar de la posición de precio / tiempo, siempre que las líneas son realmente paralelas.

#property strict
#property script_show_inputs



input int X_1=100;   //X1 в барах
input double Y_1=10;  //Y1 в Пунктах от цены открытия бара
input int X_2=10;   //X2 в барах
input double Y_2=15;  //Y2 в Пунктах от цены открытия бара
input double Point_delta=30; //Зададим дельту в пунктах

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()

  {


//--- удаление всех созданных объектов 
   bool DelAllObjects=true;
   if(DelAllObjects==true)
     {
      int obj_total=ObjectsTotal();
      PrintFormat("Всего%d объектов",obj_total);
      for(int i=obj_total-1;i>=0;i--)
        {
         string name=ObjectName(i);
         PrintFormat("Объект%d:%s",i,name);
         ObjectDelete(name);
        }
     }

/*     
        Start   Stop
x  Time 10      20
y  Price        30      50

Линейная функция y=kx+b
Система уравнений
30y=10k+b
50y=20k+b
//Вычитаем
20y=10k+0
-10k=-20y
k=-20/-10
k=2

*/   

double k=(Y_2-Y_1)*(-1)/(X_2-X_1)*(-1);
double b=(X_1*k-Y_1)*(-1);

//Point_delta - можно задать/рассчитать, если в этом смысл, а если не известна, то ищем по координатам второй линии - Delta
double Y_3=X_1*k+b+Point_delta;
double  Y_4=X_2*k+b+Point_delta;

double k2=(Y_3-Y_4)*(-1)/(X_2-X_1)*(-1);
double b2=(X_1*k-Y_2)*(-1);
double Delta=(Y_3-Y_1);


   ObjectCreate("Line1",OBJ_TRENDBYANGLE,0,Time[X_1],Open[X_1]+Y_1*Point(),Time[X_2],Open[X_2]+Y_2*Point());
   ObjectSetInteger(0,"Line1",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line1",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Line1",OBJPROP_WIDTH,2);
   ObjectSetInteger(0,"Line1",OBJPROP_RAY_RIGHT,false);//Луч продолжается вправо 
   
   ObjectCreate("Line2",OBJ_TRENDBYANGLE,0,Time[X_1],Open[X_1]+Y_3*Point(),Time[X_2],Open[X_2]+Y_4*Point());
   ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2);
   ObjectSetInteger(0,"Line2",OBJPROP_RAY_RIGHT,false);//Луч продолжается вправо 


      Label("Delta",//Название
            0,      //Окно
            30,     //X
            10,      //Y
            "k="+DoubleToString(k,_Digits)+" b="+DoubleToString(b,_Digits)+" Delta="+DoubleToString(Delta,_Digits),
            10,//Размер шрифта
            Yellow,//Цвет шрифта
            CORNER_LEFT_UPPER,//Выбор угла: 3 - нижний правый, 1 - верхний правый. 2 - нижний левый, 4 - верхний левый                
            ANCHOR_LEFT_UPPER
            );

     return;
  }

//+------------------------------------------------------------------+
//|Функция вывода информации на экран                                |
//+------------------------------------------------------------------+
void Label(string _name,int _window,int _x,int _y,string _text,int _font,color _color,int corner,int anchor)
  {
   ObjectDelete(0,_name);
   ObjectCreate(0,_name,OBJ_LABEL,_window,0,0);
   ObjectSetInteger(0,_name,OBJPROP_CORNER,corner);
   ObjectSetInteger(0,_name,OBJPROP_XDISTANCE,_x);
   ObjectSetInteger(0,_name,OBJPROP_YDISTANCE,_y);
   ObjectSetText(_name,_text,_font,"Arial",_color);
   ObjectSetInteger(0,_name,OBJPROP_ANCHOR,anchor);
  }

En el código el eje x ve barras, así que si necesitas más precisión para la predicción tienes que convertir a segundos y comprobar los agujeros.

Sólo se puede predecir el precio teniendo en cuenta las barras en el futuro - ¡hay que calcularlo por separado, teniendo en cuenta los agujeros previstos! Lo curioso es que a veces hay que crearlos enfrente...

 
Y si piensas construir un canal, es mejor construir un indicador usando buffers gráficos o hacer un redibujado cíclico, para no tener objetos corriendo por la pantalla.
 
Aleksey Vyazmikin:

De todos modos, hizo esta opción - se puede establecer delta y se puede encontrar de la posición de precio / tiempo, siempre que las líneas son realmente paralelas.

En el código el eje x ve barras, así que si necesitas más precisión para la predicción tienes que convertir a segundos y comprobar los agujeros.

Sólo se puede predecir el precio teniendo en cuenta las barras en el futuro - ¡hay que calcularlo por separado, teniendo en cuenta los agujeros previstos! Lo curioso es que a veces hay que crearlos enfrente...


¿Entiendo correctamente que el delta es la línea azul... ¿No es el tamaño de la roja aquí?

https://c.mql5.com/3/181/lineee__2.jpg

Razón de la queja: