를 포함하는 두 평행선 사이의 거리를 계산하십시오. - 페이지 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 :

맞습니다... 그리고 빨간선의 길이가 필요합니다. 이 두 평행선이 수직인 경우 파란색 선은 무엇을 표시할까요? (각도가 다르면 길이가 다릅니다)

흰색 시트에 서로 10cm의 거리에 두 개의 평행선을 그리면( 그림 7) 이 시트는 원하는 각도 로 비틀 수 있으며 동일한 10cm가 됩니다( 그림 6). .


나는 당신의 목표에 대해 혼란 스럽습니다 ...

처음에 무엇을 가지고 있는지 알려주십시오. 평행선이 없는 경우 거리에 대해 어떻게 질문할 수 있는지, 그리고 평행선이 있는 경우 이 데이터 없이 두 번째 선을 어떻게 구축할 수 있는지 명확하지 않습니다.

위에서 두 줄의 코드를 제공했지만 실례합니다. 병렬 처리가 전혀 없습니다.

아니면 평행선을 만드는 작업입니까? 또는 선이 평행한지 확인합니까? 아니면 주어진 시간에 두 줄의 차이점을 찾으시겠습니까?

시트가 있는 예는 매우 간단하지만, 예를 들어 시트를 세 부분으로 자르고 중간 부분을 제거하고 나머지 두 부분을 연결하면 이력의 구멍으로 인해 그래프가 다른 그림을 보일 수 있습니다. 선이 비뚤어지지만 선 사이의 거리는 유지됩니다. 따라서 우리는 선이 아직 잘려지지 않은 모든 지점에서 거리를 측정할 수 있으며 이를 위해서는 각 선에 대한 구멍이 없거나 복원된 구멍이 있는 두 점의 좌표가 필요합니다.
 

문제를 해결하려면 다음이 필요합니다.

1. 주어진 평행선에 수직을 그립니다.

2. 주어진 선과 수직선의 교차점을 결정하십시오

3. 교차점 사이의 거리 계산


사진에서 분명히:

(다양한 선과 그 사이의 거리)



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


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


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


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


 

일반적으로 나는 그러한 옵션을 만들었습니다. 델타를 설정하거나 라인이 실제로 평행하다면 가격 / 시간의 위치에서 찾을 수 있습니다.

 #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 :

일반적으로 나는 그러한 옵션을 만들었습니다. 델타를 설정하거나 라인이 실제로 평행하다면 가격 / 시간의 위치에서 찾을 수 있습니다.

코드에서 x축은 막대 로 볼 수 있으므로 예측에 더 많은 정확도가 필요한 경우 초로 변환하고 구멍을 확인해야 합니다.

미래의 막대만을 고려하여 가격을 예측할 수 있습니다. 이것은 계획된 구멍을 고려하여 별도로 계산해야 합니다! 때로는 반대 방향으로 만들어야한다는 것이 재미있습니다 ...


델타가 파란색 선이라는 걸 제가 제대로 이해하고 있는 건가요... 그리고 여기에 빨간색 사이즈는 없나요?

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