Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1266

 
Alexey Viktorov:

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.

 
Maxim Kuznetsov:

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.

 
ANDREY:

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.
 
Alexey Viktorov:
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?

 
ANDREY:

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)
)

 
Aleksey Vyazmikin:

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.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
4elovechishe:

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.

 
Aleksey Vyazmikin:

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.

Razão: