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

 
Itum:


这就对了......而且我需要红线 的长度...想象一下,如果这两条平行线是垂直的,蓝线会显示什么?

这真的很垃圾。

我展示了这种计算的自动化原理,剩下的就看你了,因为你的脑子都是对的。

在这里,我们遇到了一些问题...

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

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


这就对了......而且我需要红线 的长度...想象一下,如果这两条平行线是垂直的,蓝线会显示什么?

这条红线有可能不是垂直的,因为它只能由条形价格和时间来画。

作为一种选择,我可以看到以下顺序:我们确定趋势线的斜率,或者通过一个角度绘制趋势线,并获得垂直角度,通过这个角度我们计算出与第二条线的距离。

但这只是一个理论。应该进行检查。

 
Alexey Viktorov:

这条红线有可能不是垂直的,因为它只能根据条形价格和时间来画。

作为一种选择,我认为有以下顺序:我们确定趋势线的斜率,或者通过角度画出趋势线,并获得垂直角度,根据这个角度计算出到第二条线的距离。

但这只是理论。它需要被测试。

遗憾的是。现在是应用傅里叶变换的时候了。

 
Renat Akhtyamov:

这确实很糟糕。

我向你展示了这种计算的自动化原理,剩下的就看你自己了,因为你的脑子都是对的。

嗯,我们在这里也碰到了一些问题。

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

有一点,不一样的...但类似的东西是有的 )

真是个谜...

 
Itum:

有一点,不一样的...但也有类似的情况)。

真是个谜...

没有什么难题。

找出角度,用公式找出猫头鹰。

这里是主题。

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

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

如果你在一张白纸上画两条相距10厘米的平行线(图7),你可以以任何角度 扭动纸张,它仍然是相同的10厘米(图6)。


我对你的目标感到困惑...

请告诉我你最初有什么。我不清楚,如果我们没有平行线,你怎么能问到距离,如果我们有,没有这些数据,第二条线是如何构建的?

上面你引用了两行的代码,但是,请允许我,那里根本就没有平行关系。

还是任务只是建立平行线?或者检查线条是否平行?或者只是在任何时候找到任何两行之间的差异?

用床单的例子非常简单,但由于历史上的孔洞,图形可以显示出不同的画面,作为一个例子--把床单切成三部分,去掉中间的部分,把剩下的两部分连接起来,你会发现线条变得弯曲了,但它们之间的距离却保留了下来。相应地,我们可以在线条尚未被切割的任何一点上测量距离,为此我们需要在每条线上没有孔的两点的坐标,或恢复了孔的坐标。
 

为了解决这个问题,你必须。

1.画一条垂直于给定平行线的直线

2. 确定垂直线与给定直线的交点

3. 计算交点之间的距离


在图片上很清楚。

(不同的线和它们之间的距离)



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


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


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


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


 

总之,做了这个选项--你可以设置delta,你可以从价格/时间位置找到,只要线条真的平行。

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

在代码中,X轴看到的是条形,所以如果你需要更准确的预测,你需要转换为秒,并检查孔。

你只能预测未来的价格--这必须单独计算,考虑到计划中的孔洞!你可以在未来的酒吧里预测价格。有趣的是,有时你必须创造它们的对面...

 
而如果你打算建立一个通道,最好是用图形缓冲器建立一个指示器,或者进行循环重绘,这样就不会有物体在屏幕上跑来跑去。
 
Aleksey Vyazmikin:

总之,做了这个选项--你可以设置delta,你可以从价格/时间位置找到,只要线条真的平行。

在代码中,X轴看到的是条形,所以如果你需要更准确的预测,你需要转换为秒,并检查孔。

你只能预测未来的价格--这必须单独计算,考虑到计划中的孔洞!你可以在未来的酒吧里预测价格。有趣的是,有时你必须创造它们的对面...


我的理解是否正确,三角洲是蓝线......。这里的红色的尺寸不是吗?

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