Desejos para MQL5 - página 59

 
diakin >> :

Que tipo de eventos, por exemplo?

Por exemplo, a partir da prática, o fechamento de uma posição. Eu tinha essa tarefa - saber quando uma posição foi fechada para modificar outras ordens, levando em conta os fundos liberados. Eu tinha que monitorar o estado da conta o tempo todo. Eu tentei rastrear as ordens da história, mas era impossível testá-las, tudo leva muito tempo.

O único evento que pode ser processado agora é um tick.

 
Gupm писал(а) >>

Por exemplo, a partir da prática, fechar uma posição. Eu tinha essa tarefa - saber quando uma posição foi fechada para modificar outras ordens, levando em conta os fundos liberados. Eu tinha que monitorar o status da conta o tempo todo. Eu tentei rastrear as ordens da história, mas era impossível testá-las, tudo leva muito tempo.

O único evento que pode ser tratado agora é um tique.

Mas, de qualquer forma, o start() é lançado a cada tique. Você pode fazer qualquer verificação lá, se algum evento ocorreu ou não.

 
diakin писал(а) >>

Portanto, de qualquer forma, o start() é executado a cada tick. Você pode fazer qualquer tipo de verificação lá, se algum evento aconteceu ou não.

Sim, é, estou fazendo isso agora, mas como será maravilhoso quando o pedido for um objeto, que terá, por exemplo, um evento de encerramento, ao qual você prende seu manipulador e tudo mais, esta parte do código é absolutamente separada, depurada, etc.

 
Gupm писал(а) >>

Sim, é isso que estou fazendo agora, mas como será maravilhoso quando o pedido for um objeto que terá, por exemplo, um evento de fechamento, ao qual você prende seu manipulador e pronto, esta parte do código é completamente separada, depurada, etc.

Acho que pode ser fácil de fazer na MQL5.

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

O último parâmetro é o nome da função a ser chamada quando se fecha o pedido. O compilador reconhecerá as funções no texto de qualquer maneira, e as reconhecerá nos parâmetros.

E os eventos são tratados internamente, já que a mensagem sobre o fechamento do pedido (ou erro) está sendo impressa para o log.

Mas podemos esperar mais eventos, que também teriam de ser descritos em parâmetros, pelo menos com valores vazios, como OnCloseEmpty, OnOpenEmpty , etc.

Em geral, seria bom acrescentar uma lista de modelos para funções freqüentemente chamadas, quando você seleciona de onde o modelo de função com todos os parâmetros necessários seria inserido no texto.

Agora temos que ir para a ajuda, copiar a descrição da função e editar os parâmetros.

 

Eu gostaria de fazer um pedido de MQL5.

Desculpe, se eu repetir, não li todos os artigos anteriores...

Gostaria que os loops em novos mql fossem marcados de alguma forma, por exemplo, como este:

 
Duke3D писал(а) >>

...

Gostaria que as voltas no novo mql fossem destacadas de alguma forma, por exemplo, desta forma:

Ao menos faça um botão de formatação de texto com recuo automático para colchetes.

Agora, se um parênteses falhar, é muito difícil encontrar onde ele aconteceu.

E também adicionar a numeração das linhas. Não é uma coisa comum em C. É mais conveniente do que procurar o número da linha na barra de status.

 
diakin >> :

Acho que é fácil de fazer na MQL5.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

O último parâmetro é o nome da função a ser chamada quando se fecha o pedido. O compilador reconhece as funções no texto de qualquer maneira, e as reconhecerá nos parâmetros.

E os eventos são tratados internamente, já que a mensagem sobre o fechamento do pedido (ou erro) está sendo impressa para o log.

Mas podemos esperar mais eventos, que também teriam de ser descritos em parâmetros, pelo menos com valores vazios, como OnCloseEmpty, OnOpenEmpty , etc.

Em geral, seria bom acrescentar uma lista de modelos para funções freqüentemente chamadas, quando você seleciona de onde o modelo de função com todos os parâmetros necessários seria inserido no texto.

Agora tenho que ir para a ajuda, copiar a descrição da função e editar os parâmetros.

Por que apenas onClose? E o onModify, onOpen?

Talvez se este for um objeto, deveria ser algo parecido com isto:


TOrder order = new  TOrder(symbol, cmd,  volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы?

 
TedBeer писал(а) >>

Por que apenas onClose? E o onModify, onOpen?

Talvez, se a ordem é um objeto, deveria haver algo assim:

Ы?

É difícil dizer.

int ticket=OrderSend(parameters); // a função usual da MQL4

order(ticket).addEvent ("open", myOpenHandler);

Ou mais compacto

Order(ticket).OnOpen=myOpenHandler;

onde Ordem(cabo) é algo padrão, um objeto ou estrutura através do qual você pode chegar às propriedades do cabo do objeto dado.

duplo MyVolume=Order(ticket).Volume;


Um inferno de muitos eventos personalizados não pode ser aparafusado. Ou podemos?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Onde está "MyCustomEvent" descrito neste caso? (se NÃO for uma combinação de eventos padrão e pré-condições).

Embora, como eu entendo, a MQL5 já tenha sido escrita, é um desejo para o futuro ;))))

 
diakin >> :

É difícil dizer.

int ticket=OrderSend(parameters); // função usual da MQL4

Order(ticket).addEvent ("open", myOpenHandler);

Ou mais compacto

Order(ticket).OnOpen=myOpenHandler;

onde Ordem(cabo) é algo padrão, um objeto ou estrutura através do qual você pode chegar às propriedades do cabo do objeto dado.

duplo MyVolume=Order(ticket).Volume;


Um inferno de muitos eventos personalizados não pode ser aparafusado. Ou podemos?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Onde está "MyCustomEvent" descrito neste caso? (se NÃO for uma combinação de eventos padrão e pré-condições).

Embora, como eu entendo que a MQL5 já foi escrita, é um desejo para o futuro ;))))

Bem, você tem um mishmash de abordagem funcional e de OOP. Ideologicamente, deveria ser um ou outro. Mesmo que as funções habituais sejam preservadas para compatibilidade retroativa, o OOP também deve ser implementado, caso contrário, de que adianta uma modernização tão profunda chamada MQL5?

Infelizmente, todas as nossas discussões são semelhantes à leitura das folhas de chá. Eles não têm nenhuma utilidade, já que não vemos nenhuma disposição das metáforas, não apenas para dar a versão beta, mas também para publicar as especificações do idioma que eles implementaram. Então você poderia razoavelmente pedir para fazer algo com o idioma antes de liberá-lo como um produto.

Razão: