를 포함하는 두 평행선 사이의 거리를 계산하십시오. - 페이지 2

 
Itum :

그래프의 눈금을 포함하여 두 평행선 사이의 거리를 계산하는 방법 을 알려주세요(눈금에 영향을 주지 않도록)

다음은 예입니다.

빨간색 선은 두 평행선 사이의 거리입니다. 어떻게 계산합니까?

빨간색 수직선은 두 선을 연결하는 간단한 수직선의 배수로 변경됩니다.

걱정하지 마세요. 답은 다음과 같습니다.

라인의 두 지점에서 동시에 가격 차이.

//PS: 이미 수영 중...

그러나 내 진술을 확인할 수 있습니다.

답도 있지만 "직각 삼각형. 다리 길이"라는 주제의 기하학에 있습니다.

 
Itum :

그래프의 눈금을 포함하여 두 평행선 사이의 거리를 계산하는 방법을 알려주세요(눈금에 영향을 주지 않도록)

다음은 예입니다.

빨간색 선은 두 평행선 사이의 거리입니다. 어떻게 계산합니까?

봄.

규모를 포함하여 무언가를 계산하지만 규모가 영향을 미치지 않도록 합니다.

병렬 처리가 영향을 미치지 않아야 합니까?

 
Itum :

그래프의 눈금을 포함하여 두 평행선 사이의 거리를 계산하는 방법을 알려주세요(눈금에 영향을 주지 않도록)

다음은 예입니다.

빨간색 선은 두 평행선 사이의 거리입니다. 어떻게 계산합니까?

Mashka를 차트에 놓고 수준을 설정하면 아무 것도 계산할 필요가 없습니다.

 
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 이지만 topicstarter 만이 실제로 어떻게 구축되는지 알고 있습니다. 그리고 그것들이 t1 > t2 로 구축된다면, 재계산 및 t1 < t2 , 그렇다면 어떻게 계산할까요?

 
Nikolai Semko :

다음과 같이 한 줄로 작성할 수 있습니다.

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


높음과 낮음 사이의 거리를 계산하면 선이 있습니다.