Perguntas de um "boneco" - página 100

 
220Volt:

Boa tarde. Existe tal fenómeno como uma distorção dos últimos bocados em duplicado, por favor informe que condições devem ser criadas para que tal distorção ocorra? É possível a distorção nas operações = ? É possível a distorção quando se armazenam inteiros em duplo? Durante a realização de operações?

x=M_PI;
y=sqrt(x);
y=y*y;

O que é uma variante de distorção?
 

Por favor, aconselhar. Existe alguma forma de descobrir programática (na função OnTrade()) se um Stop Loss, Take Profit ou uma ordem pendente foi definida, modificada ou apagada manualmente (por meios terminais)? E um pequeno exemplo, se não for difícil.

No momento as operações listadas são registadas e escritas em ficheiro(s), que se encontram no directório D:\Metatrader 5\logs. Por isso, não posso lê-los programticamente.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
tol64:

Por favor, aconselhar. Existe alguma forma de descobrir programática (na função OnTrade()) se um Stop Loss, Take Profit ou uma ordem pendente foi definida, modificada ou apagada manualmente (por meios terminais)? E um pequeno exemplo, se não for difícil.

A função já tratou de eventos quando determinadas listas foram alteradas anteriormente, não havia parâmetros. Se tudo for igual, verifica-se que os eventos de definição, modificação ou eliminação de ordens devem ser tratados independentemente de as ordens terem sido definidas manualmente ou não. Será isto correcto? Se estiver correcto, podemos tentar descobrir o bilhete de cada evento comercial (se o evento se referir a uma encomenda) e se descobrirmos que não foi criado qualquer bilhete programático, podemos seguir o seu destino. É algo parecido com isto.
 
Yedelkin:
Anteriormente, a função tratava de eventos quando determinadas listas eram alteradas, não existiam parâmetros. Se tudo se mantiver na mesma, então verifica-se que os eventos definidos, modificados ou eliminados devem ser recebidos, independentemente de as encomendas serem definidas manualmente ou não. Será isto correcto? Se estiver correcto, podemos tentar descobrir o bilhete de cada evento comercial (se o evento se referir a uma encomenda) e se descobrirmos que não foi criado qualquer bilhete programático, podemos seguir o seu destino. É algo parecido com isto.
Sim, isso é correcto, mas apenas se os acontecimentos se relacionarem com o comércio, tanto quanto eu entendo. Preciso de saber se os eventos de modificação de encomendas em modo manual podem ser rastreados de forma programática.
 
tol64:
Sim, tudo está correcto, mas apenas se os eventos estiverem relacionados com o comércio, tanto quanto eu entendo. Preciso de descobrir se é possível seguir programticamente os eventos de modificação de encomendas em modo manual.

Não, não, leia a documentação com urgência :) Ou ainda melhores artigos. A lista de acordos é apenas uma parte de todas as listas. Significa que os acontecimentos devem ser diferentes... No entanto, eu próprio o li há muito tempo, posso esquecer.

O artigo"Processamento de Eventos Comerciais no Expert Advisor com a Função OnTrade()" e o artigo"Eventos Comerciais no MetaTrader 5" da Roche.

 
Yedelkin:

Não, não, leia a documentação com urgência :) Pelo menos essa parte era mais ou menos clara aí. A lista de transacções é apenas uma parte de todas as listas. Portanto, os eventos também devem ser diferentes.

E ainda melhor: houve um artigo sobre esta função, e um artigo da Roche sobre eventos comerciais (se não me engano no título).

)) Em OnTrade() eu consigo definir eventos como este:

DEAL_ENTRY_IN, DEAL_ENTRY_OUT, DEAL_ENTRY_INOUT.

Posso também determinar se um destes eventos foi apenas um acordo ou uma ordem pendente desencadeada e que tipo de ordem pendente foi. E também se foi uma nova posição ou um aumento/diminuição de uma posição já existente.

---

Não sei como detectar modificações de quaisquer encomendas. Também não vi nenhum exemplo disto na documentação. Preciso de uma dica. Uma simples dica dos criadores. Existe essa possibilidade ou não? E será esta possibilidade alguma vez implementada ou não, para se livrar desta questão ou tentar resolvê-la de alguma outra forma inteligente. :)

---

Há também esta secção na documentação: Tipos de ofícios. Mas estes eventos podem ser identificados se forem feitos de forma programática.

 
Yedelkin:

...

Artigo sobre esta função"Manuseamento de eventos comerciais em EAs usando a função OnTrade()".

Descobri neste artigo o que eu estava a perguntar. Já o li uma vez, mas esqueci-me completamente dele. :)
 
tol64:
Encontrei o que estava a perguntar neste artigo. Li-o uma vez, mas tinha-o esquecido completamente. :)

Geralmente esqueço todas as subtilezas após um mês. É por isso que tudo o que eu faço é reler. Eu li secções do Manual e artigos :)

Aqui está outra frase "...mudança de SL e TP não muda... e mesmo o evento OnTrade não é gerado, nós apenas substituímos os campos SL e TP (como para posição aberta)" pode ser útil. Eu próprio, no entanto, ainda não descobri como o fazer.

 
tol64:
Sim, isso é correcto, mas apenas se os acontecimentos se relacionarem com o comércio, tanto quanto eu entendo. Preciso de descobrir se os eventos de modificação de encomendas podem ser rastreados programmaticamente em modo manual.
Pelo menos a definição e remoção de uma encomenda é tratada, mas sem parâmetros é tudo uma chatice. Não posso dizer pela mudança, mas também deve ser tratada por ideia.
tol64:
Encontrei o que estava a perguntar neste artigo. Li uma vez, mas esqueci-me completamente dela. :)
Pensei logo no assunto. Talvez as soluções nela descritas não sejam tão ideais e elegantes como gostaríamos que fossem (especialmente tendo em conta que os parâmetros ainda estão ausentes), mas em princípio têm todas as bases.
 

Pode dizer-me como obter a oferta e perguntar o preço de outro par de moedas, não actual neste momento, em mt4 havia um comando marketinfo, em mt5 não há nenhum.

Tenho uma suposição de que precisamos de avançar paraSymbolInfoDouble(Symbol(),SYMBOL_ASK) e aqui operar com valorSymbol(), mas não consigo perceber como.

Razão: