Обсуждение статьи "Пишем скальперский стакан цен на основе графической библиотеки CGraphic" - страница 2

 
Konstantin Seredkin:

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

Интересует программная реализация? Скальперский стакан цен базируется на классе CMarketBook. Он позволяет получать распространенные свойства включая цену максимального объема.
 
Vasiliy Sokolov:
Интересует программная реализация? Скальперский стакан цен базируется на классе CMarketBook. Он позволяет получать распространенные свойства включая цену максимального объема.

Ага, в этом классе сам максимальный объем нашел, интересует как его дополнить что бы он еще от найденного макс объема еще и цену определял.

Тема просто интересна, к примеру можно сделать индикатор, в котором будет переменная Объема = 1000, как только в стакане появляется ближайший к цене объем >=1000 на графике на данной цене появляется полоска. Можно много чего замутить интересного, вот и интересно можно ли расширить функионал класса, смотрю там есть несколько данных которые ваш стакан не задействует, ОИ и максимальные значения по открытию заявок в обе стороны и т.д. тоже вещь нужная, а вот цены нет... если дополните буду благодарен или направьте, с данными стакана просто ни когда не работал, а тут нарвался на вашу тему и стало интересно, к тому же у вас все так удобно обыграно.

 

Добрый вечер, Василий

Статья меня настолько заинтересовала, что я решил зарегистрироваться и оставить свой комментарий (№1).

Пытаюсь вникнуть в алготрейдинг, но, всё ещё чувствую себя новичком.

Вложенный код запустил в режиме тестера для ознакомления с его работой. НО стакан почему-то не отображается полностью, а именно открывается рамка и легенда справа а график и кнопки отсутствуют. Тестер работает, в журнале нет указания на ошибку. Что я не так сделал? помогите подключиться.

Заранее благодарен,

Александр


 

 
AMK_robot:

Добрый вечер, Василий

Статья меня настолько заинтересовала, что я решил зарегистрироваться и оставить свой комментарий (№1).

Пытаюсь вникнуть в алготрейдинг, но, всё ещё чувствую себя новичком.

Вложенный код запустил в режиме тестера для ознакомления с его работой. НО стакан почему-то не отображается полностью, а именно открывается рамка и легенда справа а график и кнопки отсутствуют. Тестер работает, в журнале нет указания на ошибку. Что я не так сделал? помогите подключиться.

Заранее благодарен,

Александр  

Добрый день. Спасибо за проявленный интерес к статье и нашему сообществу. Ответ на Ваш вопрос скрывается в нем же. Тестер стратегий не предствляет историю стакана, поэтому запускать стакан можно только на графике в режиме реал-тайм. К тому же в режиме тестирования, графические компоненты отображаются с ограниченным функционалом, поэтому отобразить стакан цен в тестере все равно не получиться. Используйте стакан только на графике. Кроме того, стакан цен транслируется не для всех рынков, поэтому Вам лучше подключиться к Московской бирже или использовать демо-счет MetaQuotes.

 

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

Есть вопрос

Ваш пример

//+------------------------------------------------------------------+
//|                                                   MarketBook.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- indicator buffers mapping
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| MarketBook change event                                          |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}

А как правильно сделать де инициализацию стакана

Какой вариант более правильный, вроде и так и так работает

void OnDeinit(const int reason)
  {  

//|-----------    
   if(!MarketBookRelease((string)m_book_market.SetMarketBookSymbol(Symbol())))
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//|-----------


//|-----------  
   if(!m_book_market.SetMarketBookSymbol(Symbol()))  
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//|-----------

  }
 
Konstantin Seredkin:

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

Есть вопрос

Ваш пример

А как правильно сделать де инициализацию стакана

Какой вариант более правильный, вроде и так и так работает

чего то не пойму, а это что:

CMarketBook MarketBook.mqh
 
Konstantin:

чего то не пойму, а это что:

Какая то строка кода...
 
Konstantin Seredkin:
Какая то строка кода...

так ты же этот код показал, вот и спрашиваю -это что такое, т.к. не понятный синтаксис

//+------------------------------------------------------------------+
//|                                                   MarketBook.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- indicator buffers mapping
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| MarketBook change event                                          |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}
 
Konstantin:

так ты же этот код показал, вот и спрашиваю -это что такое, т.к. не понятный синтаксис

А слова которые я написал в своем вопросе не о чем не говорят ?

Ваш пример

Этот код опубликован автором темы в описании класса https://www.mql5.com/ru/articles/3336

По этому этот вопрос как минимум не мне должен быть адресован...

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • 2017.06.23
  • Vasiliy Sokolov
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 

Копипаста наверное. Бывает. Автор скорее всего писал этот код частично прямо в браузере.

Вместо 

CMarketBook MarketBook.mqh

напишите 

CMarketBook MarketBook;