Desejos para MQL5 - página 99

 
Henry_White >> :

O que eu gostaria de ver em futuros lançamentos:

  1. Capacidade de executar seus procedimentos fora do conteúdo do manipulador de carrapatos (para MT4 isto é início()) (por exemplo, em uma pista separada, para cálculo de estatísticas, otimização, etc.),
  2. As funções mais simples para o manuseio do mouse. Por exemplo, no evento "OnClick" é possível obter coordenadas de ponteiro na dimensão MT (em X - índice de barras, em Y - coordenada y da janela atual.

1. O que o impede agora?

2. Na MQL5, as EAs serão capazes de lidar com eventos de janela (EMNIP).

 
TheXpert >> :

1. O que está no caminho neste momento?

Bem, se você sabe como, eu ficaria muito grato se você pudesse compartilhar esta habilidade/conhecimento.

 
TheXpert >> :

2. Na MQL5, os Conselheiros Especialistas poderão processar os eventos da janela (EMMNIP).

O manipulador de eventos ChartEvent só estará disponível em EAs, a propósito... Uma discriminação bastante estranha )))) Penso que a necessidade é a mesma nos indicadores (os Conselheiros Especialistas não precisam disso).

 
Henry_White >> :

Bem, se você sabe como, eu ficaria muito grato se você pudesse compartilhar essa habilidade/conhecimento.

Não como dois dedos no asfalto, mas você pode. Conectar dll, ligar cálculos em uma nova linha - WinAPI ajudará aqui, terminação por timer ou callback.

Henry_White >> :

O manipulador de eventos ChartEvent estará disponível apenas em Expert Advisors, a propósito... Uma discriminação bastante estranha ))

Eu também não gosto disso. Mas agora os índices não estão ligados ao gráfico.

 
TheXpert >> :

Não como dois dedos no asfalto, mas é possível. Conectar dll, fazer cálculos em uma nova linha - WinAPI ajudará aqui, terminando por timer ou callback.

Eu estava pensando na variante DLL, mas não está muito claro para mim como obter acesso CORRETO às séries temporais, mais os valores de mais de 10 indicadores diferentes, e tudo isso a uma profundidade decente ao longo da história. E se considerarmos que o tempo de cálculo leva mais de um minuto (eu trabalho com minutos), então não está absolutamente claro, onde os ponteiros DLL se referirão após a adição de uma nova barra no terminal do cliente. E também precisamos retornar algumas dezenas de parâmetros calculados e adicionar vários gráficos às séries de preços. Não é trivial, no fim de contas...

Tendo analisado tudo isso e estimado quanto tempo eu precisaria para experimentos e várias verificações e depuração, escrevi um tempo de processamento em MQL... Funciona, mas... Não é agradável. Mas minha alma o exige! ))) E já estamos no século XXI... E você quer viver até a idade)).

 

Proponho esclarecer (definir) o conceito de "ponto".

Um pip é o 5º dígito significativo: 1,2345.

Se uma cotação é representada por outro dígito (1,23456) e spread = 0,00018, então o spread em pips é 1,8 p, e não 18 p.

Isto introduzirá uniformidade na terminologia e evitará confusão.

 
SK. >> :

Proponho esclarecer (definir) o conceito de "ponto".

Um pip é o 5º dígito significativo: 1,2345.

Se uma cotação é representada por outro dígito (1,23456) e spread = 0,00018, então o spread em pips é 1,8 p, e não 18 p.

Isso introduzirá uniformidade na terminologia e evitará confusão.

Você está absolutamente certo - corretores escrevem "spread 1.8" em seus sites, não 18 - eles sabem exatamente o que fazem :)

 

Функция OnCalculate() вызывается только в пользовательских индикаторах
при необходимости произвести расчет значений индикатора по событию Calculate.

Ainda não tenho idéia de como posso fazer um indicador com objetos e sem saber o número de barras trocadas

 

Vejo que existe uma função printf

e como seria ótimo conseguir outro sprintf



 
Roffild >> :

Ainda não tenho idéia de como posso fazer um indicador com objetos e sem saber o número de barras modificadas

A ajuda da MQL5 declara:

int OnCalculate (const int rates_total, // o tamanho das séries de tempos de entrada
const int prev_calculated, // barras processadas na chamada anterior
const datetime&time[], // hora
const double& open[], // Aberto
const double& high[], // High
const double& low[], // baixo
const double& close[], // Fechar
const long& tick_volume[], // Tick Volume
const long& volume[], // Volume real
const int& spread[] // Spread
);

A relação entre o valor retornado pela OnCalculate() e o segundo parâmetro de entrada pré-calculado deve ser notada. O parâmetro pré_calculado ao chamar a função contém um valorretornado pela OnCalculate() na chamada anterior. Isto permite algoritmos econômicos para o cálculo do indicador personalizado a fim de evitar cálculos repetidos para aquelas barras que não mudaram desde a chamada anterior desta função.

Para isso, geralmente é suficiente retornar o valor do parâmetro rate_total, que contém o número de barras na chamada de função atual. Se desde a última chamada do OnCalculate() os dados de preço mudaram (um histórico mais profundo foi carregado ou o histórico foi preenchido), o valor do parâmetro de entrada pré_calculado será ajustado a zero pelo terminal.

Razão: