Erros, bugs, perguntas - página 2101
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Olá! comecei a estudar a MQL5 desdehttps://www.mql5.com/ru/articles/100. Lancei o código e recebi o erro 4756. Dei uma vista de olhos na documentação e não foi melhor. Pensei em começar com algo simples (Alerta/Impressão...). Uma das funções mais importantes é a de OrderSend. Comecei a pesquisar através do fórum/documentação sobre como utilizar o OrderSend. Encontrei este artigohttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions e encontrei o código para abrir uma posição de compra. Recebi o erro 4756 e o retcode 10030. Compreendi que 10030 - é a propriedade OrderSend, mas não compreendi como esta propriedade deve ser usada (olhei para o código de outra pessoa) e para que é usada principalmente. Depois abrihttps://www.mql5.com/ru/docs/trading/ordersend, copiei o código, lancei-o, está tudo bem, funcionou.
Mas ainda não compreendo por que razão aparece o erro 4756 e como se livrar dele, bem como o 10030.
Veja-se o código entre
e este aqui.
Parecem-me quase idênticos, não vejo onde aparecem estes erros (4756 e 10030). Aponte o dedo e explique por favor
Execução Instantânea
Uma ordem de negociação para abrir uma posição no modo Instant Execution (o modo de negociação a preços de streaming). São necessários 9 campos:
Pode também especificar campos mágicos e de comentários.
Execução do Mercado
Uma ordem de negociação para abrir uma posição no modo de Execução do Mercado. Requer 5 campos a serem especificados:
Pode também especificar campos mágicos e de comentários.
que actualização chegou, 1736, o que há nela, onde posso lê-la?
Proponho dar uma oportunidade de determinar programmaticamente qual o buffer indicador que está a desenhar no gráfico.
Suponha que um comerciante inicia os seus próprios indicadores, não sabemos quantos amortecedores são utilizados para o cálculo e quantos são utilizados para desenhar o indicador no gráfico.
Abordagem de indicadores personalizados através de
intChartIndicatorGet(
longchart_id,// identificador do gráfico
intsub_janela// número da subjanela
const string indicador_nome_do_código // nome do indicador curto
);
Também podemos solicitar a gama de amortecedores de desenho
intChartIndicatorGet(
longchart_id,// identificador do gráfico
intsub_janela// número da janela
const string indicador_nome_do_código // nome do indicador curto
int & IndicatorVisualBuffer[] // números tampão de desenho... );
Isto aumentará a possibilidade de trabalhar com indicadores desconhecidos instalados no gráfico.
Proponho dar uma oportunidade de determinar programmaticamente qual o buffer indicador que está a desenhar no gráfico.
Suponhamos que um comerciante inicia os seus indicadores, não sabemos quantos amortecedores são utilizados para calcular e quantos são utilizados para desenhar o indicador no gráfico.
Dirigir-se ao indicador através de
intChartIndicatorGet(
longchart_id,// ID do gráfico
intsub_janela// número da subjanela
const string indicador_nome_do_código // nome do indicador curto
);
Também podemos solicitar a matriz de tampões de desenho
intChartIndicatorGet(
longchart_id,// identificador do gráfico
intsub_janela// número da janela
const string indicador_nome_do_código // nome do indicador curto
int & IndicatorVisualBuffer[] // números tampão de desenho... );
Isto aumentará a possibilidade de trabalhar com indicadores desconhecidos instalados no gráfico.
O que é que regressa?
e qual será a utilidade de o acrescentar? Quer adicionar um parâmetro de entrada e receber o mesmo manípulo indicador em resposta...
E, se não se importa, para que fim é necessário? Não estou a ser irónico. Afinal, se algo é sugerido, deve, na minha opinião, dar um argumento convincente da necessidade do sugerido.
O que é que retorna
e de que serviria adicioná-lo? Propõe-se adicionar um parâmetro de entrada e obter o mesmo manípulo indicador em resposta...
E se não for difícil, para que fins surgiu tal necessidade? A questão é sem ironia. Afinal de contas, se algo é oferecido, é necessário, na minha opinião, dar argumentos convincentes na necessidade do oferecido.
O utilizador coloca qualquer indicador.
O Expert Advisor encontra-o automaticamente e utiliza dados tampão para receber o sinal.
Agora temos de utilizar o iCustom e se conseguirmos escrever a lista de parâmetros, aqui está o problema com buffers....
É possível contar a quantidade de tampões através de Copiar, mas é impossível compreender qual deles está a desenhar ...
O utilizador coloca qualquer indicador.
O Expert Advisor encontra-o automaticamente e utiliza dados tampão para obter o sinal.
Agora temos de utilizar o iCustom e se pudermos escrever a lista de parâmetros, aqui está o problema com buffers....
É possível contar a quantidade de tampões usando a cópia programática, mas é impossível compreender qual deles está a desenhar ...
Porque é impossível? O INDICADOR_CALCULÁRIO DE TROCULAÇÃO pode ser retirado através do iCustom()?
É uma questão interessante, mas não neste tópico para a discutir. Pessoalmente, tenho dúvidas de que possa de alguma forma melhorar ou simplificar o trabalho do programador. Os indicadores são demasiado diferentes e as condições da sua aplicação são demasiado diferentes. Então teremos de pedir para poder determinar o tipo de traçado gráfico e algumas outras coisas, e os nossos pedidos internos serão uma bola de neve.
Porque é que não é possível? O tampão INDICADOR_CALCULATIONS pode ser alcançado através do iCustom()?
A questão é interessante, mas não neste tópico para a discutir. Pessoalmente tenho dúvidas de que possa de alguma forma melhorar ou facilitar o trabalho do programador. Existem indicadores demasiado diferentes e condições demasiado diferentes para a sua aplicação. Depois teremos de pedir para poder determinar o tipo de traçado gráfico e depois algumas outras coisas, e os pedidos serão "bola de neve".
Teoricamente, o que está escrito no indicador por defeito, não estou a falar do código do programador, deve estar disponível a partir do exterior ... Buffers o seu número, tipo de trama, cor, e outros padrões ...
Este é o problema que eu encontrei:
Decidi usar como magia o resto da divisão de ChartID por 1000 ou 10000, não importa realmente.
Mas por alguma razão com ChartID() diferente, o resto da divisão é subitamente o mesmo. Pergunta: porquê?
Verificação do guião
Resultado
Eu esperava ver 74907 e 74908 respectivamente, porque o resto da divisão deveria ser o mesmo.
Estou também à espera de uma resposta a esta pergunta.
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Insectos, insectos, perguntas
Alexey Viktorov, 2018.01.09 14:21
No testador MT5 o objecto "Campo de entrada" OBJ_EDIT não permite editar o valor nele contido. É assim que é concebido ou é um insecto?
Em terminais e MT4 tester é editável, mas em MT5 tester não quer, o valor introduzido programmaticamente ao criar o objecto desaparece de todo.
Mas por alguma razão diferente ChartID() produz subitamente o mesmo resíduo da divisão. Pergunta: porquê?
Porque o fmod de entrada é o dobro. O dobro não pode armazenar um grande número de inteiros. Por exemplo, este é o seu caso:
Façam isto.
Usando a bóia como exemplo, pode rapidamente compreender a peculiaridade do duplo
Resultado
O duplo SZY não perde a informação de todo o alcance, não tanto com o longo prazo.
Porque a fmod de entrada é o dobro. O dobro não pode armazenar um grande número de inteiros. Por exemplo, o seu caso:
Façam isto.
Claro, vou verificar esta amostra agora, mas também tinha um código de verificação como este
o resultado é
Indica que não deve haver truncagem de valores.
Mas aqui verifiquei esta variante e alterei ligeiramente a proposta
e obteve a variante esperada.
Surge outra questão,
Se MathMod, bem como fmoddevolve o resto real após a divisão de dois números. E % de acordo com a documentação
O resto dos minutos = tempo % 60;
porque é que existe uma diferença?