Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 776

 

Boa tarde, usuários do fórum.

Por favor, ajude-me a organizar corretamente o som no indicador. Os meios padrão do MT4 não funcionam bem.

Pelo que entendi, no momento em que o bar começa de diferentes gráficos, há um fluxo de sinais a serem reproduzidos no Windows. Eles não são colocados em fila mas são jogados por último e o resto se perde. Das duas funções PlaySound() adjacentes, apenas uma é reproduzida. Ele cria confusão nas mensagens, e a organização da mensagem causa o carregamento do terminal.

A solução parece estar usando waveOut API ou Winampa. Ele permite formar algum tipo de playlist no indicador e passar a reprodução para o dispositivo externo. Deve aliviar a carga no terminal. Em geral, o problema está na organização da fila.
Pesquisado no Google. Não encontrei nenhuma descrição detalhada para manequins, e não consigo descobrir eu mesmo.
Se alguém tiver resolvido este problema, ou conhecer uma descrição detalhada, por favor, avise. Acho que isto será de interesse para muitos.

 

Alguém pode ajudar!!!!

Você pode me dizer como fazer em MT4 para que no lado direito da tabela de preços, nos níveis de parada, o preço seja destacado da mesma forma que nas linhas ask e bid????

Arquivos anexados:
27c3ncf5hf2.jpg  355 kb
 
zctac:

Alguém pode ajudar!!!!

Você pode me dizer como fazer na MT4 para que no lado direito da tabela de preços, nos níveis de parada, o preço seja destacado da mesma forma que as linhas ask e bid????

Exibir sua linha horizontal (OBJ_HLINE) ao preço de pedido stop.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
//| Создает горизонтальную линию                                     |                 price=0,                         width=1,            //| Перемещение горизонтальной линии                                 | //| Удаляет горизонтальную линию                                     |...
 
Algus:

Boa tarde, usuários do fórum.

Por favor, ajude-me a organizar corretamente o som no indicador. Os meios padrão do MT4 não funcionam bem.

Pelo que entendi, no momento em que o bar começa de diferentes gráficos, há um fluxo de sinais a serem reproduzidos no Windows. Eles não são colocados em fila mas são jogados por último e o resto se perde. Das duas funções PlaySound() adjacentes, apenas uma é reproduzida. Ele cria confusão nas mensagens, e a organização da mensagem causa o carregamento do terminal.

A solução parece estar usando as ferramentas waveOut API ou Winampa. A formação de algo como uma playlist no indicador e a transmissão da reprodução para o dispositivo externo, o que deve aliviar a carga no terminal. Em geral, o problema está na organização da fila.
Pesquisado no Google. Não encontrei nenhuma descrição detalhada para manequins, e não consigo descobrir eu mesmo.
Se alguém tiver resolvido este problema, ou conhecer uma descrição detalhada, por favor, avise. Acho que isto será de interesse para muitos.

É mais fácil de fazer em Expert Advisor ou looping script, porque Sleep() funciona lá, ao contrário do indicador e entre as melodias tocadas este deslize pode ser ajustado para esperar até o final da música.

E chamar o indicador a partir de um roteiro ou de um EA.
 
Aleksey Vyazmikin:

É mais fácil fazer isso em um conselheiro auxiliar ou roteiro de looping, pois Sleep() funciona lá, ao contrário de um indicador, e você pode colocar este deslize entre as músicas tocadas para esperar até que a música termine.

O indicador pode ser chamado de um roteiro ou de um Expert Advisor.

Obrigado, vou pensar sobre isso, talvez como uma opção para sair.

Não é a duração que é o problema, é a fila de espera. As mensagens são curtas, mas muitas e, ao mesmo tempo, ao mesmo tempo. Mais uma vez, coloca uma tensão no terminal. Eu gostaria de dar isto ao sistema. Aí este problema parece ser resolvido por meios padrão do Windows.

Embora... talvez.

 
Algus:

Obrigado, vou pensar no assunto e ver se consigo resolvê-lo.

O problema não é o comprimento, é a fila de espera. As mensagens são curtas, mas muitas delas de uma só vez. Mais uma vez, coloca uma carga no terminal. Eu gostaria de dar isto ao sistema. Esta tarefa parece ser resolvida por meios padrão do Windows.

Embora. talvez.

Se muitos dos mesmos sinais vierem ao mesmo tempo, agrupe-os e jogue-os como um só. Ou coletá-las em matrizes por tipo de sinal e executá-las passo a passo :)

 

Em uma determinada data e hora, você tem que verificar o sinal. O que está errado?

input datetime Input1=D'23.02.2019 08:00:27';
input datetime Input2=D'08.03.2019 09:30:20';
input datetime Input3=D'01.04.2019 12:30:27';
______________________________________________

{
//---
 A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(A>B&&(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
           {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Artyom Trishkin:

Produzir sua linha horizontal (OBJ_HLINE) ao preço do pedido de parada.

Obrigado por sua resposta!
 
volyal:

Em uma determinada data e hora, você tem que verificar o sinal. O que está errado?

if( (A>B) && (TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3) )

Você tem condições "difíceis", portanto provavelmente não está atingindo o verdadeiro valor de toda a expressão.

Indicadores e Consultores Especialistas trabalham sobre o recebimento do tick, mas o tick pode ocorrer um segundo depois de sua condição

você deve tentar escrever tais condições em >=

SZY: Bem, em geral, quando escrevo condições lógicas complexas, geralmente tento não perder a lógica de seguir as condições, então posso reduzi-las a uma forma mais compacta, é mais fácil encontrar erros lógicos caso eles ocorram na fase de depuração

if(A>B)
{
   if(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
        {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
        }
}

mas isso é uma questão de gosto.

 
Igor Makanu:

Você tem condições "duras", então é muito provável que você não atinja o valor real da expressão inteira

Indicadores e especialistas trabalham sobre o recebimento do carrapato, mas o carrapato pode vir um segundo depois da sua condição

você deve tentar escrever tais condições em >=

SZY: Bem, em geral, quando escrevo condições lógicas complexas, geralmente tento não perder a lógica de seguir as condições, então posso reduzi-las a uma forma mais compacta, é mais fácil encontrar erros lógicos caso eles ocorram na fase de depuração

mas isso é uma questão de gosto.

Obrigado. Simplesmente>= não é possível, haverá um sinal constante após a primeira data, você precisa definir o intervalo de tempo. Como você define isso?