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

 
Itum:

你能告诉我如何 计算两条 平行线 之间的距离 ,包括图形的比例(使比例不受影响)?

这里有一个例子。

红线是两条平行线之间的距离 - 你如何计算?

你有一条红色的垂直线,它将以连接两条线的简单垂直线的倍数变化。

别紧张,你的答案是。

线上两点同时出现的价格差异。

//PS: 已经游过了...

然而,你可以检查我的论断。

也有一个答案,但它是在几何学的 "矩形三角形 "上。胫骨的长度。"

 
Itum:

你能告诉我如何计算两条平行线之间的距离,包括图形的比例(使比例不受影响)?

这里有一个例子。

红线是两条平行线之间的距离 - 你如何计算?

春天。

计算包括比例尺在内的东西,但要以比例尺不影响它的方式计算。

也许平行性不应该影响它?

 
Itum:

你能告诉我如何计算两条平行线之间的距离,包括图形的比例(使比例不受影响)?

下面是一个例子。

红线是两条平行线之间的距离 - 你如何计算?

把MAH放在图表上,设置水平,你就不需要计算任何东西了。

 
Itum:

你如何计算两条平行线之间的距离,包括图形的比例(使比例不受影响)?

这取决于你想得到什么?如果你想得到以像素为单位的距离,你可以建立一个三角形并使用毕达哥拉斯定理来计算边。但这个值会受到规模的影响。如果你想知道价格走势,在OX/OY轴上进行投射,它将是价格走势。如果你想得到以单位计算的距离,请乘以推算结果。如此下去。这个任务其实是很简单的。

 
   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:

根据上述公式,这两条平行线之间的最短距离R。

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

其中V是单位点/秒的价格变化率。同时,V=直线斜率的正切,在一个1点=1秒的系统中。

只需要规定这个公式在条形图之间没有时间洞的情况下是有效的。例如周末。否则,结果将是不正确的。在这种情况下,有必要使用PeriodSeconds() 函数,并通过条形图的数量乘以一个条形图的秒数来计算时间差

也就是说,在这种情况下,它将是。

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


另外,你应该明白,@Renat Akhtyamov在这个帖子中 的观点基本上是正确的。因为如果时间间隔足够大,分母值(sqrt(1+V*V))将总是略大于1

然后这个公式可以被简化。

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:

你都搞错了....
在这种情况下,t1总是=t2

你所写的一切。

可以写在一行中。

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

结果是一样的。

 
Nikolai Semko:

嗯,你都搞错了....
在这种情况下,t1总是=t2

你所写的一切。

可以写在一行中。

结果是一样的。

是的,在他的例子中,t1 = t2 ,而它们究竟是如何建立的,只有做题目的人知道。如果它们被建立为t1>t2,然后重新计算,t1<t2,那么如何计算?

 
Nikolai Semko:

可以写在一行中。

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


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