Berechnen Sie den Abstand zwischen zwei parallelen Linien einschließlich ! - Seite 4

 
Itum:


Das ist richtig ... Und ich brauche die Länge der Red Line... Stellen Sie sich vor, diese beiden parallelen Linien wären vertikal, was würde die blaue Linie zeigen?

Das ist wirklich Blödsinn.

Ich habe das Prinzip der Automatisierung dieser Art von Berechnungen aufgezeigt, der Rest ist Ihre Sache, denn Sie sind mit Ihrem Verstand ganz gut.

Und hier stoßen wir auf etwas...

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

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


Das ist richtig ... Und ich brauche die Länge der Red Line... Stellen Sie sich vor, diese beiden parallelen Linien wären vertikal, was würde die blaue Linie zeigen?

Es ist möglich, dass diese rote Linie nicht rechtwinklig ist, da sie nur über den Preis und die Zeit des Balkens gezogen werden kann.

Als Option sehe ich die folgende Reihenfolge: Wir bestimmen die Steigung der Trendlinie oder wir zeichnen die Trendlinie durch einen Winkel und erhalten den senkrechten Winkel, mit dem wir den Abstand zur zweiten Linie berechnen.

Aber das ist nur eine Theorie. Sie sollte überprüft werden.

 
Alexey Viktorov:

Es ist möglich, dass diese rote Linie nicht rechtwinklig ist, da sie nur auf der Grundlage des Balkenpreises und der Uhrzeit gezogen werden kann.

Als Option sehe ich die folgende Reihenfolge: Wir bestimmen die Steigung der Trendlinie oder zeichnen die Trendlinie durch den Winkel und erhalten den senkrechten Winkel, aus dem wir den Abstand zur zweiten Linie berechnen.

Aber das ist nur eine Theorie. Sie muss getestet werden.

Schade. Es ist an der Zeit, Fourier-Transformationen anzuwenden.

 
Renat Akhtyamov:

Es ist wirklich zum Kotzen.

Ich habe Ihnen das Prinzip der Automatisierung dieser Art von Berechnungen gezeigt, der Rest ist Ihre Sache, denn Sie sind ganz richtig im Kopf.

Nun, auch hier sind wir auf etwas gestoßen.

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

ein bisschen, nicht dasselbe... aber etwas Ähnliches gibt es)

Was für ein Rätsel...

 
Itum:

ein wenig, nicht dasselbe ... aber es gibt etwas Ähnliches.)

Was für ein Rätsel...

Es gibt kein Rätsel.

Finde den Winkel, finde den Katheten mit Hilfe der Formel.

Hier ist das Thema:

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

In Ordnung ... Und ich brauche die Länge. die rote Linie. Was würde die blaue Linie zeigen, wenn die beiden parallelen Linien vertikal wären? (in verschiedenen Winkeln, unterschiedliche Länge)

Wenn du zwei parallele Linien im Abstand von 10 cm auf ein weißes Blatt zeichnest(Abb.7), kannst du das Blatt in einem beliebigen Winkel drehen, und es bleibt immer noch 10 cm lang(Abb.6).


Ich bin verwirrt über Ihre Ziele...

Sagen Sie mir bitte, was Sie zunächst haben. Es ist mir nicht klar, wie Sie nach der Entfernung fragen können, wenn wir keine parallelen Linien haben, und wenn wir sie haben, wie wird die zweite Linie ohne diese Daten konstruiert?

Oben haben Sie den Code von zwei Zeilen zitiert, aber, lassen Sie mich sehen, es gibt dort überhaupt keine Parallelität.

Oder besteht die Aufgabe nur darin, parallele Linien zu bauen? Oder um zu prüfen, ob die Linien parallel sind? Oder einfach nur die Differenz zwischen zwei beliebigen Zeilen zu einem beliebigen Zeitpunkt ermitteln?

Das Beispiel mit dem Blatt ist sehr einfach, aber das Diagramm kann aufgrund von Löchern in der Geschichte ein anderes Bild zeigen, als Beispiel - schneiden Sie das Blatt in drei Teile und entfernen Sie den mittleren Teil, verbinden Sie die beiden verbleibenden Teile und Sie werden sehen, dass die Linien gekrümmt geworden sind, aber der Abstand zwischen ihnen bleibt erhalten. Dementsprechend können wir die Entfernung an jedem Punkt messen, an dem die Linie noch nicht geschnitten wurde, und dafür benötigen wir Koordinaten an zwei Punkten ohne Löcher für jede Linie oder mit wiederhergestellten Löchern.
 

Um das Problem zu lösen, müssen Sie:

1. eine Senkrechte zu den gegebenen parallelen Linien zeichnen

2. Bestimmen Sie die Schnittpunkte der Senkrechten mit den gegebenen Linien

3. Berechnen Sie den Abstand zwischen den Kreuzungspunkten.


Deutlich in Bildern:

(unterschiedliche Linien und Abstände zwischen ihnen)



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


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


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


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


 

Wie auch immer, machte diese Option - Sie können Delta und Sie können von Preis/Zeit-Position zu finden, sofern die Linien wirklich parallel sind.

#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);
  }

Im Code sind auf der x-Achse Balken zu sehen. Wenn Sie also mehr Genauigkeit für die Vorhersage benötigen, müssen Sie in Sekunden umrechnen und die Löcher überprüfen.

Sie können nur den Preis für die Barren in der Zukunft vorhersagen - dieser muss separat berechnet werden, unter Berücksichtigung der geplanten Löcher! Das Komische daran ist, dass man sie manchmal auf der anderen Seite schaffen muss...

 
Und wenn Sie vorhaben, einen Kanal zu erstellen, ist es besser, einen Indikator mit grafischen Puffern einzubauen oder ein zyklisches Redrawing vorzunehmen, damit die Objekte nicht über den Bildschirm laufen.
 
Aleksey Vyazmikin:

Wie auch immer, machte diese Option - Sie können Delta und Sie können von Preis/Zeit-Position zu finden, sofern die Linien wirklich parallel sind.

Im Code sind auf der x-Achse Balken zu sehen. Wenn Sie also mehr Genauigkeit für die Vorhersage benötigen, müssen Sie in Sekunden umrechnen und die Löcher überprüfen.

Sie können nur den Preis für die Barren in der Zukunft vorhersagen - dieser muss separat berechnet werden, unter Berücksichtigung der geplanten Löcher! Das Komische daran ist, dass man sie manchmal auf der anderen Seite schaffen muss...


Verstehe ich das richtig, dass das Delta die blaue Linie ist ... Ist nicht die Größe des roten hier ?

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