Erros, bugs, perguntas - página 606

 
uncleVic:
Não é realmente claro porquê? Afinal de contas, se o seu programa apagou um objecto, ele sabe sobre ele. Mas se o objecto for eliminado e o programa não tiver "conhecimento" do mesmo, o Terminal deve ser responsabilizado em conformidade.

não é assim tão simples (é uma pena que tenha desaparecido do balcão de serviço, vou tentar reintroduzir o problema de novo).

Temos de lidar com a situação quando um utilizador apaga acidentalmente um objecto do gráfico. Mas este objecto não deve ser apagado. Por exemplo, é o substrato de uma lista ou de um menu suspenso.

Assim, no código OnChartEvent preciso de tratar deste evento e redesenhar o controlo.

Por isso, tenho de apagar todos os outros objectos neste controlo. Acho que não preciso de explicar porque devo apagar todos os objectos de topo deste controlo.

Assim, acontece que o processamento deste evento o algoritmo entra num ciclo profundo. O script irá apagar objectos e obter o evento em que os objectos foram apagados e significa que este evento deve ser processado novamente - remover e renderizar... Em suma, uma confusão algorítmica.

Não sei como consertá-lo dentro do actual conjunto CHARTEVENT. É por isso que sugiro, que o guião compreenda - cuja remoção foi - por terminal (por utilizador manhoso) ou pelo próprio guião (pelo mesmo programador).

Mais cedo ou mais tarde, quando se começa a trabalhar activamente com controlos, terá de ser o próprio a lidar com isso.

 
sergeev:

não é assim tão simples (é uma pena que o balcão de atendimento tenha desaparecido, vou tentar descobrir o problema de novo).

Não sei como resolver esta situação dentro do actual conjunto CHARTEVENT. É por isso que sugiro, que o guião compreenda - quem o apagou - por terminal (por utilizador manhoso) ou pelo próprio guião (pelo mesmo programador).

Mais cedo ou mais tarde, quando se começa a trabalhar activamente com os controlos, ter-se-ia confrontado com isto.

Já o encontrei. Numa das primeiras versões da Biblioteca de Arte (em termos de controlos), este mecanismo foi implementado, mas por determinadas razões foi removido (planeio restaurá-lo mais tarde).

Não há nada de inteligente nisso. Cada controlador deve ser capaz de se restabelecer a si próprio. O substrato, quando apagado, remove tudo o que nele se encontra. O restauro é feito por eventos.

 
uncleVic:


Não há nada de inteligente nisso. Cada controlador precisa de ser capaz de se reparar a si próprio. O substrato, quando apagado, apaga tudo o que nele se encontra. Depois a restauração é feita por eventos.

Bem, é isso que estou a dizer, que quando um evento de eliminação é recebido, o controlo restabelece-se a si próprio.

Mas assim que o controlo se restabeleça (elimina objectos superiores) começará a apagar eventos de novo.

Porque tenho de rever e provar o óbvio :)) Quando a sua empresa precisou de um evento de movimento do rato para o desenvolvimento da biblioteca padrão, eles adicionaram-no na mosca e sem perguntas desnecessárias. A prática de dois pesos e duas medidas resulta....
Mas penso que se esta mesma proposta fosse enviada pelo utilizador para o Service Desk, eles iriam arrastá-lo por mais um mês para descobrir porque precisavam dela.

Acredite, você precisa! Já escrevi no Service Desk que não tentamos promover o MT5 e a MQL5, mas fazemo-lo em nosso próprio benefício.

Passamos honestamente todas as formas de encontrar soluções rápidas e compactas para as nossas tarefas em MQL. Se enfrentarmos um obstáculo, escrevemos sempre para o Service Desk. Mas nem sempre encontramos aí qualquer entendimento.

Como escrevi acima, estou muito contente por ser o senhor mesmo a fazer a biblioteca de controlo. Pode ao menos ter um pequeno vislumbre de todos os nossos problemas que devem ser resolvidos sem qualquer compreensão da sua parte.

PS.
Victor, peço desculpa por isso tão severamente, apenas uma dor no pescoço.
Gostaria apenas de pedir à vossa empresa para ouvir os pedidos dos programadores da MQL. Afinal de contas, resolvemos muito mais tarefas diversas em MQL do que se pode imaginar. Por vezes só quero ouvir a resposta no Service Desk: sim, fá-lo-emos na próxima construção.

Obrigado pela vossa compreensão.

 

sergeev:

... quando a sua empresa precisava de um evento de movimentação do rato ...

Se soubesse o quanto tive de partir os punhos por causa de programadores "adultos" para o fazer...
 
Correndo o risco de parecer sem originalidade, mas ainda assim... Senhoras e senhores - quando é que o mercado vai abrir? Alguém sabe pelo menos uma linha temporal aproximada?
 
uncleVic:
Se soubesse o quanto tive de partir os punhos por causa de programadores "adultos" para o fazer...
Victor, tu e eu estamos no mesmo barco :))) vamosestar juntos.
 

Estou a tentar abrir uma posição longa baseada no script para um símbolo onde a execução de troca é implementada ( SYMBOL_TRADE_EXECUTION_EXCHANGE, Exchange execution).

#include <Trade\Trade.mqh>                   
input double InpLots          =0.1;  
input int    InpTakeProfit    =500;
input int    InpSL            =300;
CTrade       myTrade;

void OnStart()
  {   
   double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)+InpTakeProfit*_Point;
   double sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)-InpSL*_Point;
   myTrade.SetTypeFilling(ORDER_FILLING_IOC);
   myTrade.PositionOpen(_Symbol,ORDER_TYPE_BUY,InpLots,price,0,0,"Test Buy");
   Sleep(500); // интервал задержки
   myTrade.PositionModify(_Symbol,sl,tp);
  }

Recebo um erro:

  • compra de troca 0,10 EURUSD.e a 0,00000;
  • compra de troca falhada 0,10 EURUSD.e a 0,00000 [Paragens inválidas].

Ou seja, o terminal não vê o preço a que eu quero comprar. Tentei preços diferentes mas ainda assim recebi 0,00000.

Experimentei um guião semelhante a correr no MT4 com as mesmas condições de troca, funcionou lá... Não em MT5...

Favor apontar o nariz para o erro.

 
denkir:
  • compra de troca falhada 0,10 EURUSD.e a 0,00000 [Paragens inválidas].

Isto é uma mensagem de servidor, não uma mensagem terminal. Não tenho mais nada a dizer sobre este assunto.

Submeter um pedido ao Service Desk.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
papaklass:

Porque é que ocorre um erro de transbordamento?

Normalmente escreve-lhe algo antes de o ler...
 
papaklass:

Porque é que ocorre um erro de transbordamento?


E onde tem a chamada ArrayResize?
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
Razão: