Calcolare la distanza tra due linee parallele tra cui ! - pagina 4

 
Itum:


Proprio così... E ho bisogno della lunghezza della linea rossa... Immaginate se queste due linee parallele fossero verticali, cosa mostrerebbe la linea blu?

È davvero una schifezza.

Ho mostrato il principio dell'automatizzazione di questo tipo di calcolo, il resto sta a voi, perché siete a posto con il vostro cervello.

E qui abbiamo colpito qualcosa...

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

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


Proprio così... E ho bisogno della lunghezza della linea rossa... Immaginate se queste due linee parallele fossero verticali, cosa mostrerebbe la linea blu?

È possibile che questa linea rossa non sia perpendicolare a causa del fatto che può essere disegnata solo dal prezzo della barra e dal tempo.

Come opzione, posso vedere la seguente sequenza: determiniamo la pendenza della linea di tendenza o tracciamo la linea di tendenza per un angolo e otteniamo l'angolo perpendicolare con cui calcoliamo la distanza dalla seconda linea.

Ma questa è solo una teoria. Dovrebbe essere controllato.

 
Alexey Viktorov:

È possibile che questa linea rossa non sia perpendicolare perché può essere disegnata solo in base al prezzo della barra e al tempo.

Come opzione, vedo la seguente sequenza: si determina la pendenza della linea di tendenza o si disegna la linea di tendenza per l'angolo e si ottiene l'angolo perpendicolare in base al quale si calcola la distanza dalla seconda linea.

Ma questa è solo teoria. Ha bisogno di essere testato.

Che peccato. È il momento di applicare le trasformate di Fourier.

 
Renat Akhtyamov:

Fa davvero schifo.

Vi ho mostrato il principio dell'automatizzazione di questo tipo di calcolo, il resto sta a voi, perché avete la testa a posto.

Anche qui abbiamo trovato qualcosa.

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

un po', non lo stesso... ma qualcosa di simile c'è)

Che puzzle...

 
Itum:

un po', non lo stesso ... ma c'è qualcosa di simile).

Che puzzle...

Non c'è nessun puzzle.

Trova l'angolo, trova il cateto usando la formula.

Ecco il soggetto:

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

Va bene... E ho bisogno della lunghezza. la linea rossa. Immaginate se le due linee parallele fossero verticali, cosa mostrerebbe la linea blu? (ad angoli diversi, sarà di lunghezza diversa)

Se si disegnano due linee parallele a 10 cm di distanza su un foglio bianco(Fig.7), si può girare il foglio in qualsiasi angolo e saranno sempre gli stessi 10 cm(Fig.6).


Sono confuso sui tuoi obiettivi...

Ditemi cosa avete inizialmente, per favore. Non mi è chiaro come si possa chiedere la distanza se non abbiamo linee parallele, e se ce l'abbiamo, come si costruisce la seconda linea senza quei dati?

Sopra hai citato il codice di due linee, ma, fammi vedere, non c'è nessun parallelismo.

O il compito è solo quello di costruire linee parallele? O per controllare se le linee sono parallele? O semplicemente trovare la differenza tra due linee qualsiasi in qualsiasi momento?

L'esempio con il foglio è molto semplice, ma il grafico può mostrare un'immagine diversa a causa dei buchi nella storia, come esempio - tagliate il foglio in tre parti e togliete la parte centrale, collegate le due parti rimanenti e vedrete che le linee sono diventate curve, ma la distanza tra loro è conservata. Di conseguenza, possiamo misurare la distanza in qualsiasi punto in cui la linea non è ancora stata tagliata, e per questo abbiamo bisogno di coordinate in due punti senza fori per ogni linea, o con fori ripristinati.
 

Per risolvere il problema è necessario:

1. disegna una perpendicolare alle linee parallele date

2. determinare i punti di intersezione della perpendicolare con le linee date

3. calcolare la distanza tra i punti di intersezione


Chiaramente in immagini:

(linee diverse e distanze tra loro)



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


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


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


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


 

Comunque, fatta questa opzione - si può impostare il delta e si può trovare dalla posizione prezzo/tempo, a condizione che le linee siano davvero parallele.

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

Nel codice l'asse x vede le barre, quindi se hai bisogno di più precisione per la previsione devi convertire in secondi e controllare i fori.

Si può solo prevedere il prezzo date le barre nel futuro - questo deve essere calcolato separatamente, date le buche previste! La cosa divertente è che a volte bisogna crearli al contrario...

 
E se avete intenzione di costruire un canale, è meglio costruire un indicatore utilizzando buffer grafici o fare un ridisegno ciclico, in modo da non avere oggetti che corrono sullo schermo.
 
Aleksey Vyazmikin:

Comunque, fatto questa opzione - si può impostare il delta e si può trovare dalla posizione prezzo/tempo, a condizione che le linee siano davvero parallele.

Nel codice l'asse x vede le barre, quindi se hai bisogno di più precisione per la previsione devi convertire in secondi e controllare i fori.

Si può solo prevedere il prezzo date le barre nel futuro - questo deve essere calcolato separatamente, date le buche previste! La cosa divertente è che a volte bisogna crearli al contrario...


Ho capito bene che il delta è la linea blu ... Non è la dimensione di quello rosso qui?

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