Dahil olmak üzere iki paralel çizgi arasındaki mesafeyi hesaplayın! - sayfa 2

 
Itum :

Bana grafiğin ölçeği de dahil olmak üzere iki paralel çizgi arasındaki mesafeyi nasıl hesaplayabileceğinizi söyleyin (ölçek onu etkilemez)

işte bir örnek:

Kırmızı çizgi iki paralel çizgi arasındaki mesafedir - nasıl hesaplayabilirsiniz?

Kırmızı dikey çizginiz, her iki çizgiyi birbirine bağlayan basit bir dikey çizginin katı kadar değişecektir.

Merak etmeyin cevabınız:

hatlar üzerinde aynı anda iki noktada fiyat farkı.

//PS: Yüzme zaten...

Ancak, ifademi kontrol edebilirsiniz.

Ayrıca bir cevap var, ancak "Dik üçgen. Bacağın uzunluğu" konusunda geometride.

 
Itum :

Bana grafiğin ölçeği de dahil olmak üzere iki paralel çizgi arasındaki mesafeyi nasıl hesaplayabileceğinizi söyleyin (ölçek onu etkilemez)

işte bir örnek:

Kırmızı çizgi iki paralel çizgi arasındaki mesafedir - nasıl hesaplayabilirsiniz?

Bahar.

ölçek de dahil olmak üzere bir şey hesaplıyoruz, ancak ölçek etkilemesin.

Belki paralellik etkilememelidir?

 
Itum :

Bana grafiğin ölçeği de dahil olmak üzere iki paralel çizgi arasındaki mesafeyi nasıl hesaplayabileceğinizi söyleyin (ölçek onu etkilemez)

işte bir örnek:

Kırmızı çizgi iki paralel çizgi arasındaki mesafedir - nasıl hesaplayabilirsiniz?

Mashka'yı çizelgeye koyun, seviyeleri belirleyin ve hiçbir şey hesaplamanıza gerek yok.

 
Itum :

Bana grafiğin ölçeği de dahil olmak üzere iki paralel çizgi arasındaki mesafeyi nasıl hesaplayabileceğinizi söyleyin (ölçek onu etkilemez)

Çıktı olarak ne almak istiyorsunuz? Piksel cinsinden mesafeye ihtiyacınız varsa, bir üçgen oluşturuyoruz ve Pisagor teoremini kullanarak kenarı hesaplıyoruz. Ancak bu değer ölçekten etkilenecektir. Tam olarak fiyat hareketini istiyorsanız OX / OY ekseninde bir projeksiyon oluşturuyoruz ve bu fiyat hareketi olacak (örneğin). İsteğe bağlı birimlerde bir mesafeye ihtiyacınız varsa, projeksiyonlar çarpılmalıdır. Bunun gibi bir şey. Görev aslında basit.

 
   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 :

Yukarıdaki formüle göre, bu iki paralel çizgi arasındaki en kısa mesafe R:

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

Burada V, nokta/saniye ölçü birimi ile fiyat değişim oranıdır. Ayrıca V = 1 puan = 1 saniye ölçeğinde bir sistemde doğrunun eğiminin tanjantı.

Çubuklar arasında zaman aralığı yoksa bu formülün çalıştığına dair bir rezervasyon yapmanız yeterlidir. Örneğin hafta sonları. Aksi takdirde sonuç yanlış olacaktır. Bu durumda, PeriodSeconds () işlevini kullanmanız ve bir çubuktaki saniye sayısıyla çarpılan çubuk sayısı aracılığıyla zaman deltasını hesaplamanız gerekir.

Onlar. bu durumda olacak:

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


Ayrıca @Renat Akhtyamov'un bu mesajda esasen haklı olduğunu da anlamalısınız. Çünkü yeterince geniş bir zaman aralığı için paydanın değeri ( sqrt ( 1 + V * V)) her zaman 1'den biraz daha büyük olacaktır.

Ve sonra bu formül basitleştirilebilir:

 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 :

İyi ki batırdılar....
t1 bu durumda her zaman = t2

yazdığın her şey

tek satırda yazılabilir:

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

sonuç aynı olacaktır.

 
Nikolai Semko :

İyi ki batırdılar....
t1 bu durumda her zaman = t2

yazdığın her şey

tek satırda yazılabilir:

sonuç aynı olacaktır.

Evet, onun örneğinde t1 = t2 , ancak yalnızca konu başlatıcı bunların gerçekte nasıl oluşturulduğunu bilir. Ve eğer t1 > t2 olarak oluşturulmuşlarsa, o zaman yeniden hesaplama ve t1 < t2 o zaman nasıl sayılır?

 
Nikolai Semko :

tek satırda yazılabilir:

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


Yüksek ve Düşük arasındaki mesafeyi sayıyorsunuz ve çizgileri var