グラスに半分入っているのか、それとも半分空なのか-グラスをどう分析し、トレードに生かすか? - ページ 4

 
Alexey Kozitsyn:

そして、戦略を実行することができます。一種の "フロントランニング "が可能なのです。

戦略については、まだ何も言いたくないんです。ポジションセットやポジション排出に便利なガラスですが、現在の標準ガラスでは自分のポジションの価格を見ることができないので、とても不便です。なぜこのような当たり前のニーズが実現されていないのかも不明です。

 
Alexey Kozitsyn:

線までできれば、線もできる。

そんな便利屋が他にどこにいるのか...。

 
Aleksey Vyazmikin:

そんな便利屋が他にどこにいるのか...。

見つかるけど、どうして?グラスの中の一行のために、他のすべてを書き換えること?

 
Alexey Kozitsyn:

便利屋は見つかるけど、なぜ?グラスに線を引いて、それ以外のことを書くために?

レベルをマークすることはとても重要です。しかし、単純にインジケーションを行い、チャートにラインを入れ、そこからレベルを取ることは十分可能です。

 

こんにちは、グラスのデータ表現を最適化しようとしているのですが、別の投稿を作成した後、地元のピエロがこのトピックを発展させることなくスパムしてしまいました。ここで、任意の指標を用いたトピックを紹介します。

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

カップの中にあるすべての早変わりする偽物のレベルから、予測に使える情報を選び出すというものです。私は、各レベルに任意の重みと序数を適用することによって、これを行います。

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1

#property indicator_label1 "Delta"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlack
#property indicator_width1 1

int iStart;
double iDelta[];

void OnDeinit(const int reason)
{
  string symbol = Symbol();

  MarketBookRelease(symbol);
}

void OnInit()
{
  string symbol = Symbol();

  SetIndexBuffer(0, iDelta, INDICATOR_DATA);
  ArraySetAsSeries(iDelta, true);

  IndicatorSetString(INDICATOR_SHORTNAME, "OrderBook");
  IndicatorSetInteger(INDICATOR_DIGITS, Digits());

  MarketBookAdd(symbol);
}

int OnCalculate(
  const int bars,
  const int counted,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& ticks[],
  const long& volume[],
  const int& spread[]
)
{
  if (iStart == 0)
  {
    iStart = 1;
    ZeroMemory(iDelta);
  }
  else if (bars != counted)
  {
    iDelta[0] = iDelta[1];
  }

  string symbol = Symbol();

  double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid = SymbolInfoDouble(symbol, SYMBOL_BID);

  MqlBookInfo levels[];

  bool book = MarketBookGet(symbol, levels);

  int indexBuy = 1;
  int indexSell = 1;
  long volumeBuy = 0;
  long volumeSell = 0;

  if (book)
  {
    int size = ArraySize(levels);

    for (int k = 0; k < size; k++)
    {
      if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
      }
    }

    for (int k = size - 1; k >= 0; k--)
    {
      if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
      }
    }
  }

  iDelta[0] = (double) (volumeBuy - volumeSell);
  
  return bars;
}
 
Andy Sanders:

良い実装とは言えない。

1.ビーチは専用機能で受信した方が良い、そうでないとスキップが発生する。

2.はい、ループを早めに終了させることができます。それぞれで20回の追加チェックを行う必要があります。

アイデアについて - それが何をもたらすのか説明してください。インジケーターは何をするものですか?偽物でない」レベルの識別にどう役立つのか?

 
Alexey Kozitsyn: アイデアについてですが、何をするものなのか説明してください。インジケーターは何をするものですか?偽物でない」レベルを強調するために、どのような工夫をしているのでしょうか。

コメントありがとうございます、後で最適化します。
私が見たタンブラーは、ほぼ同じように、広がりの両側に2つの壁があり、その間にいくつかのボリュームがあります。


1.スプレッド周辺の脂肪率の早変りレベル
2.[写真の#2]さらに、中程度の出来高の壁があるが、上方への急落を保持する可能性があり、動きが緩やかであれば、動き出すので、この壁の後ろに注文を置くことはできない。
3.[一番端にあるのは、ある種のドラゴンボリュームで、どんなトレンドにも耐えているように見えますが、実は緩やかな動きをするときにも動き出すのです。
4.おそらく、#1と#2の間に、なんとか壁を利用しようとするロボットのボリュームがあり、壁の移動に伴って、これらのレベルが同期して変化しているのだと思います。

これらのレベルを分析するために最初に思いつくのは、上部の総量が大きければ、マーケットメーカーが売りの意思を示し、市場を下方に動かすことを意味し、それぞれ需要が大きく、その逆もまた然りである。しかし、この仮定は完全に正しいとは言えません。

1.これらの壁の位置は変化しており、サポートやレジスタンスとして頼ることはできません。そのため、これらのドラゴンのボリュームを建玉として考えることはできません。
2.同時に、動きは通常マーケットオーダーによって開始され、スプレッド付近で始まります。さらに、ロボットにとって、スプレッド付近で偽のオーダーで遊ぶのはリスクが高く、また、実行される可能性もあります。したがって、このような想定となります。最も現実的な市場の意図は、注文が配置されている場合、彼らはそれが満たされることを望むが、偽の壁の背景には、これらの動きは気付かれないかもしれません、スプレッドから遠くに立ってカップ疑似大容量から削除する1つの多くの理由で、スプレッドの周りの注文でしか見ることができること。

以上を考えると、どこまでが疑似壁でどこからが大発注なのか、明確な定義がないため、疑似壁だけを捨てるわけにはいかないので、スプレッド周辺の動きだけに注目して、カップの重みを割り当てるだけでよいのです。

Цена | Обьем - Стандартный стакан

20    | 5
20.5  | 200
30    | 10
30.5  | 5
40    | 20
40.5  | 1         Итого: 241 контрактов на покупку

50

50.5  | 1
60    | 40
60.5  | 10
70    | 50
70.5  | 100
80    | 5         Итого: 206 контрактов на покупку
つまり、ボリュームを足しただけでは、「売り手がたくさんいるな」と思うのですが、その上から200人の売り手は、絶対に売れない......。
しかし、壁より先にオーダーを合わせると、バイヤーが先行してしまうのです。
目からウロコの使い方に挑戦してみよう
Цена | Обьем - Реалистичный стакан

20    | 5     х 1
20.5  | 200   х 2
30    | 10    х 3
30.5  | 5     х 4
40    | 20    х 5
40.5  | 1     х 6         Итого: 561 контрактов на покупку

50

50.5  | 1     х 6
60    | 40    х 5
60.5  | 10    х 4
70    | 50    х 3
70.5  | 100   х 2
80    | 5     х 1        Итого: 601 контрактов на покупку
この方が現実的です。ウェイトは直線的ではなく、幾何学的に進行させるのが良いのでしょう。また、価格の変化のスタックデータへの依存性を見たいので、ウェイトを正しく追加することで、あるバーでのスタックの状態によって価格がどのように変化するかを見ることができます。
 
Andy Sanders:


だから、ボリュームを足すだけで、たくさんの売り手がいると思うのですが、その上から200人の売り手は、絶対に売れません。
そして、壁より先にオーダーを合わせると、バイヤーが先行してしまう。
目からウロコの使い方に挑戦してみよう
この方が現実的です。ウェイトは直線的ではなく、幾何学的に進行させるのが良いのでしょう。また、価格の変化のスタックデータへの依存性を見たいので、ウェイトを正しく追加することで、あるバーでのスタックの状態によって価格がどのように変化するかを見ることができます。

これは面白いアイデアですね。しかし、大物は氷山の落札、つまり食われそうになったときに自分で補充するものを使うということを考慮しなければならない。また、水準器を吊るすガラスの奥行きは、左右で6本ずつですか?

 
Aleksey Vyazmikin:

これは面白いアイデアですね。しかし、大物は氷山の落札、つまり食われそうになったときに自分で補充するものを使うということを考慮しなければならない。また、水準器を吊るすガラスの奥行きは、左右で6本ずつですか?

今更ながら、ちょっと間違ったやり方をしていることに気づきました。
今、カップの端から広がりまでのサイクルがあり、その反復の順序番号が重みになる。
この場合、出来高が少なくてもレベルが多ければ、スプレッド付近で大きなウェイトを得ることができる。

そのため、逆に、例えば左右に10個ずつ、最大重量を設定し、端からではなく、広がりから重みを置き始め、端に近いほど重みが減り、最大でゼロになるようにする必要があります。その場合、レベルがいくつ設定されていても、±10pipsの値動きを分析するのがより正しいでしょう。

氷山を消す方法 - わからない、理論上は左右均等になるので、解析には影響しないはずだ。

 
Andy Sanders:

考え方は明快です、ありがとうございます。また、「壁」を見つけるために、どのレベルから高いボリューム(> Xロット)がある期間(> Yカップの更新)削除されないかを見るだけではどうでしょうか?そして、その点をチャート上にドットでマークしてください。

これによって、大容量を引きずって行ったり来たりするロボットは、一箇所に長く留まることがないので、すぐにフィルタリングされることになります。

このように見えるかもしれません。

各ポイントは、少なくとも500ロットのレベルであり、少なくとも150カップの更新期間である。