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

 
Itum:

Können Sie mir sagen, wie ich den Abstand zwischen zwei parallelen Linien unter Berücksichtigung des Maßstabs des Diagramms berechnen kann (so dass der Maßstab nicht beeinflusst wird)?

Hier ist ein Beispiel:

Die rote Linie ist der Abstand zwischen zwei parallelen Linien - wie kann man das berechnen?

Sie haben eine rote senkrechte Linie, die sich in Vielfachen einer einfachen senkrechten Linie, die die beiden Linien verbindet, verändert.

Keine Sorge, Ihre Antwort lautet:

Die Preisdifferenz zum gleichen Zeitpunkt an den beiden Punkten auf den Linien.

//PS: Schon geschwommen...

Sie können jedoch meine Behauptung überprüfen.

Es gibt auch eine Antwort, aber sie ist in Geometrie unter "Rechtwinkliges Dreieck" zu finden. Länge des Katheters".

 
Itum:

Können Sie mir sagen, wie ich den Abstand zwischen zwei parallelen Linien unter Berücksichtigung des Maßstabs des Diagramms berechnen kann (so dass der Maßstab nicht beeinflusst wird)?

Hier ist ein Beispiel:

Die rote Linie ist der Abstand zwischen zwei parallelen Linien - wie kann man das berechnen?

Frühling.

Berechnen Sie etwas unter Einbeziehung der Skala, aber so, dass die Skala keinen Einfluss darauf hat.

Vielleicht sollte die Parallelität keinen Einfluss darauf haben?

 
Itum:

Können Sie mir sagen, wie ich den Abstand zwischen zwei parallelen Linien unter Berücksichtigung des Maßstabs des Diagramms berechnen kann (so dass der Maßstab nicht beeinflusst wird)?

Hier ist ein Beispiel:

Die rote Linie ist der Abstand zwischen zwei parallelen Linien - wie kann man das berechnen?

Legen Sie das MAH auf den Chart, setzen Sie die Levels und Sie müssen nichts mehr berechnen.

 
Itum:

Wie kann man den Abstand zwischen zwei parallelen Linien unter Berücksichtigung des Maßstabs des Diagramms berechnen (so dass der Maßstab nicht beeinflusst wird)?

Das hängt davon ab, was Sie erreichen wollen? Wenn Sie die Entfernung in Pixeln ermitteln wollen, bilden Sie ein Dreieck und berechnen die Seite mit Hilfe des Satzes von Pythagoras. Dieser Wert wird jedoch durch den Maßstab beeinflusst. Wenn Sie die Preisbewegung wollen, projizieren Sie auf die OX/OY-Achse, und es wird die Preisbewegung sein. Wenn Sie die Entfernung in Einheiten angeben möchten, multiplizieren Sie die Projektionen. Also weiter. Die Aufgabe ist in der Tat elementar.

 
   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:

Nach der obigen Formel ist der kürzeste Abstand R zwischen diesen beiden parallelen Linien:

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

Dabei ist V die Preisänderungsrate mit der Einheit Punkt/Sekunde. Auch V = Tangens der Steigung der Linie in einem System mit einer Skala von 1 Punkt = 1 Sekunde.

Es muss nur festgelegt werden, dass diese Formel funktioniert, wenn es keine Zeitlücken zwischen den Balken gibt. Zum Beispiel an Wochenenden. Andernfalls wird das Ergebnis nicht korrekt sein. In diesem Fall ist es notwendig, die FunktionPeriodSeconds() zu verwenden und das Zeitdelta durch die Anzahl der Balken multipliziert mit der Anzahl der Sekunden in einem Balken zu berechnen.

D.h. in diesem Fall wird es sein:

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


Sie sollten auch verstehen, dass @Renat Akhtyamovin diesem Beitrag im Wesentlichen Recht hatte. Dennwenn das Zeitintervall groß genug ist,wird der Wert im Nenner (sqrt(1+V*V))immer etwas größer als 1 sein.

Und dann kann diese Formel vereinfacht werden:

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:

Du hast alles falsch verstanden....
t1 ist in diesem Fall immer = t2

Alles, was Sie geschrieben haben,

kann in einer Zeile geschrieben werden:

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

das Ergebnis wäre das gleiche.

 
Nikolai Semko:

Nun, wir haben alles falsch gemacht....
t1 ist in diesem Fall immer = t2

Alles, was Sie geschrieben haben,

kann in einer Zeile geschrieben werden:

das Ergebnis wäre das gleiche.

Ja, in seinem Beispiel ist t1 = t2, und wie sie tatsächlich aufgebaut sind, weiß nur der Themenstarter. Und wenn sie als t1 > t2 erstellt werden, dann neu berechnet werden und t1 < t2, wie werden sie dann gezählt?

 
Nikolai Semko:

kann in einer Zeile geschrieben werden:

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


Sie zählen den Abstand zwischen High und Low, und er hat Linien