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

 

Colegas - exportou um arquivo de cache de otimização para a nuvem, como posso usá-lo em outro computador para selecionar uma variante para licitação?


Resposta:

Se alguém precisar dele - aqui.


Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Vitaly Muzichenko #:

O importante em tudo isso é um algoritmo de arrasto que funcione corretamente, ou seja, os próprios ofícios.

O desenho está em segundo plano, é informativo e não tem nada a ver com a rentabilidade do sistema.

Portanto, se houver uma posição mas o gráfico estiver fechado e não fechar por si só, não há necessidade de abrir nada, o algoritmo de arrasto funcionará e as paradas serão movidas para lá. É muito pior, quando o gráfico é fechado, mas o programa o abriu novamente literalmente para o desenho do gráfico - isto já é ruim.

Também podemos fazer isso dessa forma. Mas neste caso, se houver um gráfico aberto com base no evento, ele pode ser desenhado. Em geral, podemos redesenhar os níveis sempre para evitar confusão. Temos todos os dados para isso. O nível de acionamento para a rede de arrasto, o passo da rede de arrasto, o preço da posição. O número de níveis e o número de níveis acionados para a posição são facilmente calculados.

 
Valeriy Yastremskiy #:

Isto também é possível. Mas então desenhamos se houver um gráfico aberto para o evento. Em geral, os níveis podem ser redesenhados a cada vez para evitar confusão. Temos todos os dados para isso. Nível do gatilho para a rede de arrasto, degrau da rede de arrasto, preço da posição. O número de níveis e o número de níveis acionados para uma posição são facilmente calculados.

Eu diria que, se houver uma posição, devemos traçar com antecedência níveis que desencadeiem uma rede de arrasto. Se surgir uma posição adicional, redesenhar as linhas para os novos níveis também para frente.

Não vejo a utilidade de mudar a cor após a passagem/modificação. Após as posições de fechamento, todas as linhas podem ser apagadas.

No exemplo, mostrou como deve ser

Os objetos onde as posições serão abertas são desenhados aqui, é apenas informativo, isso é tudo


---

P.S. No momento eu não posso fazer as contas, infelizmente

 

Pergunta sobre o OnTimer

Se o evento do temporizador ocorrer antes da execução do programa, ele irá esperar (o programa irá pular o evento do temporizador), ou o programa irá abortar, e começar a trabalhar em um novo evento do temporizador? Será que vai ficar pendurado em um loop infinito, ou será que vai voltar a cada segundo?

int OnInit()
{
 EventSetTimer(1);
      
    }
//---
  return(INIT_SUCCEEDED);
}

void OnTimer()
{
  
  int i=0;
  while(i<1) {
   
  }
}

Não há indicação direta nos documentos sobre a prioridade do evento timer e o curso do programa, apenas sobre a ordem dos eventos.

Ou talvez eu não entenda corretamente. O evento temporizador no qual a ação começou conta como estando na fila?

Docas:

EventSetTimer

Não é possível iniciar mais de um evento timer para cada programa. Cada programa de mql4 e cada gráfico tem sua própria fila de eventos, onde todos os eventos recém-chegados são armazenados. Se já houver um evento Temporizador na fila ou se este evento estiver no estado de processamento, um novo evento Temporizador não é colocado na fila de programas mql4.


 
Valeriy Yastremskiy execução do programa, ele irá esperar (o programa irá pular o evento do temporizador), ou o programa irá abortar, e começar a trabalhar em um novo evento do temporizador? Será que vai ficar pendurado em um loop infinito, ou será que vai voltar a cada segundo?

Não há indicação direta nos documentos sobre a prioridade do evento timer e o curso do programa, apenas sobre a ordem dos eventos.

Ou talvez eu não entenda corretamente. O evento temporizador no qual a ação começou conta como estando na fila?

Docas:

EventSetTimer

Não é possível iniciar mais de um evento timer para cada programa. Cada programa de mql4 e cada gráfico tem sua própria fila de eventos, onde todos os eventos recém-chegados são armazenados. Se já houver um evento na fila do Timer, ou se este evento estiver no estado de processamento, um novo evento Timer não é colocado na fila do programa mql4.


Os eventos NÃO são HORÁRIOS. Eles são tratados no OnXXX um a um, sem interromper nenhuma das funções.

Até que o OnInit termine, nenhum outro manipulador OnTimer OnTick será chamado pelo terminal. (A menos que seja você mesmo a puxá-lo como função).

 
Maxim Kuznetsov #:

Os eventos NÃO são interrupções. Eles são processados em OnXXX um a um, sem interromper as funções de texto.

Até o OnInit terminar, nenhum outro manipulador OnTimer OnTick será chamado pelo terminal. (A menos que seja você mesmo a puxá-lo como função).

Obrigado)

 
Vitaly Muzichenko #:

O importante em tudo isso é um algoritmo de arrasto que funcione corretamente, ou seja, os próprios ofícios.

O desenho está em segundo plano, é informativo e não tem nada a ver com a rentabilidade do sistema.

Portanto, se houver uma posição mas o gráfico estiver fechado e não fechar por si só, não há necessidade de abrir nada, o algoritmo de arrasto funcionará e as paradas serão movidas para lá. É muito pior, quando um gráfico é fechado, mas o programa o abriu novamente literalmente para desenhar um gráfico - isso é ruim.

Meu Deus - por que você foi enviado para a lavagem de carros? Você escreveu em um lugar errado e variáveis erradas: z ou v...?

 
Olá! se alguém não for muito difícil, escreva ou ajude-me a escrever uma função para uma EA MT4. A idéia é que se eu mudar manualmente uma posição aberta ou uma ordem de mercado, o assessor enviaria uma mensagem por e-mail. Por exemplo: mudei a ordem de stop loss de uma ordem de limite aberta, a EA escreverá um e-mail dizendo que a ordem de stop loss mudou de mais ou menos para mais ou menos.
 
Vitaly Muzichenko #:


Parece que deve funcionar. Ainda não foi testado.

Lógica de desenho. Eu não controlo os níveis, eu desenho novamente e abaixo do preço, se na Compra eu desenho em cinza, acima em azul, na Venda, se acima do nível de preço, é cinza, abaixo em vermelho.

Sim, eu esqueci de definir os níveis de remoção))))

Arquivos anexados:
 
Valeriy Yastremskiy #:

Parece que deve funcionar. Ainda não foi testado.

Lógica de desenho. Eu não controlo os níveis, eu desenho novamente e abaixo do preço, se na Compra eu desenho em cinza, acima em azul, na Venda, se acima do nível de preço, é cinza, abaixo em vermelho.

Sim, eu esqueci de definir os níveis de remoção))))

ALLO! ? :-) VOCÊ ESTÁ ME ENGANANDO????????????????
Razão: