Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 646

 
Tra-der:
Existem dois terminais MT5. Problema: posso escrever guiões para permitir apenas negócios longos num terminal e apenas negócios curtos no outro?
#define ORDER_TYPE_BUY ORDER_TYPE_BUY_STOP   // поставить в самом начале советника, если нужно отказаться от BUY-сделок
#define ORDER_TYPE_SELL ORDER_TYPE_SELL_STOP // поставить в самом начале советника, если нужно отказаться от SELL-сделок
 
Tra-der:
Existem dois terminais MT5. Tarefa: É possível escrever guiões para permitir apenas negócios longos num terminal e apenas negócios curtos no outro?

Basta introduzir um parâmetro de entrada na sua EA e, dependendo do valor que lhe for atribuído quando começar, só comprará ou só venderá:

input bool Long=true;            // allow only "Long"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
...
void OnTick()
  {
   if(!Long)
      trade.Sell(0.01);
   if(Long)
      trade.Buy(0.01);
  }
 
Artyom Trishkin:

A fim de saber se é um novo topo ou fundo, é preciso lembrar o tempo do último topo/tampo que encontrou, e compará-lo com o que encontrou até agora.

Obrigado, é claro com o tampão.

A fim de recordar o tempo do último vértice encontrado, é preciso conhecê-lo de alguma forma.

Como fazê-lo, como saber a hora do último vértice encontrado?

 
mila.com:

Obrigado, o tampão é claro.

A fim de recordar o tempo do último vértice encontrado, é preciso conhecê-lo de alguma forma.

Como fazer isto, como saber a hora do último vértice encontrado?

Declara-se uma variável estática para armazenar o tempo do extremo anterior do ziguezague e inicializá-lo com zero.

2. Encontre um vértice e se o seu tempo não for igual ao tempo na variável estática, considere que encontrou o extremo necessário e memorize o novo tempo nesta variável.

3. GoTo(2);

 

Camaradas programadores!

Recomendar uma forma de descobrir se a propagação aumentou.

O problema é o seguinte: durante a transição para uma nova empresa de corretagem de um dia, a sua actividade de corretagem alarga-se, e por vezes é uma loucura para alguns pares - excede em 3-5 vezes o valor normal. Os spreads de poupança de luz diurna são diferentes nas empresas de corretagem com mudança de horário de 23 para 59 e de 20 para 59 e assim por diante.

Para alguns tipos, a propagação não muda muito, por isso não podemos cortar o robô "Trabalhar a tempo" porque se a propagação não mudar, não teremos de proibir o comércio.

A questão principal é como detectar que a propagação é demasiado grande e, portanto, proibir o robô de abrir uma posição. Vejo uma variante de armazenamento de tamanhos de spread num ficheiro para cada nova barra para as últimas 5-7 barras, depois adicionando tudo e dividindo pelo número, obtendo assim o spread médio e multiplicando por 1,2 - 1,4 (margem), mas não me parece interessante guardar e multiplicar ficheiros e não tenho a certeza de que seja a solução correcta para o cálculo do tamanho médio do spread. Se introduzir manualmente o spread máximo permitido nas definições, é muito trivial e desinteressante em termos de operação de bot.

Aconselha-se a solução óptima para a questão, que não tenha medo de reiniciar o terminal, e o encerramento de emergência em caso de corte de energia. Além disso, de preferência uma solução que minimize a carga no programa, para que não volte a calcular em cada carrapato.

Obrigado!

 
Vitaly Muzichenko:

Camaradas programadores!

Recomendar uma forma de descobrir se a propagação aumentou.

O problema é o seguinte: durante a transição para uma nova empresa de corretagem de um dia, a sua actividade de corretagem alarga-se, e por vezes é uma loucura para alguns pares - excede em 3-5 vezes o valor normal. Os spreads de poupança de luz diurna são diferentes nas empresas de corretagem com mudança de horário de 23 para 59 e de 20 para 59 e assim por diante.

Para alguns tipos, a propagação não muda muito, por isso não podemos cortar o robô "Trabalhar a tempo" porque se a propagação não mudar, não teremos de proibir o comércio.

A questão principal é como detectar que a propagação é demasiado grande e, portanto, proibir o robô de abrir uma posição. Vejo uma variante de armazenamento de tamanhos de spread num ficheiro para cada nova barra para as últimas 5-7 barras, depois adicionando tudo e dividindo pelo número e obtendo assim o spread médio e multiplicando por 1,2 - 1,4 (margem), mas não é interessante guardar e multiplicar ficheiros. Se eu introduzir manualmente o spread máximo permitido em configurações, é muito trivial e desinteressante em termos de operação de bot.

Por favor, aconselhe qual seria a melhor solução para esta questão. Obrigado!

Pode ser trivial, mas eu entro no limite manualmente. E se na véspera de Ano Novo para as últimas velas N o espalhamento for 3 vezes maior do que o habitual, e à noite será mesmo 3 vezes maior ? o sistema de análise considerá-lo-á como um espalhamento normal x3. Penso que se se negoceia com base no real, não é difícil para ele estimar manualmente o diferencial médio de trabalho e estabelecer o limiar. Embora a solução da sua pergunta também fosse interessante para mim)
 
Que tipo de lógica TC é essa tão dependente da propagação!
 
fxsaber:
Que tipo de lógico TS é este que depende tanto da propagação!

OK, vamos pôr as coisas desta forma. Aqui, por exemplo, o spread alarga-se nem sequer três vezes, mas mais, e se entrar no mercado com um spread de 20pp, enquanto o spread normal é de 4-6pp, então não é normal, e precisamos de cortar estes momentos.

 
Vitaly Muzichenko:

OK, vamos pôr as coisas desta forma. Por exemplo, o spread aqui nem sequer é três vezes maior, mas mais, e se entrar no mercado com um spread de 20pp, enquanto o spread normal é de 4-6pp, isto não é normal, e precisamos de cortar estes pontos.

Portanto, concentre-se na licitação se vai fazer VENDA. Que diferença faz o que se espalha? Ok, não vou interferir novamente.
 
Vitaly Muzichenko:

OK, vamos pôr as coisas desta forma. Por exemplo, o spread aqui nem sequer é três vezes maior, mas mais, e se entrar no mercado com um spread de 20pp, enquanto o spread normal é de 4-6pp, isto não é normal, e precisamos de cortar estes pontos.

A Global não vai ajudar?
Razão: