Características da linguagem mql5, subtilezas e técnicas - página 206

 
Vladimir Pastushak:
Como é que conheço o Take Profit e Stop Loss de uma posição na história?

DEAL_OUT contém estes campos.

 
fxsaber:

DEAL_OUT contém estes campos.

DEAL_ENTRY_OUT? como é que consigo exactamente estes campos?

 
fxsaber:

Temos uma posição aberta com zero SL e TP, depois modificamos a posição e SL !=0 e TP !=0, depois fechamos a posição manualmente, não importa com uma coruja, mas não ao preço de take ou stop....

Como é que encontramos estes níveis de SL e TP? De momento não há hipótese, e depois provar a alguém que a posição foi encerrada de forma diferente ...

Seria lógico ver uma ordem/modificação de uma posição e uma troca que resultasse numa mudança de posição com o SL e TP especificados...

 
Vladimir Pastushak:

Temos uma posição aberta com zero SL e TP, depois modificamos a posição e SL !=0 e TP !=0, depois fechamos a posição manualmente, não importa com uma coruja, mas não ao preço de take ou stop....

Como encontro estes níveis de SL e TP? De momento não há hipótese, e depois provar a alguém que a posição foi encerrada de forma diferente ...

Captura de ecrã a partir do terminal ou acesso ao investimento.

Seria lógico ver uma ordem/modificação de uma posição e uma troca que resultasse numa mudança de posição com o SL e TP especificados...

Campos DEAL_SL/DEAL_TP.

 
fxsaber:

Captura de ecrã a partir do Terminal ou do acesso ao investimento.

Campos DEAL_SL/DEAL_TP.

As posições são fechadas pelo Consultor Especialista e têm SL e TP, mas não é possível obter SL e TP na história para negócios e ordens

DEAL_ENTRY_OUT diz que o negócio foi feito pela EA.

Já verifiquei tudo, tanto as encomendas como os negócios, não há maneira de descobrir os níveis SL e TP de uma posição se a posição foi fechada de outra forma...

 
Vladimir Pastushak:

Já verifiquei tudo, tanto as ordens como os negócios, não há maneira de descobrir os níveis SL e TP de uma posição se a posição foi fechada de outra forma...

DEAL_SL/DEAL_TP é uma solução de futuro.

 

Não sei se foi ou não foi:

As estruturas e classes podem conter-se a si próprias como um campo estático. Isto pode ser usado quando uma classe contém campos estáticos - apontadores para objectos que precisam de ser apagados quando o programa termina. Exemplo:

class A
  {
   int               a;
  };

class CRecurs
  {
public:
   int               a;
   static A *        element;
   static CRecurs    s;
                     CRecurs(void) { Print(__FUNCSIG__, " ", EnumToString(CheckPointer(element))); }
                    ~CRecurs(void) { delete element; Print(__FUNCSIG__, " ", EnumToString(CheckPointer(element)));  }
  };
static A* CRecurs::element = new A;
static CRecurs CRecurs::s;

void OnStart() {}

Resultado:

CRecurs::CRecurs() POINTER_DYNAMIC
CRecurs::~CRecurs() POINTER_INVALID

(Os CRecurs podem ser declarados como estruturantes com o mesmo resultado).

Pode também criar um método estático que devolve uma referência à sua própria classe (ou seja, este campo estático).

 
mktr8591:

Não sei se foi ou não foi:

As estruturas e classes podem conter-se a si próprias como um campo estático. Isto pode ser usado quando uma classe contém campos estáticos - apontadores para objectos que precisam de ser apagados quando o programa termina. Exemplo:

Resultado:

(Os CRecurs podem ser declarados como estruturantes com o mesmo resultado).

Pode também criar um método estático que devolve uma referência à sua própria classe (ou seja, este campo estático).

Os campos/métodos estáticos diferem dos globais (::) apenas no âmbito.

 
fxsaber:

Os campos/métodos estáticos diferem dos globais (::) apenas no âmbito.

Sim.


Exemplo de vida - na biblioteca virtual classe VIRTUAL contém const const VIRTUAL_DELETE VirtualDelete;

Pode ser substituído por const const const VIRTUAL estático_Virtual;

(e, claro, mover o destruidor para VIRTUAL) .

Razão: