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

 
MakarFX:

Pergunta 1: Eu não entendo a pergunta(

O programa para obter o início do período selecionado ou o próprio período

 
Andrey Sokolov:

para obter o início do período selecionado ou o próprio período

Não, "OrderHistoryTotal Retorna o número de ordens fechadas e excluídas no histórico da conta corrente carregada no terminal do cliente".
 
Andrey Sokolov:

para obter o início do período selecionado ou o próprio período

Uma vez, não apenas o período dependia das configurações na guia "Histórico", mas também da ordem de classificação. A classificação parece ter sido feita imutável, mas o período parece ter permanecido dependente. Isto é, se mostrarmos a história de 01.12.2020 - 04.12.2020, então a OrderHistoryTotal() só retornará a quantidade de pedidos para este período. E se meu cérebro ainda não secou completamente, isso conta na hora de fechar. Não considera o tempo aberto. Suponha, por exemplo, que uma ordem foi aberta em 02.12.2020 e fechada (ainda não muito boas datas, mas ainda assim) em 05.12.2020, ela não entrará no período de 01.12.2020 a 04.12.2020.
 
Alexey Viktorov:
E se meus cérebros não estiverem completamente secos, isso conta na hora de fechar.

Sim, somente fechar ou apagar

 
Alexey Viktorov. MakarFX agradece por esclarecer que data é contada. Mas a pergunta não era exatamente sobre isso. Digamos que o período do "último mês" é selecionado, como podemos obter a data de início deste período (selecionado), mesmo que não houvesse negócios naquele dia?
 
Andrey Sokolov:
Alexey Viktorov. MakarFX agradece por esclarecer que data é contada. Mas a pergunta não era exatamente sobre isso. Suponha que eu tenha escolhido o período "mês passado", como posso obter a data de início deste período (selecionado), mesmo que eu não tenha negociado naquele dia?
Não há como.
 
Andrey Sokolov:
Alexey Viktorov. MakarFX, obrigado por esclarecer que data é levada em conta. Mas minha pergunta não era exatamente sobre isso. Vamos supor que selecionamos o período do "último mês", como podemos obter programticamente a data de início deste período (selecionado), mesmo que não tenhamos negociado naquele dia?

Não há data de início do período, há um mandado com a data mais próxima. Triste, para ser honesto, porque se não há ordens na história, não há datas de período. Na verdade, é isso mesmo.

 
Valeriy Yastremskiy:

Não há data de início do período, há um mandado com a data mais próxima. Triste, para ser honesto, porque se não há ordens na história, não há datas de período. Na verdade, é isso mesmo.

este ajuste não se destina a "ajustes diários" - configure o terminal uma vez e não o toque

em 99,9% dos sistemas de negociação, o período de 3 meses de história funcionará perfeitamente, provavelmente com exceção do TS, no qual dezenas de milhares de ordens por mês - o período de 1 mês deve ser estabelecido aqui

SZZ: Não notei nenhuma perda de desempenho durante um longo período de história (é claro que tudo pode ser quebrado)) ) - mas, no caso de um período de 1 mês, pode haver algumas surpresas


Então, se os desenvolvedores do MetaTrader nos permitiram "girar" o histórico do pedido - ruim!

)))

 
Igor Makanu:

este ajuste não se destina a "ajustes diários" - configure o terminal uma vez e não o toque

em 99,9% dos sistemas de negociação, o período de 3 meses de história funcionará perfeitamente, bem, provavelmente com exceção do TS, no qual várias dezenas de milhares de ordens por mês - aqui, muito provavelmente um período de 1 mês deve ser estabelecido

SZZ: Não notei nenhuma perda de desempenho durante um longo período de história (é claro que tudo pode ser quebrado)) ) - mas, no caso de um período de 1 mês, pode haver algumas surpresas


Então, se os desenvolvedores do MetaTrader nos permitiram "girar" o histórico do pedido - ruim!

)))

Minha abordagem é mais pessimista. Não podemos fazer análises sobre dados padrão como o histórico, porque eles têm de existir e temos de encontrá-los, e a análise eficiente requer sua própria coleta de dados )))). A história é apenas para a gestão operacional.

 

Você pode tentar puxar a data do formulário usando WinAPI. E encomende também um novo período.

Para quatro, eu não sei como é com cinco.


Encontrei isto, eu o fiz há alguns anos, assim:

#import "user32.dll"
   int GetForegroundWindow();
   int PostMessageA(int hWnd, int msg, int wParam, int lParam);
#import

//загружает всю историю закрытых ордеров
bool DownloadOrderHistory()
   {
   int eHandle=GetForegroundWindow();
   if(eHandle<=0) return(false);
   return(PostMessageA(eHandle,0x0111,0x8122,0)==1);
   }
GetForegroundWindow é melhor substituir....
Razão: