インディケータ: ZoomPriceティック指標

 

ZoomPriceティック指標:

この指標は、任意のスケーリングレベルの価格チャートを表示します。

作者: fxsaber

 

インジケーターはフレームなしでチャートウィンドウに移動できますか?

また、設定でライン[茶、青、赤]を切り替えられるようにできますか?

 
 
sober:

インジケータをフレームなしでチャートウィンドウに移動できますか?

これはインタラクティブなグラフィカルオブジェクトで、CTRL+Bでいくつかのプロパティ(例えば座標)を変更できます("All "を押すとChartとして表示されます)。したがって、標準的なグラフィカル・オブジェクトでできることはすべて、このオブジェクトで行うことができます。特に、任意のウィンドウ(サブウィンドウ)に配置することができます。

説明の中の短いEAソースがまさにそれです。

このバリアントでは、チャートを他のシンボルに切り替えることができ、オブジェクトはそれが最初に作成されたシンボルを表示し続けます。

また、設定で線[茶、青、赤]を切り替えられるようにできますか?

これらの線は特定の情報を持っています

  • 茶色(デフォルト) - 縦線はカーソル位置の時間位置を示し、横線は価格を示します。
  • 青(デフォルト) - カーソル位置の買値が表示されます。同時に、このティックの時間とスプレッドが右側に表示される(垂直スケールに沿って)。
  • 赤 (デフォルト) - アスク価格と同じ。
入力パラメーターでこれらの線を削除することはできない。茶色のラインは、クロス・カラーを「なし」に設定することで「削除」できる。同様に、Bid/Askラインも削除できますが、対応する過去の折れ線の可視性に影響します。
 
fxsaber:

これはインタラクティブなグラフィカルオブジェクトで、CTRL+B("All "を押すとChartとして表示されます)を使っていくつかのプロパティ(座標など)を変更できます。したがって、標準的なグラフィカル・オブジェクトと同じことができます。

また、垂直スケールを オフにしたり、チャートの背景にオブジェクトを配置することもできます。

従って、例えば、背景を可変スケールのティック・チャート(ヒストリカル/リアルタイム)にすることができる。

一般に、このオブジェクトをどのように使うかは想像力の問題である。

 

デフォルトでは、ティックチャートでは「チャート上に取引レベル(未決済ポジション、ストップロス、テイクプロフィット、未決済注文のレベル)を表示する」は無効になっています。

しかし、このモードを有効にすると便利なことがあります。

画面上では、売りポジションが建てられ、買値(直近のバー)がTPレベルを下回ったことがはっきりとわかります。しかし、アスク価格(赤い折れ線)はTPに達していません。


この表示は、ソースコードを編集してオンにすることができます。

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // チャート上に取引レベル(未決済ポジション、ストップロス、テイクプロフィット、未決済注文のレベル)を表示する。

この行のfalseをtrueに置き換えてください。あるいは、ティック・チャートにメイン・チャートと同じ設定をさせたい場合は、この行をコメントする。

 
fxsaber:

デフォルトでは、ティックチャートでは「チャート上に取引レベル(未決済ポジション、ストップロス、テイクプロフィット、未決済注文のレベル)を表示する」は無効になっています。

しかし、このモードを有効にすると便利なことがあります。

画面上では、売りポジションが建てられ、買値(直近のバー)がTPレベルを下回ったことがはっきりとわかります。アスク価格(赤い折れ線)はTPに達していません。


この表示は、ソースコードを編集してオンにすることができます。

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // チャート上に取引レベル(未決済ポジション、ストップロス、テイクプロフィット、未決済注文のレベル)を表示する。

この行のfalseをtrueに置き換えてください。あるいは、ティック・チャートにメイン・チャートと同じ設定をさせたい場合は、この行をコメントします。

最初のティック・インディケータ"fxsaber "は、より機能的で便利です。チャート・ウィンドウに標準的なインジケーターを重ねて表示することができます。チャートに'scale by pips per bar'を適用できます。すべてが明確です。同じインジケーターである'zoomprice'では、すべてがジャンプしたりスライドしたりします。十字線、青線、赤線はまったく不要で、注意をそらすだけです。

zoomprice」の唯一の利点は、「fxsaber」より速く見えることだ。

 
sober:

最初のティック・インディケーター"fxsaber "は、より機能的で便利である。標準的なインジケーターをチャート・ウィンドウに重ねて表示することができる。チャートに「バーごとのピップスによるスケール」を適用することも可能でした。すべてが明快です。

私はターミナルに弱いので、上級者が何を必要としているのかわかりません。どのように使っているか教えていただけると助かります。例えば、'scale by points per bar' modeは一度も有効にしたことがなく、どのように役立つのかわかりません。一般的に、あなたの経験を教えてください。

zoomprice "というインジケーターでは、すべてがジャンプしたりスライドしたりします。

何もジャンプしたりスライドしたりする必要はありません。インタラクション・インターフェースを理解してください。私にはとても直感的に思えた。私はマウスでスケールを調整する。もし問題がある人がいたら言ってください。今のところ、1つだけ不満があります。

オブジェクトに同じ設定をする方法を理解するために、EAの例を示します。

input int exX = 50;       // X座標
input int exY = 50;       // Y座標
input int exWidth = 450;  // 幅
input int exHeight = 300; // 高さ

input bool exShowGrid = true;            // グリッド
input color exColorBackGround = clrSnow; // 背景色
input bool exTradeLevels = true;         // 注文
input bool exPriceScale = true;          // 価格スケール

#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>

// CHARTOBJECT_ZOOMPRICE ChartObject;
CHARTOBJECT* ChartObject;

void OnInit( void )
{
  ChartObject = new CHARTOBJECT_ZOOMPRICE; // ZoomPriceオブジェクトの作成
  
  // 列挙からオブジェクトのプロパティを設定したり読み込んだりすることができます (F1 - help)
  // enum_object_property_integer, enum_object_property_double, enum_object_property_double
  // enum_chart_property_integer, enum_chart_property_double, enum_chart_property_string
  
  // ChartObject.SetPropertyでプロパティを書き込む
  ChartObject.SetProperty(OBJPROP_XDISTANCE, exX);  // スナップ角度からのX軸方向のピクセル単位の距離
  ChartObject.SetProperty(OBJPROP_YDISTANCE, exY);  // スナップ角度からのY軸方向のピクセル単位の距離

  ChartObject.SetProperty(OBJPROP_XSIZE, exWidth);  // X軸に沿ったオブジェクトの幅(ピクセル単位)。
  ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // Y軸に沿ったオブジェクトの高さ(ピクセル単位)。
  
  ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid);               // グラフ上にグリッドを表示する
  ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // チャートの背景色
  ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels);    // チャート上に取引レベル(未決済ポジション、ストップロス、テイクプロフィット、未決済注文のレベル)を表示する。
  ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale);         // チャート」オブジェクトの価格スケール表示のサイン

#define TOSTRING(A) #A + " = " + (string)(A)
  
  // ChartObject.GetPropertyでプロパティを読み込む
  Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
  Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}

void OnDeinit( const int Reason )
{
  delete ChartObject; // グラフィック・オブジェクトを削除する
}

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  EVENTBASE::MyEvent(id, lparam, dparam, sparam); // オブジェクト・インタラクティビティの必要性
}

void OnTimer( void )
{
  EVENTBASE::MyEventTimer(); // オブジェクト・インタラクティビティの必要性
}

void OnTick( void )
{
  EVENTBASE::MyEventTick(); // オブジェクト・インタラクティビティの必要性
}

十字線と青と赤の線は全く不要で、邪魔なだけだ。

線やテキストを無効にするには、ソースから関数を見つけて

  void SetTextCross( const int X, const int Y )
  {
    if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
      return;

    const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
                                    ((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
                                     this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));

    this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
    this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

    this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

    this.SetTextPrices(TimeCross, Y);

    return;
  }

で関数を見つけ、その本体をコメントアウトする必要があります。

  void SetTextCross( const int X, const int Y )
  {
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;

const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
このGetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));

this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

this.SetTextPrices(TimeCross, Y);
*/.

    return;
  }

十字線を無効にするには、ソースから線を見つけて

        this.HLineCross = price;
        this.VLineCross = time;

を見つけ、それをコメントアウトする必要がある。

// this.HLineCross = price;
// this.VLineCross = time;

zoomprice "の唯一の利点は、"fxsaber "よりも速いことです。

ZoomPriceはTicksの 素晴らしい追加機能で、Ticksが表示しているものをドリルダウンできる。ZoomPriceを書いた後、私自身はTicksを使うのをやめました。

Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • 投票: 19
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.
 

以下に例を示します。

ZoomPriceインジケーターの上に別のグリッドインジケーターを重ねて、価格が何pips移動したかを視覚的に判断する 必要があります。隣り合う青い線の間は40pips、隣り合うオレンジの線の間は200pipsです。十字線は必要なく、スケールに連動したグリッドレベルだけでいいのです。状況を判断するには一目見るだけで十分です。そして、グリッドのオレンジの線はチャートの丸い数字で、線がチャートの値1.10900にある場合、スケールをどのように変えても、線はその値を変えません。

ZoomPriceの上にグリッドインジケータを置き、線とスケールをリンクさせようとしましたが、うまくいきませんでした。私はコードをほとんど理解していません。

不要なものはすべてコメントアウトし、あとはグリッドを作れば完璧です。

バーごとのポイントによるスケールは、タブで設定します:プロパティ>>一般

 
sober:

ZoomPriceの上にグリッドインジケーターを重ねてみたり、ラインをスケールにリンクしてみたりしましたが、何もうまくいきませんでした。私はコードがあまり得意ではありません。

不要なものはすべてコメントアウトしたので、あとはグリッドを作れば完璧です。

このグラフィカル・オブジェクトに対応するインジケータをぶら下げれば、水平グリッドを作ることができる。しかし、これは言ってみれば、コードを理解していない人間にとっては些細なことではない。

バーごとのポイントによるスケールは、タブ:プロパティ>>一般で設定します。

ZoomPriceは、MQの16年の歴史の中で唯一、任意のレベルのスケールを作ることができるインジケーターです。つまり、明確に定義された6つのスケールではなく、好きなスケールを設定できるのです。このため、いくつかの非標準的なソリューションが必要でした(これが、オブジェクトに水平スケールがない理由です)。このような非標準的な解決策があるため、ZoomPriceには、ある種の指標をオブジェクトに重ねることができない制限があります(これは水平グリッドには適用されません)。また、別の種類のズームを設定することも考えなければなりません。ヘルプを読んでも、"scale by points per bar "が何なのかまだ理解できていません。

実際、自分で理解しないまま、インジケータの正しい動作の話題に触れてしまいました。OBJ_CHARTオブジェクトが存在する可能性があるため、インジケータをチャート自体ではなく、OBJ_CHARTオブジェクトに 投げることができます。そして、この場合、メイン・チャート上ではなく、OBJ_CHART上でインジケータを正確に実行することが論理的です。

水平グリッドを持つインジケータへのリンクを提供してください。何ができるか見てみましょう。

 
fxsaber:


水平グリッドのあるインジケーターのリンクを送ってください。どんなものができるか見てみよう。

インジケーターhttps://www.mql5.com/ja/code/14916
PriceGrid
PriceGrid
  • 投票: 17
  • 2016.02.29
  • Nikolay Kositsin
  • www.mql5.com
Индикатор строит ценовую сетку из округленных на несколько порядков уровней.