Características del lenguaje mql5, sutilezas y técnicas - página 206

 
Vladimir Pastushak:
¿Cómo puedo saber el Take Profit y el Stop Loss de una posición en el historial?

DEAL_OUT contiene estos campos.

 
fxsaber:

DEAL_OUT contiene estos campos.

DEAL_ENTRY_OUT? ¿Cómo puedo obtener exactamente estos campos?

 
fxsaber:

Tenemos una posición abierta con SL y TP nulos, luego modificamos la posición y SL !=0 y TP !=0, luego cerramos la posición manualmente, no importa con un búho, pero no a precio de toma o stop....

¿Cómo encontrar estos niveles de SL y TP ? No hay manera en este momento, y luego demostrar a alguien que la posición se cerró de manera diferente ...

Lo lógico sería ver una orden/modificación de una posición y una operación que resultara en una posición modificada con el SL y el TP especificados...

 
Vladimir Pastushak:

Tenemos una posición abierta con SL y TP nulos, luego modificamos la posición y SL !=0 y TP !=0, luego cerramos la posición manualmente, no importa con un búho, pero no a precio de toma o stop....

¿Cómo puedo encontrar estos niveles de SL y TP ? No hay manera en este momento, y luego demostrar a alguien que la posición se cerró de manera diferente ...

Captura de pantalla del terminal o del acceso a la inversión.

Lo lógico sería ver una orden/modificación de una posición y una operación que resultara en una posición modificada con el SL y el TP especificados...

Campos DEAL_SL/DEAL_TP.

 
fxsaber:

Captura de pantalla desde el Terminal o acceso a la inversión.

Campos DEAL_SL/DEAL_TP.

Las posiciones son cerradas por el Asesor Experto y tienen SL y TP, pero no es posible obtener SL y TP en el historial de operaciones y órdenes

DEAL_ENTRY_OUT dice que el trato fue hecho por EA.

Ya he comprobado todo a lo largo y ancho, tanto las órdenes como las operaciones, no hay manera de obtener los niveles de SL y TP de una posición si la posición se cerró de otra manera...

 
Vladimir Pastushak:

Ya he comprobado todo, tanto las órdenes como las operaciones, no hay manera de saber los niveles de SL y TP de una posición si la posición se cerró de otra manera...

DEAL_SL/DEAL_TP es una solución futura.

 

No sé si fue o no fue:

Las estructuras y las clases pueden contenerse a sí mismas como un campo estático. Esto se puede utilizar cuando una clase contiene campos estáticos, es decir, punteros a objetos que deben ser eliminados cuando el programa termina. Ejemplo:

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

(CRecurs puede declararse como struct con el mismo resultado).

También puede crear un método estático que devuelva una referencia a su propia clase (es decir, este campo estático).

 
mktr8591:

No sé si fue o no fue:

Las estructuras y las clases pueden contenerse a sí mismas como un campo estático. Esto se puede utilizar cuando una clase contiene campos estáticos, es decir, punteros a objetos que deben ser eliminados cuando el programa termina. Ejemplo:

Resultado:

(CRecurs puede declararse como struct con el mismo resultado).

También puede crear un método estático que devuelva una referencia a su propia clase (es decir, este campo estático).

Los campos/métodos estáticos se diferencian de los globales (::) sólo en el ámbito de aplicación.

 
fxsaber:

Los campos/métodos estáticos se diferencian de los globales (::) sólo en el ámbito de aplicación.

Sí.


Ejemplo de vida - en la librería virtual la clase VIRTUAL contiene la estática const VIRTUAL_DELETE VirtualDelete;

Se puede sustituir por static const VIRTUAL static_Virtual;

(y por supuesto mover el destructor a VIRTUAL) .