计算两条平行线之间的距离,包括 ! - 页 3

 
Sergey Kolemanov:

你在计算高位和低位之间的距离,而他有线条。

你说的是平行线。而在平行线上,垂直距离在任何条上都是一样的。在他的例子中,线条之间的距离是High[10]-Low[10])。你根本不需要为此计算时间。

你可以检查一下,它的结果一直是一样的。

你可以在这里 找到一个更通用的公式

但由于分母即使在分钟图上也非常接近于1,所以可以简化为。

double R=(Price2-Price1);

@Renat Akhtyamov这个帖子 中已经说过了

 
Sergey Kolemanov:
根据不同的角度,距离会有所不同...那么,这两条线之间的区别是什么?)
 
Itum:
根据不同的角度,距离会有所不同...那么,这两条线之间的区别是什么?)
根据不同的角度,所有的距离将以倍数变化,因为你有一个直角三角形。所以你在哪里测量并不重要。测量你认为最简单的距离。
 
Renat Akhtyamov:
根据不同的角度,所有的距离将以倍数变化,因为你有一个直角三角形。因此,你在哪里测量根本就不重要。测量你认为最简单的距离。

请给我看一个例子。

 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:
根据不同的角度和将改变的距离......。这两条线之间的区别是什么?)

你需要确定两条平行线之间的距离,它有多大并不重要,只要你改变比例时数值不发生变化?

我对你的理解正确吗?如果是这样,请给我检查该值的代码,它在你那里不起作用,因为在我那里起作用,值不会改变。

 
Itum:

请给我看一个例子。

double Расстояние=ObjectGetValueByShift("Line1",0)-ObjectGetValueByShift("Line2",0);
也就是说,如果第一行在顶部,第二行在底部
 
Renat Akhtyamov:
也就是说,如果第一行在顶部,第二行在底部
 
Itum:

如果适合你的话,可以试试我的那句话,而不是你下面的那句话

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

这将是蓝线的长度。


 

Renat Akhtyamov:

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

嗯...你知道,这也没有帮助)......你试着运行我上面的代码...这不是你想要的结果。

也许我解释的不对。

 
Renat Akhtyamov:

如果适合你的话,可以试试我的那句话,而不是你下面的那句话

这将是蓝线的长度。


这就对了......我需要这个长度。 红线。 想象一下,如果这两条平行线是垂直的,蓝线会显示什么?(在不同的角度,会有不同的长度)

如果你在一张白纸上画两条相距10厘米的平行线(图7),这张纸可以以任何方式在任何角度 扭曲,仍然会有同样的10厘米(图6)。