を含む2本の平行線間の距離を計算する! - ページ 4

 
Itum:


そうなんです.あと、レッドラインの 長さが欲しい・・・。もし、この2本の平行線が垂直 だったら、青い線はどうなるのでしょう?

本当にゴミのようなものです。

このような計算を自動化する原理を示しましたが、あとはあなたの頭脳にお任せします。

そして、ここで何かにぶつかる...。

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

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


そうなんです.あと、レッドラインの 長さが欲しい・・・。もし、この2本の平行線が垂直だったら、青い線はどうなるのでしょう?

この赤い線は、棒グラフの価格と時間によってのみ描かれるため、垂直でない可能性があります。

選択肢としては、トレンドラインの傾きを求めるか、トレンドラインを角度でプロットして直角度を求め、それによって2本目の線までの距離を計算する、という順序が考えられますね。

でも、これはあくまで仮説です。確認する必要があります。

 
Alexey Viktorov:

この赤い線は、バーの価格と時間に基づいてのみ描かれるため、垂直でない可能性があります。

オプションとして、トレンドラインの傾きを決定する、あるいはトレンドラインを角度で描き、それをもとに垂直角を求め、2本目の線までの距離を計算する、という順序が考えられますね。

でも、それはあくまで理論上の話。テストが必要なのです。

ガッカリだ。フーリエ変換を適用するときです。

 
Renat Akhtyamov:

本当に最悪です。

この種の計算を自動化する原理は示したが、あとは君の頭の中がすべて正しいから、君次第だ。

さて、ここでも何かヒットしましたね。

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

a little bit, not the same...が、似たようなものはある )

なんだこのパズルは...。

 
Itum:

ちょっとやそっとじゃ.が、似たようなものがある)

なんだこのパズルは...。

パズルはないんです。

角度を求め、公式でカテを求めます。

ここでお題を出します。

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

よーしそして、長さが必要です。 赤い線 もし、平行な2本の線が垂直だったら、青い線は何を示すでしょうか?(角度が違えば、長さも違う)

白いシートに10cm間隔で2本の平行線を引くと(Fig.7)、シートをどの角度でひねっても 同じ10cmになる(Fig.6)。


あなたの目標に困惑しています...。

最初に持っているものを教えてください。平行線がないのに距離を問うのはおかしいし、平行線があるとして、そのデータがないのにどうやって2本目の線を構成するのだろう?

上では2行のコードを引用していますが、えーと、そこには全く並列性がありませんね。

それとも、平行線を作るだけの作業なのでしょうか?あるいは、線が平行かどうかを確認するため?それとも、いつでも任意の2行の差を求めるだけ?

シートの例は非常にシンプルですが、歴史に穴が開いているため、グラフは別の絵を示すことができます。例として、シートを3つに切り、真ん中の部分を取り除き、残った2つの部分をつなげると、線はカーブになりましたが、それらの間の距離は保たれていることが分かります。したがって、まだ線が切断されていない任意の地点で距離を測定すればよく、そのためには、線ごとに穴のない2点、あるいは穴が復元された2点での座標が必要になる。
 

問題を解決するためには

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