Calcolare la distanza tra due linee parallele tra cui ! - pagina 3

 
Sergey Kolemanov:

Stai contando la distanza tra Alto e Basso, e lui ha delle linee

Stai parlando di linee parallele. E nelle linee parallele la distanza verticale è sempre la stessa su qualsiasi barra. Nel suo esempio la distanza tra le linee è(High[10]-Low[10]). Non c'è bisogno di calcolare il tempo per questo.

Potete controllarlo e avrà sempre lo stesso risultato.

Potete trovare una formula più generale qui

Ma poiché il denominatore è molto vicino a 1 anche sul grafico a minuti, può essere semplificato a:

double R=(Price2-Price1);

È già stato detto da @Renat Akhtyamov in questo post

 
Sergey Kolemanov:
A seconda dell'angolo, la distanza varia... Quindi qual è la differenza tra le linee? )
 
Itum:
A seconda dell'angolo, la distanza varia... Quindi qual è la differenza tra le linee? )
A seconda dell'angolo, tutte le distanze cambieranno di multipli, poiché si ha un triangolo rettangolo. Quindi non ha molta importanza dove si misura. Misurate quella che pensate sia la distanza più semplice.
 
Renat Akhtyamov:
A seconda dell'angolo, tutte le distanze cambieranno di multipli, poiché si ha un triangolo rettangolo. Quindi non importa affatto dove si misura. Misurate quella che pensate sia la distanza più semplice.

Per favore, mostratemi un esempio.

 ObjectCreate("Line1",OBJ_TRENDBYANGLE,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_TRENDBYANGLE,0,Time[10],High[100],Time[20],Low[10]);
   ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2);

   ObjectSetDouble(0,"Line1",OBJPROP_ANGLE,260); // 85 
   ObjectSetDouble(0,"Line2",OBJPROP_ANGLE,260); // 85
/*   
   ObjectCreate("Value",OBJ_TREND,0,Time[0],High[10],Time[10],High[10]);
   ObjectSetInteger(0,"Value",OBJPROP_RAY,false);
   ObjectSetInteger(0,"Value",OBJPROP_COLOR,Gold);
   ObjectSetInteger(0,"Value",OBJPROP_WIDTH,3);
   */

// Предлагали сделать так и не помогает !

   double V = (ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0)-ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0))/((datetime)ObjectGetInteger(0, "Line1", OBJPROP_TIME, 0)-(datetime)ObjectGetInteger(0, "Line2", OBJPROP_TIME, 0));
   double R = (ObjectGetDouble(0, "Line1", OBJPROP_PRICE, 0)-ObjectGetDouble(0, "Line2", OBJPROP_PRICE, 0))/sqrt(1+V*V) ; 
   
   
   Comment("Разница: R=",R, " | ");

// Предлагали сделать и так и также не помогает !
   
   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));
 
Itum:
A seconda dell'angolo e cambierà la distanza ... Qual è la differenza tra le linee? )

Devi trovare la distanza tra due linee parallele, e non importa quanto sia grande, purché il valore non cambi quando cambi la scala?

Ho capito bene? Se è così, datemi il codice che controlla il valore e non funziona con voi, perché con me funziona e il valore non cambia.

 
Itum:

Per favore, mostratemi un esempio.

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);
Cioè, se la linea1 è in alto e la linea2 è in basso
 
Renat Akhtyamov:
Cioè, se la linea1 è in alto e la linea2 è in basso
 
Itum:

Prova la mia linea invece di quelle che hai sotto, se ti va bene

// Предлагали сделать так и не помогает !

Questa sarà la lunghezza della linea blu:


 

Renat Akhtyamov:

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);

Hmmm... Sai, non aiuta nemmeno ) ... Hai provato ad eseguire il mio codice da sopra... Non sono i risultati che volete.

Forse non mi sto spiegando bene.

 
Renat Akhtyamov:

Prova la mia linea invece di quelle che hai sotto, se ti va bene

Questa sarà la lunghezza della linea blu:


Proprio così... Ho bisogno della lunghezza. la linea rossa. Immaginate se queste due linee parallele fossero verticali, cosa mostrerebbe la linea blu? (ad angoli diversi, sarà di lunghezza diversa)

Se si disegnano due linee parallele a 10 cm di distanza su un foglio bianco(Fig.7), questo foglio può essere girato in qualsiasi modo e con qualsiasi angolo e ci saranno sempre gli stessi 10 cm(Fig.6).