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

 
Itum :


Bu doğru... Ve Kırmızı çizginin uzunluğuna ihtiyacım var... Düşünün, bu iki paralel çizgi dikey ise, mavi çizgi ne gösterecek?

Gerçekten - bok.

Bu tür bir hesaplamayı otomatikleştirme ilkesini gösterdim, gerisi size kalmış, çünkü her şey beyninizle uyumlu.

Pekala, burada bir şeye çarptık

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

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


Doğru... Ve Kırmızı çizginin uzunluğuna ihtiyacım var... Düşünün, bu iki paralel çizgi dikey ise, mavi çizgi ne gösterecek?

Bu kırmızı çizginin sadece barın fiyatına ve süresine göre çizilebilmesi nedeniyle dik olmama ihtimali vardır.

Bir seçenek olarak, aşağıdaki sırayı görüyorum: Eğilim çizgisinin eğimini belirliyoruz veya eğim çizgisini açıyla oluşturuyoruz ve buna dayanarak, ikinci çizgiye olan mesafeyi hesapladığımız dikeyin açısını elde ediyoruz.

Ama bu sadece bir teori. Kontrol edilmesi gerekiyor.

 
Alexey Viktorov :

Bu kırmızı çizginin sadece barın fiyatına ve süresine göre çizilebilmesi nedeniyle dik olmama ihtimali vardır.

Bir seçenek olarak, aşağıdaki sırayı görüyorum: Eğilim çizgisinin eğimini belirliyoruz veya eğim çizgisini açıyla oluşturuyoruz ve buna dayanarak, ikinci çizgiye olan mesafeyi hesapladığımız dikeyin açısını elde ediyoruz.

Ama bu sadece bir teori. Kontrol edilmesi gerekiyor.

Kıçını tekmelemek. Fourier dönüşümlerini uygulama zamanı

 
Renat Akhtyamov :

Gerçekten - bok.

Bu tür bir hesaplamayı otomatikleştirme ilkesini gösterdim, gerisi size kalmış, çünkü her şey beyninizle uyumlu.

Pekala, burada bir şeye çarptık

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

biraz, o değil ... ama benzer bir şey var)

Peki, bulmaca...

 
Itum :

biraz, o değil ... ama benzer bir şey var)

Peki, bulmaca...

evet bulmaca yok

Açıyı bulun, formülü kullanarak bacağı bulun.

İşte konu:

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

Bu doğru ... Ve kırmızı çizginin uzunluğuna ihtiyacım var. Düşünün, bu iki paralel çizgi dikey ise, mavi çizgi ne gösterecek? (Farklı açı, farklı uzunluk olacaktır)

Beyaz bir kağıda birbirinden 10 cm uzaklıkta iki paralel çizgi çizilirse ( Şekil 7) bu sayfa istediğiniz açıda bükülebilir ve aynı 10 cm olacaktır ( Şekil 6) .


Hedefleriniz konusunda kafam karıştı...

Bize başlangıçta sahip olduklarınızı söyleyin lütfen. Paralel çizgilerimiz yoksa mesafe hakkında nasıl soru sorabileceğinizi bana açık değil ve varsa, bu veriler olmadan ikinci çizgi nasıl inşa edilir?

Yukarıda iki satırın kodunu vermişsiniz ama pardon hiç paralellik yok.

Yoksa görev sadece paralel çizgiler oluşturmak mı? Veya çizgilerin paralel olup olmadığını kontrol edin? Veya herhangi bir zamanda herhangi iki satır arasındaki farkı bulmak mı?

Sayfalı örnek çok basit, ancak grafik geçmişteki delikler nedeniyle farklı bir resme sahip olabilir, örnek olarak - sayfayı üç parçaya kesin ve ortadakini çıkarın, kalan iki parçayı birleştirin ve göreceksiniz ki çizgiler çarpık hale gelir, ancak aralarındaki mesafe korunur. Buna göre, çizginin henüz kesilmediği herhangi bir noktada mesafeyi ölçebiliriz ve bunun için her bir çizgi için deliksiz veya restore edilmiş deliklerle iki noktada koordinatlara ihtiyacımız var.
 

Sorunu çözmek için ihtiyacınız olan:

1. verilen paralel çizgilere bir dik çizin

2. Verilen doğrularla dikin kesişme noktalarını belirleyin

3. kavşak noktaları arasındaki mesafeyi hesaplayın


Resimlerde açıkça:

(çeşitli çizgiler ve aralarındaki mesafeler)



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


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


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


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


 

Genel olarak, böyle bir seçenek yaptım - deltayı ayarlayabilir veya çizgilerin gerçekten paralel olması koşuluyla fiyat / zaman konumundan bulabilirsiniz.

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

Kodda, x ekseni çubuklar olarak görülebilir, bu nedenle tahmin için daha fazla doğruluğa ihtiyacınız varsa, o zaman saniyeye dönüştürmeniz ve delikleri kontrol etmeniz gerekir.

Fiyatı yalnızca gelecekte çubukları dikkate alarak tahmin edebilirsiniz - bu, planlanan delikler dikkate alınarak ayrı olarak hesaplanmalıdır! Bazen zıt yaratılmaları gerektiği komik ...

 
Ve bir kanal oluşturmayı planlıyorsanız, nesnelerin ekranın etrafında dolaşmaması için, grafik arabellekleri kullanarak göstergeyi oluşturmak veya döngüsel yeniden çizim yapmak daha iyidir.
 
Aleksey Vyazmikin :

Genel olarak, böyle bir seçenek yaptım - deltayı ayarlayabilir veya çizgilerin gerçekten paralel olması koşuluyla fiyat / zaman konumundan bulabilirsiniz.

Kodda, x ekseni çubuklar olarak görülebilir, bu nedenle tahmin için daha fazla doğruluğa ihtiyacınız varsa, o zaman saniyeye dönüştürmeniz ve delikleri kontrol etmeniz gerekir.

Fiyatı yalnızca gelecekte çubukları dikkate alarak tahmin edebilirsiniz - bu, planlanan delikler dikkate alınarak ayrı olarak hesaplanmalıdır! Bazen zıt yaratılmaları gerektiği komik ...


Deltanın mavi bir çizgi olduğunu doğru anlıyor muyum ... Ve burada kırmızı boyut yok mu?

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

Neden: