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

 
Itum:


Isso mesmo ... E eu preciso do comprimento da Linha Vermelha... Imagine se estas duas linhas paralelas fossem verticais, o que mostraria a linha azul?

É realmente uma bobagem.

Eu mostrei o princípio de automatizar este tipo de cálculo, o resto é com você, pois você está bem com seu cérebro.

E aqui batemos em algo...

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

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


Isso mesmo ... E eu preciso do comprimento da Linha Vermelha... Imagine se estas duas linhas paralelas fossem verticais, o que mostraria a linha azul?

É possível que esta linha vermelha não seja perpendicular devido ao fato de que ela só pode ser traçada pelo preço da barra e pelo tempo.

Como opção, vejo a seguinte seqüência: determinamos a inclinação da linha de tendência ou traçamos a linha de tendência por um ângulo e obtemos o ângulo perpendicular pelo qual calculamos a distância até a segunda linha.

Mas isto é apenas uma teoria. Deve ser verificado.

 
Alexey Viktorov:

É possível que esta linha vermelha não seja perpendicular porque só pode ser traçada com base no preço da barra e no tempo.

Como opção, vejo a seguinte seqüência: determinamos a inclinação da linha de tendência ou traçamos a linha de tendência pelo ângulo e obtemos o ângulo perpendicular com base no qual calculamos a distância até a segunda linha.

Mas isso é apenas teoria. Ela precisa ser testada.

Que chatice. Chegou a hora de aplicar as transformações de Fourier.

 
Renat Akhtyamov:

É realmente uma droga.

Eu lhe mostrei o princípio de automatizar este tipo de cálculo, o resto é com você, pois você está bem da cabeça.

Bem, nós também nos batemos em algo aqui.

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

um pouco, não é a mesma coisa... mas algo semelhante existe )

Que quebra-cabeças...

 
Itum:

um pouco, não o mesmo ... mas há algo semelhante).

Que quebra-cabeças...

Não há quebra-cabeças.

Encontre o ângulo, encontre o cateto usando a fórmula.

Aqui está o assunto:

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

Tudo bem ... E eu preciso do comprimento. a linha vermelha. Imagine se as 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), você pode torcer a folha em qualquer ângulo e ela ainda será a mesma 10 cm(Fig.6).


Estou confuso com seus objetivos...

Diga-me o que você tem inicialmente, por favor. Não está claro para mim como você pode perguntar sobre a distância se não temos linhas paralelas, e se temos, como é construída a segunda linha sem esses dados?

Acima de você citou o código das duas linhas, mas, permita-me, não há nenhum paralelismo ali.

Ou a tarefa é apenas construir linhas paralelas? Ou para verificar se as linhas são paralelas? Ou apenas encontrar a diferença entre quaisquer duas linhas a qualquer momento?

O exemplo com a folha é muito simples, mas o gráfico pode mostrar uma imagem diferente por causa dos buracos na história, como exemplo - cortar a folha em três partes e remover a parte do meio, conectar as duas partes restantes e você verá que as linhas se tornaram curvadas, mas a distância entre elas é preservada. Assim, podemos medir a distância em qualquer ponto onde a linha ainda não tenha sido cortada, e para isso precisamos de coordenadas em dois pontos sem furos para cada linha, ou com furos restaurados.
 

A fim de resolver o problema, você precisa:

1. desenhar uma perpendicular às linhas paralelas dadas

2. Determinar os pontos de interseção da perpendicular com as linhas dadas

3. calcular a distância entre os pontos de interseção


Claramente em fotos:

(diferentes linhas e distâncias entre elas)



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


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


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


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


 

De qualquer forma, faça esta opção - você pode definir o delta e pode encontrar a partir da posição preço/tempo, desde que as linhas sejam 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);
  }

No código o eixo x vê barras, então se você precisa de mais precisão para a previsão, você precisa converter em segundos e verificar os furos.

Você só pode prever o preço dadas as barras no futuro - isto tem que ser calculado separadamente, dados os furos planejados! O engraçado é que às vezes você tem que criá-los de forma oposta...

 
E se você planeja construir um canal, é melhor construir um indicador usando buffers gráficos ou fazer um redesenho cíclico, de modo a não ter objetos correndo pela tela.
 
Aleksey Vyazmikin:

De qualquer forma, faça esta opção - você pode definir o delta e pode encontrar a partir da posição preço/tempo, desde que as linhas sejam realmente paralelas.

No código o eixo x vê barras, então se você precisa de mais precisão para a previsão, você precisa converter em segundos e verificar os furos.

Você só pode prever o preço dadas as barras no futuro - isto tem que ser calculado separadamente, dados os furos planejados! O engraçado é que às vezes você tem que criá-los de forma oposta...


Entendo corretamente que o delta é a linha azul ... O tamanho do vermelho não é aqui?

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

Razão: