Boa noite;
Estou usando o código abaixo para ler o histórico de ordens enviadas e rejeitadas por falta de margem na plataforma rico, porém retorna o histórico zerado, sem conseguir ler os dados da ordem.
Alguém consegue me ajudar por favor?
O log é carregado na aba Histórico, o que aparentemente não consigo fazer é ler os dados das ordens.
Tente o seguinte:
void OnStart() { HistorySelect(0,TimeLocal());//filtra tempo uint total_ordens=HistoryOrdersTotal(); ulong last_order = 0; for(uint i = 0; i < total_ordens; i++) { last_order=HistoryOrderGetTicket(i); Alert(TimeToString(HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP)),"|",HistoryOrderGetString(last_order,ORDER_SYMBOL),"|",HistoryOrderGetString(last_order,ORDER_COMMENT),"|",last_order,"|",HistoryOrderGetInteger(last_order,ORDER_STATE)); //if(HistoryOrderSelect(last_order)) if(HistoryOrderGetInteger(last_order,ORDER_STATE)==ORDER_STATE_REJECTED) { if(StringSubstr(HistoryOrderGetString(last_order,ORDER_COMMENT),0,26)=="[MG21] Garantia disponível") { Alert(HistoryOrderGetString(last_order,ORDER_SYMBOL),"|",HistoryOrderGetString(last_order,ORDER_COMMENT),"|",last_order,"|",HistoryOrderGetInteger(last_order,ORDER_STATE)); } } } }
Fiz só uma pequena formatação e comentei a linha
if(HistoryOrderSelect(last_order))
De acordo com a documentação (para abrir, basta apertar F1 no MQL Editor), a função HistoryOrderSelect limpa a lista de ordens do histórico e copia somente uma ordem se a função for executada e completada. Se precisar fazer um loop sobre todas as ordens, basta chamar apenas a função HistoryOrderGetTicket. Portanto, removendo a função deve resolver. Não tenho como testar aqui porque não tenho ordens não executadas por falta de garantia, mas seguindo nessa linha pode ajudá-lo.
Tente o seguinte:
Fiz só uma pequena formatação e comentei a linha
De acordo com a documentação (para abrir, basta apertar F1 no MQL Editor), a função HistoryOrderSelect limpa a lista de ordens do histórico e copia somente uma ordem se a função for executada e completada. Se precisar fazer um loop sobre todas as funções, basta chamar apenas a função HistoryOrderGetTicket. Portanto, removendo a função deve resolver. Não tenho como testar aqui porque não tenho ordens não executadas por falta de garantia, mas seguindo nessa linha pode ajudá-lo.
Legal, eu não tinha me atentado a esse detalhe nas notas. Deve ser isso mesmo o problema.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa noite;
Estou usando o código abaixo para ler o histórico de ordens enviadas e rejeitadas por falta de margem na plataforma rico, porém retorna o histórico zerado, sem conseguir ler os dados da ordem.
Alguém consegue me ajudar por favor?