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

 
Alexey Navoykov:
Por favor, corrija o código, o número 5 em vez do DealsNum na primeira função. E o cheque para INT_MAX não faz sentido.

Obrigado pelo ajuste. Verificação de INT_MAX - se sem os parâmetros de entrada, o Expert Advisor não irá diminuir a velocidade, e o Wasteful HistorySelect não será chamado.

 
As ordens na tabela do histórico são ordenadas por tempo de colocação (não execução/cancelamento). Leve isto em consideração quando chamar o HistorySelect.
 
fxsaber:
As ordens na tabela do histórico são ordenadas por tempo de colocação (não execução/cancelamento). Leve isto em consideração quando chamar o HistorySelect.

Seria bom acrescentar a isto como são os negócios e as posições - para ter uma imagem completa.

 
Artyom Trishkin:

Seria bom acrescentar a situação com acordos e posições para obter um quadro completo.

Não há como com posições - elas não estão na História. E com negócios sem ambiguidades - só há uma vez DEAL_TIME.

 
fxsaber:

Não há como lidar com posições - elas não estão na História. E com negócios sem ambiguidades - só há uma vez DEAL_TIME.

Sim, mas as posições estão na lista actual.

 
Artyom Trishkin:

Sim, mas as posições estão na lista actual.

Por favor, esclareça, eu não entendo nada.

 
fxsaber:

Por favor, esclareça, eu não entendo nada.

PositionsTotal() em uma conta de hedge irá devolver o quê? O número de posições. Eles estão em algum tipo de lista. E como eles são classificados? É disso que estou a falar.

 
Artyom Trishkin:

O que é que PositionsTotal() retornará na conta de cobertura? O número de posições. Eles estão em algum tipo de lista. E como eles são classificados? É disto que estou a falar.

Entendido. Não esclareci este ponto por mim mesmo, pois não encontrei uma situação em que isso possa ser necessário.

 

Na primeira passagem de uma pilha de trabalhos de Agente (por exemplo, em uma única corrida de teste) o tempo entre o início da EA e o primeiro evento NewTick pode levar vários segundos. Nas passagens subsequentes da pilha, desta vez é zero.

O último passe de uma pilha de trabalho leva até 10% mais tempo para o Agente correr do que os passes anteriores.

 
// Перемещение папки. Описание такое же, как у FileMove - https://www.mql5.com/ru/docs/files/filemove
bool FolderMove( const string FolderNameSrc, const string FolderNameDst, const int Common_Flag = 0, const int Mode_Flags = FILE_REWRITE )
{
  if (FolderNameSrc == FolderNameDst)
    return(false);

  string FileName;
  const long handle = ::FileFindFirst(FolderNameSrc + "\\*", FileName, Common_Flag);

  bool Res = false;

  if (handle != INVALID_HANDLE)
  {
    do
    {
      const string TmpFileNameSrc = FolderNameSrc + "\\" + FileName;
      const string TmpFileNameDst = FolderNameDst + "\\" + FileName;

      if (::FileIsExist(TmpFileNameSrc, Common_Flag))
        Res = ::FileMove(TmpFileNameSrc, Common_Flag, TmpFileNameDst, Mode_Flags);
      else
      {
        const string TmpFileNameSrc2 = ::StringSubstr(TmpFileNameSrc, 0, ::StringLen(TmpFileNameSrc) - 1);
        const string TmpFileNameDst2 = ::StringSubstr(TmpFileNameDst, 0, ::StringLen(TmpFileNameDst) - 1);

        if (!FolderMove(TmpFileNameSrc2, TmpFileNameDst2, Common_Flag, Mode_Flags))
          Res = ::FolderCreate(TmpFileNameDst2, Mode_Flags & FILE_COMMON);
      }
    }
    while (::FileFindNext(handle, FileName));

    ::FileFindClose(handle);
  }

  return(::FolderDelete(FolderNameSrc, Common_Flag) && Res);
}
Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5