どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 26

 
atztek:

将来的には直線だけでなく、移動平均線などにも対応できるように、インジケーターバッファを用意しました。


最終的にどうしたいかを指定できるかもしれません
 
こんにちは!トレンドの傾きを測定して、傾きの値を表示する方法を教えていただければ
 
真ん中の傾きを測定して、-35度のように表示したい
 
igor2013:
真ん中の傾きを測定して、-35度のように表示したい

グラフ上の-35°は何ですか?規模が変わったらどうする?
 
Vinin:

最終的にどうしたいかを明記したほうがいいかもしれませんね

上の例では、ヒストリーの全長に沿って、インジケーターバッファーを使って 線を引いています。
最後の20小節にのみ限定すること。つまり、新しいバーが現れると、線は右に伸び、左に縮み、その長さは常に20本と同じになる。
 

コードに何を書いているのか完全に理解しているわけではないのですが、カーソルを行に移動させると度数が変わるのに、画面には同じ数字が表示され続けています。

ObjectDelete("TremdLineAverage")。
ObjectCreate("TremdLineAverage",OBJ_TRENDBYANGLE,0,0,0,0); // ------------------------- トレンドライン2座標値
ObjectSet ("TremdLineAverage", OBJPROP_WIDTH, HirinaUgolAverage); // ---------------------------------------- 横幅
ObjectSet ("TremdLineAverage", OBJPROP_COLOR, colUgolAverage); // ---------------------------------------------- カラー
ObjectSet ("TremdLineAverage", OBJPROP_TIME1 ,Time[1]); // ------------------------------- 1つの時間座標を指定します。
ObjectSet ("TremdLineAverage", OBJPROP_TIME2 ,Time[0]); // ------------------------------- 1つの時間座標を指定します。
ObjectSet ("TremdLineAverage", OBJPROP_PRICE1,UgolAverage1_1); // ----------------------------- 1 価格座標値
ObjectSet ("TremdLineAverage", OBJPROP_PRICE2,UgolAverage1_0); // ----------------------------- 2 価格座標値
ObjectSet ("TremdLineAverage", OBJPROP_RAY, 15); Ugol=15;

 
アップが15、ダウンが-15です。
 
ObjectDelete("TremdLineAverage")。
ObjectCreate("TremdLineAverage",OBJ_TRENDBYANGLE,0,0,0,0); // ------------------------- トレンドライン2座標系
ObjectSet ("TremdLineAverage", OBJPROP_WIDTH, HirinaUgolAverage); // ---------------------------------------- 横幅
ObjectSet ("TremdLineAverage", OBJPROP_COLOR, colUgolAverage); // ---------------------------------------------------------------- カラー
ObjectSet ("TremdLineAverage", OBJPROP_TIME1 ,Time[1]); // ------------------------------- 1つの時間座標を指定します。
ObjectSet ("TremdLineAverage", OBJPROP_TIME2 ,Time[0]); // -------------------------------- 1つの時間座標を指定します。
ObjectSet ("TremdLineAverage", OBJPROP_PRICE1,UgolAverage1_1); // ----------------------------- 1 価格座標値
ObjectSet ("TremdLineAverage", OBJPROP_PRICE2,UgolAverage1_0); // ----------------------------- 2 価格座標値
ObjectSet ("TremdLineAverage", OBJPROP_ANGLE, 15); Ugol=15;
 
ありがとうございます。
 
igor2013:
ご感想をお寄せいただきありがとうございました。

既成の機能、試してみてください。

SetTLineByAngle()関数です。

この関数は、OBJ_TRENDBYANGLE オブジェクトを現在のチャートの傾斜角度で設定します。
cl - TRENDBYANGLEオブジェクトの色.必須パラメータです。
nm - オブジェクト名。デフォルト値である "" を渡すと、現在のバーのオープン時間が名前として使用されます。
t1 - オブジェクト設定時間の最初の座標.デフォルト値 - 0 - 10小節目のオープニング時間。
p1 - 価格を設定するオブジェクトの最初の座標.初期値 - 0 - 10本目のバーの最小値。
t2 - オブジェクト設定時間の第2座標.デフォルト値 - 0 - 現在のバーのオープン時間。
p2 - オブジェクト設定価格の2番目の座標.このパラメータは、一種のスイッチです。つまり、時間/価格座標のペアを使用してトレンドラインが描かれ、トレンドラインの傾斜角度の値は無視されます。デフォルト値 - 0 - 傾き角によるトレンドライン構築。
an - 勾配角度(度).初期値 - 0 - 水平線。
ry - BOWプロパティのフラグ。 デフォルト値はFalseです。
st - 線のスタイル.有効な値は、STYLE_SOLID(デフォルト)、STYLE_DASH、STYLE_DOT、STYLE_DASHDOTです。
wd - 線幅.初期値は1です。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_TRENDBYANGLE трендовая линия по углу     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               (  ""  - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10]                       |
//|    p1 - ценовой уровень            (  0   - Low[10])                       |
//|    t2 - время открытия бара        (  0   - время открытия текущего бара)  |
//|    p2 - ценовой уровень            (  0   - по углу)                       |
//|    an - угол                       (  0   - по умолчанию)                  |
//|    ry - луч                        (False - не луч)                        |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetTLineByAngle(color cl, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,
              double an=0, bool ry=False, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[10];
  if (p1<=0) p1=Low[10];
  if (t2<=0) t2=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TRENDBYANGLE, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1 , t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_TIME2 , t2);
  if (p2>0) ObjectSet(nm, OBJPROP_PRICE2, p2);
  else ObjectSet(nm, OBJPROP_ANGLE, an);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_RAY  , ry);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
}