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

 
Itum:

グラフの縮尺を含めて(縮尺に影響されないように) 2本の 平行 間の距離を計算 する方法を教えて ください。

以下はその一例です。

赤い線は平行な2本の線の距離ですが、どのように計算するのでしょうか?

2つの線を結ぶ単純な垂直線の倍数で変化する赤い垂直線がありますね。

汗をかかないでください、あなたの答えは。

線上の2点で同時に価格差が発生する。

//追記:もう泳いだ...。

しかし、私の主張を確認することはできます。

答えもあるのですが、幾何学の「長方形の三角形」のところにあります。カセットの長さ"

 
Itum:

グラフの縮尺を含めて(縮尺に影響されないように)2本の平行線間の距離を計算する方法を教えてください。

以下はその一例です。

赤い線は平行な2本の線の距離ですが、どのように計算するのでしょうか?

春です。

目盛りを含めて何かを計算する、ただし目盛りが影響しない方法で。

平行移動は影響しないはずでは?

 
Itum:

グラフの縮尺を含めて(縮尺に影響されないように)2本の平行線間の距離を計算する方法を教えてください。

以下はその一例です。

赤い線は平行な2本の線の距離ですが、どのように計算するのでしょうか?

MAHをチャートに置いて、レベルを設定すれば、何も計算する必要はない。

 
Itum:

グラフの縮尺を含めて(縮尺の影響を受けないように)2本の平行線間の距離を計算するにはどうしたらよいでしょうか?

何を手に入れたいかによるのでは?ピクセル単位で距離を知りたい場合は、三角形を作り、ピタゴラスの定理で辺を計算する。しかし、この値はスケールに影響されます。値動きが欲しい場合は、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:

上の式 から、この2本の平行線間の最短距離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

あなたが書いたもの全てです。

は1行で書くことができます。

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

ということになります。

 
Nikolai Semko:

まあ、勘違いもいいところですが...。
この場合のt1は常に=t2

あなたが書いたもの全てです。

は1行で書くことができます。

ということになります。

そう、彼の例では、t1 = t2 で、実際にどのように構築されているかは、トピックスターターだけが知っているのです。また、t1 > t2 で構築され、その後再計算して t1 < t2 となった場合、どのようにカウントするのでしょうか。

 
Nikolai Semko:

は1行で書くことができます。

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


HighとLowの間の距離を数えると、線がある。