Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1266
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
Eu não me lembro, tenho que verificar, mas não quero. Talvez, em mql4 ao tentar criar um objeto com o nome de um já existente, um erro foi devolvido, e em mql5 não foi um erro, mas uma modificação dos parâmetros se as coordenadas forem diferentes.
Como disse Artem - verificar a existência do objeto.
Sim, isso mesmo.
de repente (como de costume) ObjectGetInteger(0,objectName,OBJPROP_TYPE) funciona mais rápido.
ObjectFind é um comando síncrono, ou seja, espera por uma atualização completa (e disponibilidade) dos objetos gráficos.
Se você trabalha com seus próprios objetos (criados em seu próprio estoque), você não deve usar ObjectFind - você já sabe em que janela o objeto foi criado e que ele provavelmente existe e é o tipo certo.
O pior que poderia acontecer é que o usuário apagasse o objeto ou mudasse o imóvel.
Obrigado. Isso é interessante.
Bom dia a todos vocês.
O livro de Kovalev diz que os índices de matrizes podem ser definidos para valores inteiros como constantes,variáveis ou expressões.
Quando eu defino o índice em mql4 como uma variável, o compilador me dá apenas um erro
É assim que eu defino o índice
intW=1000;
duplo T_P[W]={0};
nulo OnTick()
{
código
}
Por favor, me diga o que estou fazendo de errado.
Obrigado.
Bom dia a todos vocês.
O livro de Kovalev diz que os índices de matrizes podem ser definidos para valores inteiros como constantes,variáveis ou expressões.
Quando eu defino o índice em mql4 como uma variável, o compilador me dá apenas um erro
É assim que eu defino o índice
intW=1000;
duplo T_P[W]={0};
nulo OnTick()
{
código
}
Por favor, me diga o que estou fazendo de errado.
Obrigado.
O índice da matriz não é o tamanho da matriz.
Entendi, obrigado. Existe alguma maneira de definir o tamanho da matriz usando uma variável?
Entendi, obrigado. Existe alguma maneira de definir o tamanho da matriz usando uma variável?
Define um novo tamanho na primeira dimensão da matriz
intArrayResize(
void&array[],// array passado pela referência
intnew_size,// novo tamanho da matriz
intreserve_size=0// valor de tamanho_reserva (redundante)
)
Define o novo tamanho na primeira dimensão da matriz
intArrayResize(
void&array[],// array passado pela referência
intnew_size,// novo tamanho da matriz
intreserve_size=0// valor de tamanho de reserva (redundante)
);
Obrigado pelas informações valiosas.
Olá! Por favor, ajude-me com um código simples.
Estou lidando com mecanismos de abertura/fechamento de pedidos no momento e tenho encontrado um problema com o fechamento de posições abertas.
O código é simples. A idéia do algoritmo é desenhar o MA (média móvel) com um período de 100 no gráfico. Se a vela anterior [1] abriu acima do MA, e fechou abaixo do MA, então a vela seguinte [0] abre uma ordem de vendapara vender.
//(As condições para comprar são diferentes, não vou descrevê-las)
Para o fechamento do pedido as seguintes condições - o preço atual passou do preço de abertura do pedido o valor estabelecido de pontos, por exemplo 40.
Exemplo: Um lote é aberto em Bid= 1.20045, ele deve fechar em Ask= 1.20005.
O código de abertura e fechamento é embalado em duas funções correspondentes - CheckForOpen() e CheckForClose() que por sua vez são chamadas com a função OnTick(). Na verdade, o preço pode passar um certo valor de pontos (passar do nível de fechamento), mas a ordem não será fechada.
Eu não consigo descobrir o que está errado.
p/s/ Screenshots e código anexado.
Olá! Por favor, ajude-me com um código simples.
Estou lidando com mecanismos de abertura/fechamento de pedidos no momento e tenho encontrado um problema com o fechamento de posições abertas.
O código é simples. A idéia do algoritmo é desenhar o MA (média móvel) com um período de 100 no gráfico. Se a vela anterior [1] abriu acima do MA, e fechou abaixo do MA, então a vela seguinte [0] abre uma ordem de vendapara vender.
//(As condições para comprar são diferentes, não vou descrevê-las)
Para o fechamento do pedido as seguintes condições - o preço atual passou do preço de abertura do pedido o valor estabelecido de pontos, por exemplo 40.
Exemplo: Um lote é aberto em Bid= 1.20045, ele deve fechar em Ask= 1.20005.
O código de abertura e fechamento é embalado em duas funções correspondentes - CheckForOpen() e CheckForClose() que por sua vez são chamadas com a função OnTick(). Na verdade, o preço pode passar um certo valor de pontos (passar do nível de fechamento), mas a ordem não será fechada.
Eu não consigo descobrir o que está errado.
p/s/ Screenshots e código anexado.
O CheckForOpen() não deve ser chamado diretamente no OnTick, mas em um OnBar autoescrito (que deve ser chamado no OnTick) - na abertura do bar. Mas isto é uma coisa trivial
, ao invés de Abrir[1], Fechar[1] (a vela anterior atravessou MA100) devemos olhar para Abrir[1],Abrir[0] (a vela anterior abriu de um lado de MA, a atual do outro lado). Caso contrário, um espaço raso entre os castiçais será visto e a lógica será perdoada.
O SMA da Mediana muda na 0ª barra, ou seja, não é constante. Não pode ser comparado a ela. Corrija o algoritmo.
Define o novo tamanho na primeira dimensão da matriz
intArrayResize(
void&array[],// array passado pela referência
intnew_size,// novo tamanho da matriz
intreserve_size=0// valor de tamanho de reserva (redundante)
);
Obrigado novamente por sua dica, mas..... em Ajuda está escrito que esta função se aplica somente a matrizes dinâmicas. E meu código NÃO é uma matriz dinâmica, mas uma matriz regular.
Ficarei muito grato se você me disser (ou, melhor, me mostrar) como mudar o tamanho de uma matriz regular na primeira dimensão.
Mais uma vez obrigado por sua ajuda.