Perguntas sobre OOP em MQL5 - página 42

 
Igor Makanu:

...

chama tudo em métodos privados, mas existe uma "mentalidade Jedi ?" para se afastar do CheckPointer(m_order)==POINTER_INVALID no código fonte

...

É mais provável que isto não seja um truque, o algoritmo deve ser tal, que esta parte do código não seja executada se não houver ordem.

Ou talvez fosse essa a sua intenção. Mas é improvável, se houver um ponteiro, isso não significa que haja uma ordem, então temos que verificar se há uma ordem.

 
Igor Makanu:

e se a memória me serve corretamente, no início do ano era possível desajustar o NULL no registro e chegar 0 lá, agora ele dá um erro

Mudanças

Fórum sobre comércio, sistemas automatizados de comércio e testador de estratégias

Bichos, insetos, perguntas

Kirill Belousov, 2017.12.14 21:34

Print(NULL); // 'NULL' - expression of 'void' type is illegal
Alert(NULL); // 'NULL' - expression of 'void' type is illegal

Hora de se aposentar

 
A100:

Mudanças

Sim, de fato, mas me lembrei como eu costumava fazer isso no MT4, era assim que eu desregistrava os indicadores:

class A {};

A *a;
void OnStart()
{  Print("1 : ",a);
   a= new A;
   Print("2 : ",a);
   a = NULL;
   Print("3 : ",a);

delete a;
}

2019.09.17 07:52:40.855 tst (EURUSD,H1) 1 : 0

2019.09.17 07:52:40.856 tst (EURUSD,H1) 2 : 1048576

2019.09.17 07:52:40.856 tst (EURUSD,H1) 3 : 0

2019.09.17 07:52:40.856 tst (EURUSD,H1) 1 objetos não removidos

2019.09.17 07:52:40.856 tst (EURUSD,H1) 1 objeto do tipo A à esquerda

2019.09.17 07:52:40.856 tst (EURUSD,H1) 24 bytes de memória vazada

Dmitry Fedoseev:

Este provavelmente não é o caso, o algoritmo deve ser tal que esta parte do código não seja executada se não houver ordem.

Ou talvez seja assim que se pretende. Mas é improvável, se houver um ponteiro, isso não significa que haja uma ordem, então temos que verificar a existência de uma ordem.

Dependendo do problema, já escrevi em código como criar um "objeto de ordem" que se pareceria com o que está no mercado - procurar uma ordem no projetista usando um magik, se encontrado ele irá pegá-lo, abrir uma ordem a um preço, o próprio tipo de ordem conta (mercado ou pendente), normalização do lote, tentar novamente abrir uma ordem se os pedidos estivessem em um tick anterior, após uma colocação de ordem bem sucedida no tick seguinte, colocar um sl e assim por diante... tudo isso é feito por si só, sem qualquer intervenção do "objeto de ordem".

E se a ordem foi fechada, ela ainda está lá para a estratégia - em última análise, a estratégia está interessada no lucro da ordem (atual ou já fechada - não importa!) e noestado da própriaordem (ainda não colocada, ativa e já fechada)


tudo funciona como planejado, talvez você esteja certo em algum lugar, mas por enquanto o código ainda está sendo testado, os indicadores devem ser verificados, mais tarde podemos tentar sem esta verificação... embora a lógica do trabalho implique as seguintes ações, se não houver em princípio nenhum objeto.... não sobra muito para refazer tudo às ordens virtuais, ainda preciso pensar ))))

 
Igor Makanu:

Eu queria escrever o que eu costumava ter em vez de

foi assim:

mas lembrou como verificar as substituições de macro em MQL

2019.09.16 22:57:42.837 tst (EURUSD,H1) a = 1

2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID = 0

2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0


e se a memória me serve corretamente, no início do ano era possível desimprimir NULL no registro e chegar 0 lá , agora aparece um erro

Isto é, o comportamento NULL como se não devesse mudar no futuro, mas o que lá é substituído em vez do NULL não é claro, provavelmente se esta situação for verificada agora, como escritose(CheckPointer(m_order)==POINTER_INVALID))) )))

Sinta-se à vontade para se candidatar. Com 98% de confiança NULL no código fonte é algo como #define NULL nullptr
 
Vladimir Simakov:

E depois há isto, para o açúcar:

O primeiro teste simples mostra

void OnStart()
{
    A * const a = new A;
    DELETE(a); //Error: 'a' - constant cannot be modified
}

que não é açúcar, mas um diferente... mais substância líquida

 
A100:

O primeiro teste simples mostra

que não é açúcar, mas um diferente... mais substância líquida.

Porque não está lá). O NULL não está nem aqui nem lá. Você deve usar a função CheckPointer(). O ponteiro não precisa ser zerado por si só - depois de apagado torna-se POINTER_INVALIDO por si só.

 
Dmitry Fedoseev:

Porque não é lá que você está)) O NULL não está nem aqui nem lá. Você deve usar a função CheckPointer(). Você não precisa zerar o ponteiro por si mesmo, ele se torna POINTER_INVALIDO por si mesmo após a eliminação.

Concordo plenamente. Se você ler os administradores, normalmente soa da seguinte forma: "Escreva seus códigos corretamente

MQL em geral é sempre difícil, nova construção, novos problemas, você começa a descobrir se eu a usei incorretamente, aqui você vai e assina ))))

 
A100:

O primeiro teste simples mostra

que não é açúcar, mas um diferente... mais substância líquida

Bom homem. Onde estão as estatísticas de seu trabalho freelance, seus produtos no mercado, suas publicações relativas à programação? Ou você está tentando abrir os olhos de alguém sobre o tema das indicações constantes, ou piscar seus conhecimentos sobre o tema dos tipos de substâncias...? No futuro, considere o contexto dos exemplos, em vez de tentar reproduzir um erro de compilação.
 
Vladimir Simakov:
Caro homem. Onde estão as estatísticas de seus trabalhos freelance, produtos no mercado, publicações relacionadas à programação? Ou você está tentando abrir os olhos de alguém sobre o tópico de indicações constantes, ou piscar seus conhecimentos sobre o tópico de tipos de substâncias ...? No futuro, considere o contexto dos exemplos, em vez de tentar reproduzir um erro de compilação.

Eu tenho um contexto simples: se o código (neste caso uma macro) for escrito com um erro, acho que é possível relatá-lo (e dar um exemplo para prová-lo). E, neste contexto, não está claro para mim o queas estatísticas têm a ver com isso

 
A100:

E, neste contexto, não está claro para mim o que as estatísticas têm a ver com isso.

Mantenha-o simples e as pessoas virão até você.

;)

SZZY: Seus postos são quase sempre uma boa idéia, mas a apresentação do material, bem, não inteiramente com boas intenções, é claro, seu negócio, mas imho, quer ajudar - ajudar, quer ser esperto, bem, muitas vezes acontece assim

Depende de você, mas aumentando sua auto-estima com recursos on-line - .... Eu sou preguiçoso demais para continuar digitando.