Не простая работа получилась, но изначально подход, видится, выбран не правильный - через трендовые линии-объекты.
Почему не через Bitmap-объект с кастомным ресурсом - канвас? Скорее всего, мат. либа именно так и будет реализована в 3D.
Не простая работа получилась, но изначально подход, видится, выбран не правильный - через трендовые линии-объекты.
Почему не через Bitmap-объект с кастомным ресурсом - канвас? Скорее всего, мат. либа именно так и будет реализована в 3D.
А как тогда реализовать интерактивность (управление 3D объектом)? Как реагировать на изменение таймфрейма, масштаба графика, изменение окна, появление нового тика (бара) и множества других?
В данной реализации, это всё делает терминал и функционал языка MQL5. И ничего программировать не надо. Т.е. предложено простое решение сложной задачи.
А как тогда реализовать интерактивность (управление 3D объектом)? Как реагировать на изменение таймфрейма, масштаба графика, изменение окна, появление нового тика (бара) и множества других?
В данной реализации, это всё делает терминал и функционал языка MQL5. И ничего программировать не надо. Т.е. предложено простое решение сложной задачи.
Как раз через канвас. В кодобазу тиковый индикатор выкладывал на этом принципе. Там интерактивность довольно сильная.
Немного интерактивности и мат. библа сейчас умеет
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"
fxsaber, 2016.11.14 10:11
Прошу доработать CGraphic и CCurve. Слабые классы получились. И наследоваться от них почти нереально, потому что нужное - private. Долго вникал, но чтобы поправить до нормальной эксплуатации, требовалось переписывать самому классы.
Захотел сделать интерактивный тиковый график - вышло только костыльно (без переписывания классов)
void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
MqlTick Ticks[];
const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
ArrayResize(Bids, Amount);
ArrayResize(Asks, Amount);
for (int i = 0; i < Amount; i++)
{
Bids[i] = Ticks[i].bid;
Asks[i] = Ticks[i].ask;
}
}
CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());
void OnDeinit( const int Reason )
{
Graphic.Destroy();
delete Graphic;
ChartRedraw();
}
void GraphTicks( const double &Price1[], const double &Price2[] )
{
Graphic.Destroy();
delete Graphic;
Graphic = new CGraphic;
Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));
Graphic.AddCurve(Price1, CURVE_LINES);
Graphic.AddCurve(Price2, CURVE_LINES);
Graphic.PlotAllCurves();
Graphic.Update();
}
void OnTick()
{
double Bids[], Asks[];
GetPrices(Bids, Asks);
GraphTicks(Bids, Asks);
}
Нет DeleteCurve, ChangeCurve и т.д.
А как тогда реализовать интерактивность (управление 3D объектом)? Как реагировать на изменение таймфрейма, масштаба графика, изменение окна, появление нового тика (бара) и множества других?
В данной реализации, это всё делает терминал и функционал языка MQL5. И ничего программировать не надо. Т.е. предложено простое решение сложной задачи.
Разве темой статьи является какое-то интерактивное управление? Тема статьи - 3D моделирование. Где в ней та самая волшебная функция в которую отдаешь пространственные координаты, а на выходе получаешь экранные координаты?
В статье не просто тема не раскрыта, а даже кажется, что автор вообще не представляет в чем суть данной темы.
Не простая работа получилась, но изначально подход, видится, выбран не правильный - через трендовые линии-объекты.
Почему не через Bitmap-объект с кастомным ресурсом - канвас? Скорее всего, мат. либа именно так и будет реализована в 3D.
И не то и не другое должно быть, это варианты отображения. Изначально все в массивах должно быть.
Так 3D-массив - это исходные данные. Речь, вроде, о визуализации идет.
Если бы... то хоть без визуализации вообще.
Разве темой статьи является какое-то интерактивное управление? Тема статьи - 3D моделирование. Где в ней та самая волшебная функция в которую отдаешь пространственные координаты, а на выходе получаешь экранные координаты?
В статье не просто тема не раскрыта, а даже кажется, что автор вообще не представляет в чем суть данной темы.
3D - без возможности изменения точки взгляда - это 2D рисунок. Поэтому, интерактивность - самое главное качество в моделировании трёхмерных объектов. Какой смысл в статической картинке?
Волшебная функция есть и пример использования приведён.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья 3D-моделирование на MQL5:
Временной ряд — это динамическая система, в которой значения некоторой случайной величины поступают последовательно — непрерывно или через некоторые промежутки времени. Переход от плоского к объёмному анализу рынка позволяет по-новому взглянуть на сложные процессы и явления, интересующие исследователя. В статье описаны функции визуализации для 3-D представления двумерных данных.
Применительно к финансовым рынкам 3D-моделирование используется, например, для трёхмерного представления временных рядов. Временной ряд — это динамическая система, в которой значения некоторой случайной величины поступают последовательно — непрерывно или через некоторые промежутки времени (тики, бары, фракталы и т.п.). В этой статье рассмотрим вопрос визуализации трёхмерного представления временных рядов, таких как таймсерии и индикаторы (см. рис. 1).
Рис. 1. Примеры трёхмерного представления временных рядов.
Автор: Sergey Pavlov