Perguntas de um "boneco" - página 138

 
joo:
Se não for um guião, então toda a lógica deve ser executada/calocada dentro/de OnChartEvent()?

Pode fazê-lo em qualquer lugar. Há também um temporizador.

Se precisar de lógica cíclica, pode colocá-la num temporizador.

Se a lógica é orientada por eventos, então, em chartevent.

 
sergeev:

Pode fazê-lo em qualquer lugar. Há também um temporizador.

Se quiser lógica cíclica, pode colocá-la num temporizador.

Se a lógica é orientada para o evento, então em chartevent.

Esta é a lógica:

1. Início do programa (atirado sobre o chartevent).

2. a partir da caixa de diálogo (listagem de ficheiros) obter o nome do ficheiro.

3. Abrimos o ficheiro por nome de ficheiro e recebemos e processamos os dados.

4. Exigiu o programa.

É tudo o que há a fazer. Como este caso pode ser organizado, por favor mostrar pelo menos esquematicamente.

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
joo:

Tal lógica:

1. Iniciar o programa (atirado sobre a tabela).

OnInit. disco digitalizado, ficheiros encontrados, janela criada com lista (Controlos).

2. A partir da caixa de diálogo (listagem de ficheiros) obteve o nome do ficheiro.

OnChartEvent. Processar os cliques do rato; sabemos que linha da lista foi clicada, respectivamente, conhecemos o ficheiro.

3. Abrir ficheiro por nome de ficheiro, obter dados, processar.

OnChartEvent. Processar cliques do rato sobre o botão "Go". Recebeu o nome de um ficheiro da lista. Além disso, o processamento de dados deste ficheiro é puramente seu.

4. Sair do programa.

ExpertRemove()

 
sergeev:
...

Bem, isso esclarece as coisas agora, obrigado.

Mas, só para o experimentar, fiz um consultor especializado. Imprime mesmo quando nada acontece na carta - e não deve acontecer:

#include <Controls\ControlsDialog.mqh>
CControlsDialog ExtDialog;

int OnInit()
{
//--- create application dialog
  if(!ExtDialog.Create(0,"Controls",0,20,20,360,324))
    return(-1);
//--- run application
  ExtDialog.Run();
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy dialog
  ExtDialog.Destroy();
}
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
{
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  Print("dsfsdfsdfsdf");
}
//+------------------------------------------------------------------+
 
Yedelkin:

Bem, qualquer método de classe é apenas um simples código. Tente analisar este código aqui:

Obrigado! Está a funcionar.
 
joo:

Bem, isso esclarece as coisas agora, obrigado.

Mas, só para o experimentar, fiz um consultor especializado. Imprime mesmo quando nada acontece na carta - e não deve acontecer:

Não, não, imprime porque está a passar o rato por cima do gráfico.

 
sergeev:

Não, há uma impressão em curso porque se está a mover o rato sobre o gráfico.

De facto, pequei - movi o rato por cima do gráfico, por isso a impressão está lá.
 

Boa tarde.

Pergunta por curiosidade. Aqui está o código:

class cl2;

class cl1
{
public:
        int q;
        void fn2(cl2 &t){t.i = 87;}
};


class cl2
{
public:
        int i;
        void fn(cl1 &w){w.q = 9;}
};

A ideia é a seguinte:

  • Há duas classes (#1 e #2).
  • A classe #1 está a bisbilhotar na classe #2
  • A classe #2 está a bisbilhotar na classe #1.

Compila em MQL sem erros, não compila em VS (diz que não posso usar classes indefinidas). Porquê?

 
220Volt:

Compila em MQL sem erros, não compila em VS (diz que não se pode usar classe indefinida). Porquê?

Patamushta mql5 é melhor!

;)

 
MetaDriver:

Porque o mql5 é melhor!

;)

Sim, talvez eu devesse dar um sinal de mais ))