- Estructura de fecha
- Estructura de parámetros de entrada de indicador
- Estructura de datos históricos
- Estructura de profundidad de mercado
- Estructura de solicitud comercial
- Estructura de resultados de verificación de una solicitud comercial
- Estructura de resultado de solicitud comercial
- Structure of a Trade Transaction
- Estructura para obtención de precios actuales
- Estructuras del calendario económico
Estructura de solicitud comercial (MqlTradeRequest)
La interacción entre el terminal de cliente y el servidor comercial con el fin de ejecutar las operaciones de colocación de las órdenes se realiza a través de las solicitudes comerciales. La solicitud comercial está representada por la estructura especial predefinida MqlTradeRequest que contiene todos los campos necesarios para celebrar las transacciones comerciales. El resultado de procesamiento de una solicitud está representado por la estructura MqlTradeResult.
struct MqlTradeRequest
{
ENUM_TRADE_REQUEST_ACTIONS action; // Tipo de acción que se ejecuta
ulong magic; // ID del Asesor Experto (identificador magic number)
ulong order; // Ticket de la orden
string symbol; // Nombre del instrumento comercial
double volume; // Volumen solicitado de la transacción en lotes
double price; // Precio
double stoplimit; // Nivel StopLimit de la orden
double sl; // Nivel Stop Loss de la orden
double tp; // Nivel Take Profit de la orden
ulong deviation; // Desviación máxima aceptable del precio solicitado
ENUM_ORDER_TYPE type; // Tipo de orden
ENUM_ORDER_TYPE_FILLING type_filling; // Tipo de ejecución de la orden
ENUM_ORDER_TYPE_TIME type_time; // Tipo de orden por su plazo de ejecución
datetime expiration; // Plazo de expiración de la orden (para las órdenes del tipo ORDER_TIME_SPECIFIED)
string comment; // Comentarios sobre la orden
ulong position; // Position ticket
ulong position_by; // Comentarios sobre la orden
};
Descripción de campos
Campo |
Descripción |
---|---|
action |
Tipo de operación comercial. El valor puede ser uno de los valores de la enumeración ENUM_TRADE_REQUEST_ACTIONS |
magic |
Identificador del Asesor Experto. Permite organizar el procesamiento analítico de las órdenes comerciales. Cada Asesor Experto puede establecer su propio identificador personal único a la hora de mandar una solicitud comercial. |
order |
Ticket de la orden. Se necesita para modificar las órdenes pendientes. |
symbol |
Nombre del instrumento financiero (símbolo) para el que se coloca una orden. No se necesita para modificar las órdenes y cerrar las posiciones. |
volume |
Volumen solicitado de la transacción en lotes. El valor real del volumen dependerá del tipo de ejecución de la orden. |
price |
Precio. Al alcanzarlo, la orden tiene que ejecutarse. Las órdenes del mercado de símbolos, cuyo tipo de ejecución es "Market Execution" (SYMBOL_TRADE_EXECUTION_MARKET), del tipo TRADE_ACTION_DEAL, no requieren la especificación del precio. |
stoplimit |
Precio según el cual será colocado la orden pendiente Limit, cuando el precio alcance el valor price (esta condición es obligatoria). Hasta entonces la orden pendiente no se introduce en el sistema. |
sl |
Precio que activará la orden Stop Loss, si el precio se mueve en la dirección desfavorable |
tp |
Precio que activará la orden Take Profit. si el precio se mueve en la dirección favorable |
deviation |
Desviación máxima aceptable del precio solicitado, se especifica en puntos |
type |
Tipo de la orden. Su valor puede ser uno de los valores de la enumeración ENUM_ORDER_TYPE |
type_filling |
Tipo de ejecución de la orden. Su valor puede ser uno de los valores de ENUM_ORDER_TYPE_FILLING |
type_time |
Tipo de orden por su plazo de ejecución. Su valor puede ser uno de los valores de ENUM_ORDER_TYPE_TIME |
expiration |
Plazo de expiración de la orden (para las órdenes del tipo ORDER_TIME_SPECIFIED) |
comment |
Comentarios sobre la orden |
Al modificar o cerrar una posición en el sistema de cobertura, asegúrese de indicar su ticket (MqlTradeRequest::position). En el sistema de compensación el ticket también se puede indicar, sin embargo, la identificación de la posición tiene lugar según el nombre del símbolo. |
Para dar las órdenes de ejecución de las operaciones comerciales es necesario usar la función OrderSend(). Para cada operación comercial hay que indicar los campos obligatorios, también se puede rellenar campos opcionales. En total hay siete formas de enviar una solicitud comercial:
Request Execution
Es una orden comercial para abrir una posición en el régimen Request Execution (régimen de actividad comercial sobre solicitud de precios actuales). Se requiere especificar 9 campos:
- action
- symbol
- volume
- price
- sl
- tp
- deviation
- type
- type_filling
Además se puede definir los valores de los campos magic y comment.
Instant Execution
Es una orden comercial para abrir una posición en el régimen Instant Execution (régimen de actividad comercial a base de los precios corrientes). Se requiere especificar 9 campos:
- action
- symbol
- volume
- price
- sl
- tp
- deviation
- type
- type_filling
Además se puede definir los valores de los campos magic comment.
Market Execution
Es una orden comercial para abrir una posición en el régimen Market Execution (régimen de ejecución de las órdenes comerciales en el mercado). Se requiere especificar 5 campos:
- action
- symbol
- volume
- type
- type_filling
Además se puede definir los valores de los campos magic y comment.
Exchange Execution
Es una orden comercial para abrir una posición en el régimen Exchange Execution (modo de ejecución de órdenes comerciales por bolsa). Se requiere especificar 5 campos:
- action
- symbol
- volume
- type
- type_filling
Además se puede definir los valores de los campos magic y comment.
Ejemplo de la operación comercial TRADE_ACTION_DEAL para abrir una posición Buy:
#define EXPERT_MAGIC 123456 // MagicNumber эксперта |
Ejemplo de la operación comercial TRADE_ACTION_DEAL para abrir una posición Sell:
#define EXPERT_MAGIC 123456 // Número mágico del experto |
Ejemplo de la operación comercial TRADE_ACTION_DEAL para cerrar una posición:
#define EXPERT_MAGIC 123456 // Número mágico del experto |
SL & TP Modification
Es una orden comercial para modificar los niveles StopLoss y/o TakeProfit. Se requiere especificar 4 campos:
- action
- symbol
- sl
- tp
Ejemplo de la operación comercial TRADE_ACTION_SLTP para cambiar los valores de Stop Loss y Take Profit de una posición abierta:
#define EXPERT_MAGIC 123456 // Número mágico del experto |
Pending Order
Es una orden comercial para colocar una orden pendiente. Se requiere especificar 11 campos:
- action
- symbol
- volume
- price
- stoplimit
- sl
- tp
- type
- type_filling
- type_time
- expiration
Además se puede definir los valores de los campos magic y comment.
Ejemplo de la operación comercial TRADE_ACTION_PENDING para colocar una orden pendiente:
#property description "Ejemplo de colocación de órdenes pendientes" |
Modify Pending Order
Es una orden comercial para modificar los precios de una orden pendiente. Se requiere especificar 7 campos:
- action
- order
- price
- sl
- tp
- type_time
- expiration
Ejemplo de la operación comercial TRADE_ACTION_MODIFY para modificar los niveles de precio de las órdenes pendientes:
#define EXPERT_MAGIC 123456 // Número mágico del experto |
Delete Pending Order
Es una orden comercial para eliminar una orden pendiente. Se requiere especificar 2 campos:
- action
- order
Ejemplo de la operación comercial TRADE_ACTION_REMOVE para eliminar órdenes pendientes:
#define EXPERT_MAGIC 123456 // Número mágico del experto
|
Véase también
Estructuras y clases, Funciones comerciales, Propiedades de órdenes