Características da linguagem mql5, subtilezas e técnicas - página 192

 
traveller00:

A partir de estatísticas: cerca de 200-300 transacções por dia. Mesmo com verificações normais, mas sem quaisquer verificações realmente complicadas, em média 2-3 vezes por semana, apanhei uma abertura de lote duplo. Calcular a probabilidade e avaliar se precisa ou está pronto a aceitar tal probabilidade. Pessoalmente, fiz os meus cheques ao máximo.

Obrigado. Qual é o seu ping?
 
Vasiliy_Saharov:
Obrigado. E qual é o seu ping?

Salta na faixa dos 55-60ms. Mas não se trata do ping. Como eu disse, é mesmo com verificações normais. Aqui é onde a espera já era, apenas adequada, como esperar 1 segundo. Mas era aí que voava, mesmo para alcances que excedem o ping por ordens de magnitude.

P.S. Teste interessante para encomendas fictícias no assunto https://www.mql5.com/ru/forum/1111/page2220#comment_7834585
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.06.20
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Vasiliy_Saharov:
Se tiver um algoritmo para fazer 0,1 lotes, então há uma probabilidade de fazer 0,1 duas vezes, e como penso que esta probabilidade tende a zero, e três vezes, penso que é impossível. Muito menos 20 vezes. Afinal de contas, estamos a falar de coisas de aplicação. Como regra geral, o servidor responde provavelmente no limite de 10minsec (será isso correcto? Não tenho a certeza). Quão elevada é, na sua opinião, a probabilidade de agarrar uma segunda transacção? É você mesmo que faz este controlo? Acontece que o servidor pode demorar muito tempo a responder?

A resposta do servidor com o resultado da transacção pode ser atrasada por razões muito diferentes, e não se pode contar com 10ms em qualquer caso (mesmo que o ping seja de 1ms)

É claro que faço esta verificação. Mais precisamente, utilizo o MT4Orders pronto que leva isto (e muitas outras coisas) em conta.

 
const int a=2;

void OnStart()
{
  int b[a];  //'[' - invalid index value
}

Será este comportamento diferente do C++ uma característica ou um bug?

 
Igor Makanu:

no indicador não vai esperar pelo resultado de CopyXXX

como opção no temporizador no indicador para processar CopyXXX e chamar este indicador da EA

Funcionou, obrigado pela ideia!

 

Como a mudança da hora de Verão/Inverno pode quebrar o MT5-Tester.

A forma mais fácil de explicar o problema é com um exemplo. Há um símbolo com estas restrições nas sessões de citação.

Contudo, existem preços no histórico de preços depois das 22:15 às 23:15. Estes são preços válidos apesar de saírem da sessão de cotação.


O facto é que antes da mudança para a hora de Inverno, a sessão era: 03:00 - 23:15. A explicação é fácil. O servidor de negociação muda o tempo, mas o símbolo de cotação não muda. Por exemplo, o índice. Devido a isso, o tempo das sessões sobre o símbolo correspondente muda no servidor comercial.


Esta circunstância leva a consequências muito desagradáveis no MT5-Tester. Não pode negociar a preços válidos entre as 22:15 e 23:15 e obter uma rejeição sob a forma de [Mercado fechado]. Isto é, o comércio estava realmente a decorrer ali, mas o Testador não permite que o faça.


De facto, o Testador distorce o comércio ao dar conscientemente resultados falsos. É bastante problemático notar esta peculiaridade. Para corrigir a situação, é necessário que você mesmo corrija o tempo da sessão.


Esqueça este problema (e alguns outros), pode mudar para um símbolo personalizado, que automaticamente calcula/escreve os tempos de sessão apropriados.


No ecrã superior das definições dos símbolos, há uma linha inferior "Use time limit". Talvez quando entrar em vigor, ainda se possa contornar este problema através dele.


Por agora a regra é válida - os símbolos personalizados podem aumentar significativamente a probabilidade de os resultados do Testador MT5 estarem correctos.


Lembre-se, quando fizer pedidos para o histórico de preços (CopyRates/CopyTicks) no terminal, não se concentre em sessões de cotação.

 
fxsaber:

Como a mudança da hora de Verão/Inverno pode quebrar o MT5-Tester.

Obrigado por partilhar observações interessantes - também levantei a questão do tempo antes, mas notei uma marcação incorrecta no futuro, quando o preço nas barras é inferior a 0.

Esta questão surge, existem situações em que é geralmente correcto proibir o comércio no testador, ou pelo menos, quando existe uma cotação de um instrumento com uma proibição de comércio na realidade a certas horas? Compreendo que existem índices diferentes, e não é claro como contar com o lucro sobre eles, mas neste caso pode contá-los à força em pontos e apenas escrever uma mensagem no registo de que o instrumento não é comercializado, mas pode verificar o TS.

 
Aleksey Vyazmikin:

há citações para um instrumento com uma proibição de comércio na realidade durante certas horas?

O primeiro minuto após a meia-noite é banido. Quando pode ser importante, coloco um cheque.

// true - торговые сессии совпадают с котировочными, false - иначе.
bool IsSessionsQuoteEqualTrade( const string Symb )
{
  bool Res = true;
  
  for (int i = 0; (i < 7) && Res; i++)
  {
    datetime FromQuote;
    datetime ToQuote;

    datetime FromTrade;
    datetime ToTrade;
    
    if (SymbolInfoSessionQuote(Symb, (ENUM_DAY_OF_WEEK)i, 0, FromQuote, ToQuote) && (FromQuote != ToQuote))
      Res = SymbolInfoSessionTrade(Symb, (ENUM_DAY_OF_WEEK)i, 0, FromTrade, ToTrade) &&
            (FromQuote == FromTrade) && (ToQuote == ToTrade);
  }
  
  return(Res);
}

Quando há várias sessões num dia, eu não o verifico.

 
fxsaber:

O primeiro minuto após a meia-noite está fora dos limites. Quando pode ser importante, eu verifico.

Não verifico se há várias sessões num dia.

Esta é uma situação artificial criada pelas empresas de corretagem. Suponhamos que existem negócios num leilão fechado, mas que são cotados.

 
Aleksey Vyazmikin:

Esta é uma situação artificial criada pela CD, mas será que existem exemplos reais? Digamos que há negócios num leilão fechado e, no entanto, são cotados.

Absolutamente todas as regras são artificiais.