Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 674
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Prezados conhecedores!
Espero estar fazendo uma pergunta no ramo certo!
A questão é: é possível usar #define para definir uma construção que se desdobraria no seguinte código:
if(a) printf("%s(%04d)", __FUNÇÃO__, __LINHA__) +printf("%s", _Símbolo);
Isto é para entender... A construção correta poderia ser diferente. Idealmente, eu gostaria de encontrar uma solução para que qualquer impressão() no início da cadeia de saída imprima com a "Função(cadeia em função)" construída antes da cadeia quando a condição corresponder. Tudo isso para encurtar as instruções escritas
E eu gostaria que a construção destacada em vermelho fosse substituída pela seguinte (semelhante):
#define P(a) if(variable>==a) printf("%s(%04d)", __FUNÇÃO__, __LINHA__)
Encontrei algo no Inet, um pouco parecido, mas não trabalhei com aulas, portanto ainda não consigo trabalhar com os códigos de trabalho. Eu tentei aplicar a construção inferior na forma
P(3)+printf("%s(%s) Accuracy=%d", Símbolo, (Command==0? "Buy": "Sell": "Sell"), Accuracy);
Mas qualquer entrada desse tipo no código causa o erro 'Imprimir' - expressão do tipo 'vazio' é ilegal ...
Olá!
Por favor, explique a diferença entre
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==falso){PrintFormat("OrderSelect error %d",GetLastError());return;}
obrigado!
Olá!
Por favor, explique a diferença entre
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==falso){PrintFormat("OrderSelect error %d",GetLastError());return;}
obrigado!
Não há diferença lógica. A diferença está apenas na forma como esta comparação lógica é escrita.
O sinal "!" é "NÃO". Isto é, if(!Select()) é o mesmo que if(Select()==falso). Em russo, parece assim: if(NOT Select()).
Você pode rapidamente "inverter" o valor de uma variável booleana:
Tenho outra pergunta. O seguinte é um exemplo de um programa.
Lotes duplos=0,01;
int slippage=30;
int Subr1()
{
int resultado=-1;
int_result=OrderSend(_símbolo,OP_BUY,Lots,slippage,0,0));
if(int_res<0){PrintFormat("OrderSend error = ",GetError());}
retornar int_resultado;
}
nulo OnTick()
{
int numer=-10;
if(OrdersTotal()==0)numer=Subr1();
if(OrdersTotal()>0)Subr2(numer);
retornar;
}
nulo Subr2(int order)
{
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;} else PrintFormat("Ok, OrderTicket = ",OrderTicket()));
}
Resposta: OrderSelect error 4051. Se eu o substituir por SELECT_BY_POS, erro OrderSelect 1. A reação é a mesma para o testador de estratégia e o "correr sobre dados reais". Eu tentei remover MODE_TRADES para o caso de SELECT_BY_TICKET: Não há diferença. Qual é o problema e como resolvê-lo. Obrigado!
Resposta: OrderSelect error 4051. Se eu o substituir por SELECT_BY_POS, erro OrderSelect 1. A reação é a mesma para o testador de estratégia e "correr com base em dados reais". Eu tentei remover MODE_TRADES para o caso de SELECT_BY_TICKET: Não há diferença. Qual é o problema e como resolvê-lo? Obrigado!
SELECT_BY_POS é a seleção de um pedido "por prioridade" na lista de pedidos e em seu projeto:
Você está tentando selecionar uma ordem que é por ordem de fila # ... e você está usando o bilhete # aqui e só tem 1 pedido e bilhete # 10023444 .... então o que ? aqui você precisa de um número de 1 a 2,3 ... bem, quantas ordens você tem no mercado,... corrigiu o número de 0,1,2 ... - A numeração começa com 0 e vai atéOrderTotal()-1...
SELECT_BY_TICKET deve funcionar, mas somente até o momento em que você tiver o número do bilhete, ou seja, a ordem que você tem no mercado, e acima você tem um cheque para envio da ordem, e se a ordem não for enviada, o bilhete = -1 !
E em resumo, seu projeto para trabalhar com pedidos não está correto. Se você decidiu estudar MQL, aqui estão exemplos prontos para trabalhar com pedidoshttps://www.mql5.com/ru/forum/131859
Você fala de arrays e fala de forex. Que paradoxo!
E um tolo sabe que todas as matrizes básicas em MT4/MT4 são tamponadas.
Não é o mesmo nível de programadores no MT4/MT5, para permitir que os usuários trabalhem com arrays básicos.
Além disso, as matrizes básicas em MT4/MT5 têm sua própria extensão (.hts ou .hss - não me lembro exatamente, mas algo assim).
Portanto, eles não chegam ao terminal em formato de texto (com extensão .txt), mas em seu próprio formato.
E no MT4/MT5 as matrizes básicas são decodificadas e convertidas em matrizes de prazos selecionados (1 minuto, 5 minutos, 15 minutos, etc.), e somente depois disso são duplicadas e tamponadas.
Por que eles são tamponados?
Para comparação. Para que nenhum dado seja perdido. Uma dessas matrizes é constantemente recalculada (de tempos em tempos), e a segunda (copiada da primeira) é usada quando copiamos em nossos dados de usuário.
Em outras palavras, o procedimento para tornar os dados disponíveis aos usuários é bastante complexo.
Trata-se de arrays, caso você esteja interessado.
A propósito, ambas as matrizes MT4/MT5 básicas do Android e do Window têm a mesma extensão.
--------------------------------------------------------------------------------------------------------------------------------
Quanto à importação de dados DYNAMIC para o MT4/MT5 a partir de fontes de terceiros, tanto quanto eu entendo, tal importação não é fornecida.
Portanto, não há procedimento Cliente/Servidor em C++Builder no MT4/MT5.
--------------------------------------------------------------------------------------------------------------------------------
Será que este procedimento estará na biblioteca?
http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html
O mais provável, é claro, é que ele também não esteja lá.
Ou seja, você pode tentar importar matrizes dinâmicas no MT4/MT5 somente no formato básico, onde elas passarão automaticamente pelo processamento de dados padrão.
E um tolo sabe que todas as matrizes básicas em MT4/MT4 são tamponadas.
Os programadores do MT4/MT5 não são do mesmo nível que os do MT4/MT5, que permitem que os usuários trabalhem com matrizes básicas.
Além disso, as matrizes básicas em MT4/MT5 têm sua própria extensão (.hts ou .hss - não me lembro exatamente, mas algo assim).
Portanto, eles não chegam ao terminal em formato de texto (com extensão .txt), mas em seu próprio formato.
E no MT4/MT5 as matrizes básicas são decodificadas e convertidas em matrizes de prazos selecionados (1 minuto, 5 minutos, 15 minutos, etc.), e somente depois disso são duplicadas e tamponadas.
Por que eles são tamponados?
Para comparação. Para que nenhum dado seja perdido. Uma dessas matrizes é constantemente recalculada (de tempos em tempos), e nós usamos a segunda (copiada da primeira) ao copiarmos para nossos dados de usuário.
Em outras palavras, o procedimento para tornar os dados disponíveis aos usuários é bastante complexo.
Trata-se de arrays, caso você esteja interessado.
A propósito, ambas as matrizes MT4/MT5 básicas do Android e do Window têm a mesma extensão.
Você tem uma confusão tão grande em sua cabeça que eu não consegui nem passar
Você fez uma bagunça em MQL - matrizes, arquivos, séries cronológicas e buffers indicadores.
Se você conseguir digerir as informações que eu dei em uma linha, eu lhe darei algum alimento para pensar: MT4 e MT5 armazenam dados históricos de maneiras diferentes, em MT4 um usuário tem acesso aos arquivos.hst https://docs.mql4.com/ru/files/fileopenhistory
No MT5 não há acesso direto aos arquivos de histórico, mas há trabalho com símbolos personalizadoshttps://www.mql5.com/ru/docs/customsymbols
Você tem uma confusão tão grande em sua cabeça que eu não consegui nem passar por ela.
O que você fez na MQL são arrays, arquivos e buffers indicadores
Se você conseguir digerir as informações que eu dei em uma linha, eu lhe darei algum alimento para pensar: MT4 e MT5 armazenam dados históricos de diferentes maneiras, em MT4 um usuário tem acesso aos arquivos.hst https://docs.mql4.com/ru/files/fileopenhistory
No MT5 não há acesso direto aos arquivos de histórico, mas há trabalho com símbolos personalizadoshttps://www.mql5.com/ru/docs/customsymbols
Eu não disse uma única palavra sobre arquivos de história em meu posto.
Você tem algo misturado novamente, e novamente, fora do tópico.
Eu estava falando dos conjuntos de dados DYNAMIC. Esse é um tema completamente diferente. Sinta a diferença.
Eu não disse uma palavra sobre os arquivos de história no meu posto.
Você está novamente confuso, e novamente fora do tópico.
Eu estava falando de matrizes de dados dinâmicos. Esse é um tema completamente diferente.
Além disso, as matrizes básicas em MT4/MT5 têm até sua própria extensão (.hts ou .hss - não me lembro exatamente, mas algo parecido).
OK, vá em frente, eu não entendo o propósito de sua presença neste tópico do fórum.
Eu estava falando dos conjuntos de dados DYNAMIC. Este é um tema totalmente diferente. Sinta a diferença.
OK, vá em frente, eu não entendo o propósito de sua presença neste tópico do fórum
Sinto que você também deve entender que em todas as linguagens de programação as arrays dinâmicas são apenas arrays dinâmicos e astimeseries sãotimeseries e parte do trabalho (acesso) com astimeseries é organizado como trabalho com arrays...É aqui que a questão da formação de dados no terminal é discutida em grande detalhe:
http://profitraders.com/Python/hstRead.html
Quero chamar a atenção dos leitores para o fato de que este artigo NÃO é sobre dados históricos, que está localizado em: MT4->Service->Arquivo de Figuras,
e diretamente sobre os dados DINÂMICOS do terminal em formato .hst, que estão diretamente envolvidos no processo de obtenção e processamento de cotações de mercado.
------------------------------------------------------------------------------------------
Talvez eu não tenha deixado isso suficientemente claro. Leia outros autores. Espero que isso se torne mais claro.