// ЗАДАЕМ ДВЕ ТОЧКИ ПРИВЯЗКИ ДЛЯ ГЛАВНОЙ ЛИНИИ: ТОЧКА1(ВРЕМЯ,ЦЕНА) и ТОЧКА2(ВРЕМЯ,ЦЕНА)// ЭТА ЛИНИИ ГЛАВНАЯdatetime Line1_Врем0=Time[0], Line1_Врем1=Time[10];
double Line1_Цена0=High[10], Line1_Цена1=Low[10];
ObjectCreate("Line1",OBJ_TRENDBYANGLE,0,Line1_Врем0,Line1_Цена0,Line1_Врем1,Line1_Цена1);
ObjectSetInteger(0,"Line1",OBJPROP_STYLE,STYLE_SOLID);
ObjectSetInteger(0,"Line1",OBJPROP_COLOR,Red);
ObjectSetInteger(0,"Line1",OBJPROP_WIDTH,2);
// СТРОИМ ПАРАЛЛЕЛЬНУЮ ЛИНИЮ ТОЛЬКО ПО ОДНОЙ ТОЧКЕ-ПРИВЯЗКЕObjectCreate("Line2",OBJ_TRENDBYANGLE,0,Time[15],Low[15],0,0);
ObjectSetInteger(0,"Line2",OBJPROP_STYLE,STYLE_SOLID);
ObjectSetInteger(0,"Line2",OBJPROP_COLOR,Lime);
ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,2);
// ПРИСВАИВАЕМ ЛИНИИ Line2 ТАКОЙ ЖЕ САМЫЙ УГОЛ КАК В ЛИНИИ Line1 ЧТО БЫ ЛИНИИ БЫЛИ ПАРАЛЛЕЛЬНЫЕ ObjectSetDouble(0,"Line2",OBJPROP_ANGLE,ObjectGetDouble(0,"Line1",OBJPROP_ANGLE));
// РИСУЕМ ПЕРПЕНДИКУЛЯРНУЮ ЛИНИЮ К Line1 и Line2ObjectCreate("Value",OBJ_TRENDBYANGLE,0,Time[0],Low[15],0,0);
ObjectSetInteger(0,"Value",OBJPROP_RAY,false);
ObjectSetInteger(0,"Value",OBJPROP_COLOR,Gold);
ObjectSetInteger(0,"Value",OBJPROP_WIDTH,3);
ObjectSetDouble(0,"Value",OBJPROP_ANGLE,90+ObjectGetDouble(0,"Line1",OBJPROP_ANGLE));
// ЗАДАЧА: ПОЛУЧИТЬ РАЗМЕР ЖЕЛТОЙ ЛИНИИ МЕЖДУ Line1 и Line2. ОПТИМАЛЬНЫМ И УНИВЕРСАЛЬНЫМ ПАРАМЕТРОМ РАЗМЕРА НАВЕРНОЕ БУДУТ - ПИКСЕЛИ.
好きなように
ご覧の通り、複雑なことは何もありません。少し考えればわかることです。
これだけ詳しい回答があれば、TCも自分でコードを書けるようになるのではないでしょうか。
ここでは、学校の問題は学校で意味を把握できなかったので、すでに忘れてしまったという人が多い。
と出力されます。
次に、ObjectGetValueByShift("Line1",a++) と ObjectGetValueByShift("Value",a++) と ObjectGetValueByShift("Line2",a++) により交差部を検索する。
私の読みは正しいのでしょうか?問題を解決するためには
1. 与えられた平行線に垂直な線を引く。
2. 垂直線と与えられた線との交点を決定する。
3. 交点間の距離を計算する
写真で見ると一目瞭然。
(異なるラインとその間の距離)
.............................................................................
.............................................................................
.............................................................................
.............................................................................
説得力がない。
説得力がない。
教科書を開いて納得
はい
残念ながら私は数学者ではありません(青の角度 = 90 - 線の角度
角度をラジアン変換する
赤の反対勾配 = 緑の斜辺 * サイン (青の角度)
このスレッドでは、すでに両方の線を垂直に交差させることで斜辺を求めました
直線の角度が90または0であれば、平行線を水平または垂直に交差させるという、異なる方法で距離を考える。
ググってみてはいかがでしょうか?
青の角度 = 90 - 線の角度
角度をラジアンに変換する
赤の反対勾配 = 緑の斜辺 * サイン (青の角度)
このスレッドでは、すでに両方の線を垂直に交差させることで斜辺を求めました
直線の角度が90または0であれば、別の方法、つまり平行線を水平または垂直に交差させて距離を数える。
うーん...。
なぜか動作しない
簡単なことだと思います.が、思うような結果が得られません。
そう、すべてがシンプルなのです。ただし、あなたのタスクは解決不可能ですが......。))
まず最初に、ObjectGetDouble(0,"Line1",OBJPROP_ANGLE) 関数は忘れてください。 それはトレンドラインに適用できないので、常に0を返します。特に、チャートスケールに 依存しない「角度」トレンドラインには必要です。つまり、スケールを変えてもその角度は変わらないが、線そのものは棒から離れる......ということだ。
でも、一番の問題はそこじゃないんです...。要は、平行な2本のトレンドライン間の垂直線の大きさを求めたい、そんな垂直線をチャート上に描いてみよう...ということです。そして、グラフの縮尺を変えると...垂直が非垂直になる...。))))つまり問題は、あなたが考える垂直(縮尺やあなたの見方による)と数学的な垂直の違いなのです。
価格スケーリングチャート上の垂直は目の錯覚です。
幾何学を使って、この問題を純粋な形で一挙に解決する...。しかし、数学的な計算結果は、チャートで見たものと一致することはない......。しかも、正確に一致させる必要があるので、問題は解決できない。ただ、要件を単純化すると、垂直を探すのではなく、同じ時点の2本の直線の距離だけを探すことになる...。
言葉がありません。
文字は全部わかるけど、文字が読めない
さあさあ、あきらめないでMQLを勉強してください、時間の問題です