[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 603

 

leia aqui https://forum.mql4.com/ru/38949/page2#434212


A função ExistPosByPrice().

Esta função retorna uma bandeira para a existência de uma posição a um determinado preço em aberto.

O que éuma bandeira Existente?

 
hoz:

Portanto, pergunte se você escreveu corretamente a função que está mostrando, caso contrário, você está perguntando sobre uma coisa e mostrando outra.
 
lottamer:

leia aqui https://forum.mql4.com/ru/38949/page2#434212


A função ExistPosByPrice().

Esta função retorna uma bandeira para a existência de uma posição a um determinado preço em aberto.

O que é"Bandeira Existente"?


Uma bandeira é uma variável, geralmente do tipo bool, que é ajustada a um estado dependendo da verdade da condição a ser verificada (aqui - há uma posição com um determinado preço de abertura).
 
sergeev:

não que desta vez para o sinal == exista apenas por 1 segundo.

é correto ou colocar o sinal >=

ou passar pelo controle de duas variáveis temporais - atual e anterior.

Mas, por outro lado, você tem um erro lógico. Você está tentando vincular um segundo a um resultado positivo de uma operação lógica de uma condição de abertura de ordem.

Isto não é correto. A ordem pode não abrir, o que significa que você não tentará abri-la no próximo tick - já que a função de tempo retornará falsa


Eu tive a idéia geral. Eis o que saiu:

bool GetTimeToInput()

{

  if(TimeCurrent() >= iTime(Symbol(),1440,0) && TimeCurrent() <= iTime(Symbol(),1440,0) + N)

  {

    return(true);

  }

  else

    

  return(false);

} 

N é o número de minutos após a abertura do bar diário. Até o momento, ainda não descobri como obtê-lo, por isso escrevi uma variável pura. Parece estar correto.

sergeev:

Você tem que ligar a memorização da operação bem sucedida ao tempo.

pensar.

Mas eu gostaria de esclarecer o que você quer dizer com "binding binding", lembrando-se de uma operação bem sucedida ao tempo. Eu não entendi bem.

 
hoz:


Eu tive a idéia geral. Eis o que saiu:

N é o número de minutos transcorridos desde a abertura do bar diário. Até agora eu não entendia como obtê-lo, então escrevi puramente uma variável. Parece estar correto.

Sergeev:

Mas quero explicar mais claramente, como conectar a memorização da operação bem sucedida com o tempo. Eu não entendo bem.


Não é o tempo em si que é importante para você, mas se algo foi feito dentro de um certo período de tempo - isto é o que você deve verificar.

P.S. E você não precisa determinar N, apenas faça sua verificaçãose(TimeCurrent() >= iTime(Symbol(),1440,0) ) até que as ações necessárias estejam concluídas (instalando uma ordem).

 
rigonich:

Uma bandeira é uma variável, geralmente do tipo bool, que é definida para um estado dependendo se a condição é verdadeira ou não (aqui - se há uma posição com um determinado preço em aberto).

Estou vendo, qual é a posição INDEX? não é um ticker, e não é um tipo....
 
lottamer:

Entendi, o que é um índice de pedidos ? não é um ticker, e não é digitado....


Este é o índice que determina a posição da ordem na matriz onde os dados sobre as ordens presentes no terminal são armazenados.

Em outras palavras,está sublinhado (em SELECT_BY_POS) boolOrderSelect(int index, int select, int pool=MODE_TRADES)

 
rigonich:


Este é o índice que define a posição do pedido na matriz onde os dados sobre os pedidos presentes no terminal são armazenados.

Ou seja,o que está sublinhado( com SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)



mas como aplicar isto na prática se você precisa codificar a condição "se as duas últimas negociações foram perdidas....."? ??
 
lottamer:

mas como usar isso na prática se você precisa codificar a condição "se as duas últimas negociações fossem perdedoras....."? ??


Na prática, isto é usado em todas as operações que trabalham com ordens. É preciso primeiro selecionar a ordem e depois fazer algo com ela (ver as informações da ordem, enviar uma ordem de serviço ao servidor para modificá-la ou fechá-la). Há duas maneiras de selecionar ordens no terminal, por ticket, que é o número atribuído à ordem no servidor que não muda para uma determinada ordem, ou pelo número da ordem (índice) sob o qual a ordem é armazenada no terminal. Este número pode mudar a cada tick, dependendo de quais e quantos pedidos são abertos, definidos, fechados ou excluídos.

Para trabalhar com pedidos, é necessário organizar ciclos de avaliação de pedidos.

 
rigonich:


Não é o tempo em si que importa, mas se algo foi feito dentro de um certo período de tempo, isso é o que você deve verificar.

P.S. E você não precisa definir N, apenas faça sua verificaçãose(TimeCurrent() >= iTime(Symbol(),1440,0) ) até que a ação que você deseja esteja concluída (estabelecendo uma ordem).


Mas, se você definir desta forma:

if(TimeCurrent() >= iTime(Symbol(),1440,0)

Desta forma, o sinal será válido o tempo todo após a abertura do bar e . Ao infinito. Por que eu preciso dele? O principal é abrir um pedido na abertura de um bar, não de uma embalagem.

Razão: