Discussão do artigo "Modelagem 3D em MQL5"

 

Novo artigo Modelagem 3D em MQL5 foi publicado:

As séries temporais são um sistema dinâmico em que os valores de uma variável aleatória chegam de forma consistente, isto é, de forma contínua ou em intervalos. A transição para a análise 3D de mercado fornece um novo olhar sobre os complexos processos e fenômenos de interesse para os investigadores. Este artigo descreve as funções de visualização para representações em 3D de dados bidimensionais.

As linhas nos planos paralelos ao plano XZ e YZ são desenhadas separadamente. É possível modificar pelo número de nós em cada um dos eixos e na própria função.

Fig. 6. Exemplo construção de superfície 3D.

Fig. 6. Exemplo de construção de superfície 3D.

Autor: Sergey Pavlov

 

Não é uma tarefa fácil, mas inicialmente a abordagem parece estar errada - por meio de objetos de linhas de tendência.

Por que não por meio de um objeto Bitmap com recurso personalizado - canvas? Muito provavelmente, a biblioteca mat. será implementada em 3D dessa forma.

 
fxsaber:

Não é uma tarefa fácil, mas inicialmente a abordagem parece estar errada - por meio de objetos de linhas de tendência.

Por que não por meio de um objeto Bitmap com recurso personalizado - canvas? Muito provavelmente, a biblioteca de tapetes será implementada em 3D dessa forma.

E então, como realizar a interatividade (controle do objeto 3D)? Como reagir à mudança de timeframe, escala do gráfico, mudança de janela, novo tick (barra) e muitos outros?

Nessa implementação, o terminal e a funcionalidade da linguagem MQL5 fazem tudo isso, e não há necessidade de programar nada. Ou seja, é oferecida uma solução simples para um problema complexo.

 
Sergey Pavlov:

E então como realizar a interatividade (controle de objetos 3D)? Como reagir a uma mudança de período de tempo, escala do gráfico, mudança de janela, novo tick (barra) e muitos outros?

Nessa implementação, o terminal e a funcionalidade da linguagem MQL5 fazem tudo isso, e não há necessidade de programar nada. Ou seja, é oferecida uma solução simples para um problema complexo.

Apenas por meio do kanvas. Publiquei um indicador de tick com base nesse princípio no Kodobaza. A interatividade é bastante forte lá.

Um pouco de interatividade e mat. bibla agora sabe como fazer isso

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Discussão do artigo "Distribuições estatísticas em MQL5 - Aproveitando o melhor do R e tornando-o mais rápido"

fxsaber, 2016.11.14 10:11 AM

Por favor, finalize o CGraphic e o CCurve. Elas são classes fracas. E é quase irrealista herdar delas, porque o necessário é privado. Levei muito tempo para entender, mas para corrigi-las para a operação normal, eu mesmo tive que reescrever as classes.

Eu queria criar um gráfico de ticks interativo - o resultado foi apenas grosseiro (sem reescrever as classes)

#include <Graphics/Graphic.mqh>

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);
}

Sem DeleteCurve, ChangeCurve, etc.


 
Sergey Pavlov:

E então como realizar a interatividade (controle de objetos 3D)? Como reagir a uma mudança de período de tempo, escala do gráfico, mudança de janela, novo tick (barra) e muitos outros?

Nessa implementação, o terminal e a funcionalidade da linguagem MQL5 fazem tudo isso, e não há necessidade de programar nada. Ou seja, é oferecida uma solução simples para um problema complexo.

O tópico do artigo é algum tipo de controle interativo? O tópico do artigo é modelagem 3D. Onde está a função mágica na qual você fornece coordenadas espaciais e obtém coordenadas de tela como saída?

Não só o tópico não é divulgado no artigo, como também parece que o autor não tem ideia de qual é a essência desse tópico.

 
fxsaber:

Não é uma tarefa fácil, mas inicialmente a abordagem parece estar errada - por meio de objetos de linhas de tendência.

Por que não por meio de um objeto Bitmap com recurso personalizado - canvas? Muito provavelmente, a biblioteca mat. será implementada em 3D dessa forma.

E não deveriam ser ambas, pois essas são opções de exibição. Inicialmente, tudo deve estar em matrizes.
 
Dmitry Fedoseev:
Não deveria ser ambos, pois são opções de mapeamento. Inicialmente, tudo deve estar em matrizes.
Portanto, a matriz 3D é o dado bruto. Acho que estamos falando de visualização.
 
fxsaber:
Portanto, a matriz 3D é o dado bruto. Acho que estamos falando de visualização.
Se fosse assim. Não preciso de nenhuma visualização.
 
Dmitry Fedoseev:
Se ao menos... nenhuma visualização.
Não entendo nada disso.
 
Gosto de seu trabalho. Mas, ainda assim, acho que a modelagem 3D deve ser feita em tela. Tente desenvolver sua tecnologia nessa direção. Boa sorte.
 
Dmitry Fedoseev:

O tópico do artigo é algum tipo de controle interativo? O tópico do artigo é modelagem 3D. Onde está a função mágica em que você fornece coordenadas espaciais e obtém coordenadas de tela como saída?

No artigo, não apenas o tópico não é divulgado, como também parece que o autor não compreende a essência desse tópico.

3D - sem a capacidade de alterar o ponto de vista - é um desenho 2D. Portanto, a interatividade é a qualidade mais importante na modelagem de objetos tridimensionais. Qual é a utilidade de uma imagem estática?

Há uma função mágica e um exemplo de seu uso é dado.