Кукл :)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
...
793
...  

Провел миниисследование на тему Кукла :)
Если кто не верит в хождение за стопами, то вот вам с вертушки :)

Kukl

Конкретно на рисунке, пытался представить информацию о выставленных лимитках, так как уровни там слишком динамичные и смысловой нагрузки не несут.
Не знаю как на Московской, но например, вот это на Американской бирже не прокатит, потому что при выставлении ордера за обьемом обьем тактично начинает уползать :)

https://www.mql5.com/ru/forum/12342/page4#comment_1481479

Поэтому, хотелось представить книгу ордеров в виде не зависящим от уровней.
Возможно у кого-то будут идеи получше, но пока сделал так.

1. весь вертикальный ценовой ряд в книге разбиваем на ряд Buy и Sell
2. начиная от самых крайних цен выставляем весовые коэффициенты, для простоты - порядковый номер уровня, чем ближе к лучшим бандам (ask / bid), тем выше коэффициент и значимее обьем
3. таким образом, не обращаем внимание на фейковые стенки на драконовском расстоянии от текущей цены, которые легко могут сдвигаться, а с помощью весов придаем большее значение тому, что находится ближе к спреду

Мораль читающаяся на рисунке.

Обьемы в книге, по крайней мере на минутках, двигаются прямо противоположно цене, т.е. больше покупателей - начинаются продажи, больше продавцов - идем вверх.

Код индикатора такой, предложение по улучшению приветствуются.

#include <AIV/Matrices.mqh>

#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[];

CSets * iSets;
CHelpers * iHelpers;

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

  MarketBookRelease(symbol);
  delete(iSets);
  delete(iHelpers);
}

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

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

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

  iSets = new CSets();
  iHelpers = new CHelpers();
  
  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 = iHelpers.getCurrentPrice(symbol, 1);
  double bid = iHelpers.getCurrentPrice(symbol, -1);

  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;
}
Файлы:
Helpers.mqh 16 kb
Matrices.mqh 22 kb
Vladimir Karputov
Модератор
181874
Vladimir Karputov  
Не запускается. Не хватает файла #include <AIV/Matrices.mqh>
...
793
...  
Vladimir Karputov:

добавил файлы, но там можно без инклудов обойтись заменив вызовы типа getCurrentPrice() на SymbolInfoDouble() и удалить CSets и CHelpers

#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;
}
Dmitiry Ananiev
9275
Dmitiry Ananiev  

Приказ директора всех денег

Приказываю Объявить охоту за стопами Andy Sanders Срочно ! 

Как только этот чел вытсавит стоповый ордер,  срочно толкать цены к его стопу. 

Эта информация является чисто инсайдерской. Если кто нибудь додумается использовать ее в своих целях то и на его стопы будет объявлена охота.


Число  05,03,2018 Подпись Доллар Рублевич Евров 

Dmitiry Ananiev
9275
Dmitiry Ananiev  

Прям обстрение весеннее! Одному автовывод подавай. у другого мания преследования ... 

Вы хоть на свежий воздух выходите, с противополжным полом почаще общайтесь, кота себе заведите в конце концов... 

Alexander Ivanov
17169
Alexander Ivanov  
Автор , этот индикатор указывает где кукл спрятался?
Alexander Ivanov
17169
Alexander Ivanov  
На mq4 eсть версия?
Vladimir Pastushak
90519
Vladimir Pastushak  
Andy Sanders:


Если кто не верит в хождение за стопами, то вот вам с вертушки :)

Вот Вам с вертушки, никому Ваши стопы не нужны... Человеческая жадность, отсутствие дисциплины, наивность - сами отнимут у Вас деньги...

Vladimir Tkach
26670
Vladimir Tkach  
А что есть Кукл и вертушка?
Mihail Marchukajtes
6115
Mihail Marchukajtes  
Не вертушка, а ватрушка!!!!
Alexandr Saprykin
15854
Alexandr Saprykin  
Vladimir Tkach:
А что есть Кукл и вертушка?

Здесь почитайте

Кто такой кукл?
Кто такой кукл?
  • spydell
  • spydell.livejournal.com
В трейдинговом сообществе одно из самых часто употребляемых слов является «кукл». О нем все слышали, многие говорят, но большая часть настроена скептически, иронично, вкладывая некоторую мифологическую составляющую. Но на самом деле все просто. Попробую максимально доступно объяснить, что я вкладывают в это понятие. Начну сначала. Случай...
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий