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.
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.
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.
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) );
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, efechou 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.
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
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, efechou 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.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
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.