Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 206

 
Vladimir Pastushak:
Come faccio a conoscere il Take Profit e lo Stop Loss di una posizione nella storia?

DEAL_OUT contiene questi campi.

 
fxsaber:

DEAL_OUT contiene questi campi.

DEAL_ENTRY_OUT? come posso ottenere esattamente questi campi?

 
fxsaber:

Abbiamo una posizione aperta con SL e TP nulli, poi modifichiamo la posizione e SL !=0 e TP !=0, poi chiudiamo la posizione manualmente, non importa con un gufo, ma non a prezzo di take o stop....

Come facciamo a trovare questi livelli di SL e TP? Non c'è modo al momento, e poi dimostrare a qualcuno che la posizione è stata chiusa in modo diverso ...

Sarebbe logico vedere un ordine/modifica di una posizione e un trade che ha portato a una posizione modificata con lo SL e il TP specificati...

 
Vladimir Pastushak:

C'è una posizione aperta con SL e TP nulli poi modifichiamo la posizione e SL !=0 e TP !=0 poi chiudiamo la posizione a forza con le mani, con un gufo non importa, ma non al take o stop price....

Come faccio a trovare questi livelli di SL e TP? Non c'è modo al momento, e poi dimostrare a qualcuno che la posizione è stata chiusa in modo diverso ...

Schermata dal terminale o dall'accesso all'investimento.

Sarebbe logico vedere un ordine/modifica di una posizione e un trade che ha portato a una posizione modificata con lo SL e il TP specificati...

Campi DEAL_SL/DEAL_TP.

 
fxsaber:

Schermata dal terminale o dall'accesso all'investimento.

Campi DEAL_SL/DEAL_TP.

Le posizioni sono chiuse dall'Expert Advisor e hanno SL e TP, ma non è possibile ottenere SL e TP nella cronologia delle compravendite e degli ordini

DEAL_ENTRY_OUT dice che l'accordo è stato fatto da EA.

Ho già controllato tutto da una parte all'altra, sia gli ordini che le operazioni, non c'è modo di scoprire i livelli SL e TP di una posizione se la posizione è stata chiusa altrimenti...

 
Vladimir Pastushak:

Ho già controllato tutto, sia gli ordini che i trade, non c'è modo di scoprire i livelli SL e TP di una posizione se la posizione è stata chiusa altrimenti...

DEAL_SL/DEAL_TP è una soluzione futura.

 

Non so se lo fosse o meno:

Le strutture e le classi possono contenere se stesse come campo statico. Questo può essere usato quando una classe contiene campi statici - puntatori a oggetti che devono essere cancellati quando il programma finisce. Esempio:

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() {}

Risultato:

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

(CRecurs può essere dichiarato come struct con lo stesso risultato).

Potete anche creare un metodo statico che restituisce un riferimento alla propria classe (cioè questo campo statico).

 
mktr8591:

Non so se lo fosse o meno:

Le strutture e le classi possono contenere se stesse come campo statico. Questo può essere usato quando una classe contiene campi statici - puntatori a oggetti che devono essere cancellati quando il programma finisce. Esempio:

Risultato:

(CRecurs può essere dichiarato come struct con lo stesso risultato).

Potete anche creare un metodo statico che restituisce un riferimento alla propria classe (cioè questo campo statico).

I campi/metodi statici differiscono dai globali (::) solo per lo scopo.

 
fxsaber:

I campi/metodi statici differiscono dai globali (::) solo per lo scopo.

Sì.


Esempio di vita - nella classe Virtual library VIRTUAL contiene static const VIRTUAL_DELETE VirtualDelete;

Può essere sostituito da static const VIRTUAL static_Virtual;

(e naturalmente spostare il distruttore su VIRTUAL).

Motivazione: