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

 
Boris:

Então... Leia a documentação (novamente).

Pergunta. O que está errado? Não conta nem com o CopyTicksRange nem com o CopyTicksRange.

Você tem que ler cada vez mais e mais... Leia até ler o que eu copiei da documentação para você pessoalmente e o marquei em fonte vermelha em negrito.

Que chatice... as citações não se agarram... Vou ter que duplicá-las...

de_msc

[em] A data a partir da qual os carrapatos são solicitados. Especificado em milissegundos a partir de 01.01.1970. Se o parâmetrofrom_msc não for especificado, então os carrapatos são devolvidos desde o início da história. Os bilhetes com tempo >= de_msc são devolvidos.

to_msc

[em] Data, na qual os carrapatos são solicitados. Especificado em milissegundos a partir de 01.01.1970. Os bilhetes com tempo <= a_msc são devolvidos. Se o parâmetroto_msc não for especificado, todos os ticks até o final do histórico são dados .


 
Boris:

Então... Leia a documentação (novamente).

Pergunta. O que está errado? Não conta nem através do CopyTicksRange nem através do CopyTicksRange.

A pergunta que eu tenho, por exemplo, não sei bem µl5, é a palavra Data, não Hora. E, portanto, uma pergunta, e dentro de uma data, qual será a idade?

E depois de uma dica. Como obter o tempo em milissegundos?

 
Valeriy Yastremskiy:

A pergunta que tenho é, por exemplo, não sei muito bem µl5, é a palavra Data, não Hora. E, portanto, a questão é, dentro da mesma data, qual é a idade?

E depois de uma dica. Como obter o tempo em milissegundos?

1 segundo = 1000 milissegundos. E "Data" implica "Data e Hora", porque o tipo é data e não apenas data.

 
Alexey Viktorov:

Leia mais e mais e mais... Leia até ler o que eu copiei pessoalmente da documentação para você e realcei em negrito vermelho.

Que pena... as aspas não colam... Terei que duplicá-las...


Oh, cara... Sim, bem... Está funcionando!

 

PERGUNTA no mql4:

Há uma restrição de propagação no código da EA, a EA é definida para vários gráficos.

Não é muito correto inserir o spread médio de um par nos parâmetros de entrada, e isso varia de uma mesa de negociação para outra.

O spread médio é de 5pp, mas há momentos em que ele aumenta para 12pp por alguns minutos e não é um capotamento.

Como posso automatizar isso para calcular o spread médio e não para abrir uma posição sobre um spread estendido?

   MqlRates rates[]; 
   int copied=CopyRates(NULL,PERIOD_M1,0,100,rates); 
   if(copied>0) 
   for(int e = ArraySize(rates)-1; e >=0; e--) {
     Print(e,"=",rates[e].spread); // всегда "0"
   }
 

Olá, é possível e como criar um Expert Advisor baseado no algoritmo de abrir e fechar um negócio sem usar nenhum indicador?

Por exemplo, pegue duas linhas, uma linha de tendência está para cima e a segunda também para baixo, coloque-as uma em cima da outra, há um ponto de intersecção entre as duas linhas, vamos supor que seja a 15-30 no tempo, então como fazer a ordem abrir automaticamente ao mesmo tempo para começar em qualquer direção, como fazer o algoritmo vai encontrar esses pontos eabrir uma posição? Gostaria de obter esclarecimentos e suas opiniões.

Podemos criar um EA baseado em tal T3?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Vitaly Muzichenko:

PERGUNTA no mql4:

Há uma restrição de propagação no código da EA, a EA é definida para vários gráficos.

Não é muito correto inserir o spread médio de um par nos parâmetros de entrada, e isso varia de uma mesa de negociação para outra.

O spread médio é de 5pp, mas há momentos em que ele aumenta para 12pp por alguns minutos e não é um capotamento.

Como automatizar isso para calcular o spread médio e não para abrir uma posição sobre um spread estendido?

Uma boa idéia é observar a propagação em cada carrapato. A julgar pela retórica e pelos problemas que os comerciantes têm com seu acentuado aumento para afrouxar. O problema, como eu o entendo, não é uma grande dispersão, esse é o menor dos problemas, mas um aumento acentuado de dispersão grande e curta.

Eu olharia para aquele especificado nas propriedades do símbolo, tomá-lo como uma média e aumentá-lo razoavelmente antes de abrir os pedidos. E também olharíamos para o spread para fechá-lo ou modificá-lo. Ou, eu monitoraria o spread médio nos últimos 3 a 10 ticks.

 
Valeriy Yastremskiy:

Uma boa idéia é observar a propagação em cada carrapato. A julgar pela retórica e pelos problemas dos comerciantes com seu acentuado aumento para soltos. O problema, como eu o entendo, não é com uma grande dispersão, que é o menor dos problemas, mas com uma dispersão grande e curta e crescente.

Eu olharia para aquele especificado nas propriedades do símbolo, tomá-lo como uma média e aumentá-lo razoavelmente antes de abrir os pedidos. E também olharíamos para o spread para fechá-lo ou modificá-lo. Ou, o spread nos últimos 3 a 10 ticks seria monitorado em média.

Ontem cerca de 1 minuto (e não são 10 ticks) houve um spread de ~14 pontos com um spread normal médio de 4 pontos. Assim, no momento da expansão estendida, o robô entrou para comprar.

10 carrapatos não é claramente suficiente

 
Vitaly Muzichenko:

Ontem, durante cerca de 1 minuto (que não é 10 ticks), houve um spread de ~14pp com um spread normal médio de 4pp. Assim, no momento da expansão estendida, o robô entrou para comprar.

10 carrapatos não é obviamente suficiente.

A tarefa aqui é consertar o início e o fim das mudanças. E a fixação deve ser feita em um curto intervalo de tempo. Ou seja, o valor médio de spread deve ser fixado de um segundo a 10 segundos por uma janela flutuante. Você deve observar quantos carrapatos por segundo em média ou observar os carrapatos por 10 segundos e em média. Eu prefiro a primeira opção.

 
Valeriy Yastremskiy:

A tarefa aqui é capturar o início e o fim das mudanças. e as emissões de mudanças únicas. e a captura deve ser em um curto período de tempo. O valor médio do spread deve ser fixado de um segundo a 10 segundos por uma janela flutuante. Você deve observar quantos carrapatos por segundo em média ou observar os carrapatos por 10 segundos e em média. A primeira variante está mais próxima de mim.

Eu resolvi isso dessa maneira:

void OnTick(void)
{
 int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
     // Здесь код отправки
   }
}

//+------------------------------------------------------------------+
bool CheckSpr(int _sp)
{
  static int ts=0, res=0;
  static long tc=0;
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

O problema é que ele registrará uma enorme expansão no rollover e trabalhará com ele.

Acho que esta solução é ineficaz, precisamos limitar de alguma forma a gravação de capotagem sem aplicar um limite de tempo.

Razão: