esto funciona bien - (dependiendo de qué propósito!?)
#include <Trade\Trade.mqh>
CTrade Trade;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---int total=PositionsTotal();
int Ordertotal=OrdersTotal();
while(!IsStopped() && (total <= 1)) // Закончим, когда появится более одной позиции.if(total == 1)
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.elseif(Ordertotal!=0)
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
}
//+------------------------------------------------------------------+
Creo que las dos posiciones están abiertas y cerradas. No estaría mal intentar conseguir los tipos de estas dos posiciones. Si se dirigen de manera diferente, confirmará mis sospechas...
Bien obtener el estado de esta orden.Si el billete es conocido.
La operación falló, el precio de ejecución es 0.
Estructura del resultado de la solicitud de negociación (MqlTradeResult)
En respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult.
structMqlTradeResult
{
uint retcode; // Код результата операцииulong deal; // Тикет сделки, если она совершенаulong order; // Тикет ордера, если он выставленdouble volume; // Объем сделки, подтверждённый брокеромdouble price; // Цена в сделке, подтверждённая брокеромdouble bid; // Текущая рыночная цена предложения (цены реквота)double ask; // Текущая рыночная цена спроса (цены реквота)string comment; // Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера)uint request_id; // Идентификатор запроса, устанавливается терминалом при отправке uint retcode_external; // Код ответа внешней торговой системы
};
Esa es la cuestión: ha pasado. Cuando el script termina, una o dos posiciones se quedan colgadas (dependiendo de cuántas impresoras se inserten en el código).
Código:
#define PRINT(A) Print(#A + " = " + (string)(A))
#include <Trade\Trade.mqh>
voidOnStart()
{
CTrade Trade;
while (!IsStopped() && (PositionsTotal() <= 1)) // Закончим, когда появится более одной позиции.if (PositionsTotal() == 1)
{
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.Print("Закрытие, т. к. PositionsTotal() равно 1");
}
elseif (!OrdersTotal())
{
printf("Перед открытием. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
PRINT(Trade.ResultRetcodeDescription());
PRINT(Trade.ResultDeal());
PRINT(Trade.ResultOrder());
PRINT(Trade.ResultComment());
if (OrderSelect(Trade.ResultOrder()))
PRINT(OrderGetInteger(ORDER_STATE));
printf("После открытия. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
}
Print("Выход. PostionsTotal: ", PositionsTotal());
}
Resultado:
2021.05.0514:25:14.738 Test (EURUSD,M1) Перед открытием. PositionsTotal: 0, OrdersTotal: 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultRetcodeDescription() = done at 0.000002021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultDeal() = 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultOrder() = 22498886812021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultComment() = Request executed
2021.05.0514:25:14.821 Test (EURUSD,M1) EnumToString(ENUM_ORDER_STATE(OrderGetInteger(ORDER_STATE))) = ORDER_STATE_PLACED2021.05.0514:25:14.821 Test (EURUSD,M1) После открытия. PositionsTotal: 1, OrdersTotal: 12021.05.0514:25:14.899 Test (EURUSD,M1) Закрытие, т. к. PositionsTotal() равно 12021.05.0514:25:14.899 Test (EURUSD,M1) Выход. PostionsTotal: 2
Esta comprobación está presente en el código fuente.
Creo que las dos posiciones están abiertas y cerradas. También ayudaría tratar de conseguir los tipos de estas dos posiciones. Si están dirigidos de forma diferente, confirmaría mis sospechas...
esto funciona bien - (dependiendo de qué propósito!?)
que funciona bien - (dependiendo de qué propósito!?)
No te involucres. Allí tienen un DC especial que construye todo tipo de intrigas para atrapar a los bichos de la MT.
Un DC especial que construye todo tipo de intrigas para atrapar a los bichos de la MT.
La mayoría de los corredores trabajan según el mismo esquema: Result.deal == 0.
Por ejemplo, Signals es el broker más popular para el scalping.
Entre los corredores de renombre es bastante difícil encontrar donde MT5 funcione según un esquema diferente.
esto funciona bien - (dependiendo de qué propósito!?)
La mayoría de los corredores trabajan según el mismo esquema: Result.deal == 0.
Signals, por ejemplo, es el broker más popular para el scalping.
Entre los corredores conocidos es bastante difícil encontrar donde MT5 funciona según un esquema diferente.
No sé qué tipo de scalping funciona tanto como para no tener tiempo de cerrar una posición...
Si no te importa, sigue intentando añadir la comprobación del número de posiciones
Creo que las dos posiciones están abiertas y cerradas. No estaría mal intentar conseguir los tipos de estas dos posiciones. Si se dirigen de manera diferente, confirmará mis sospechas...
Hecho:
Resultado:
Bien obtener el estado de esta orden.Si el billete es conocido.
La operación falló, el precio de ejecución es 0.
Estructura del resultado de la solicitud de negociación (MqlTradeResult)
En respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult.
Si se conoce el estado de este pedido.
La operación falló, el precio de ejecución es 0.
Esa es la cuestión: ha pasado. Cuando el script termina, una o dos posiciones se quedan colgadas (dependiendo de cuántas impresoras se inserten en el código).
Código:
Resultado:
No sé qué tipo de scalping trabaja tanto que no puede cerrar una posición a tiempo...
Allí todo está en el tiempo. Es una característica arquitectónica de MT5.
Si no te importa, intenta añadir la comprobación del número de posiciones
Esta comprobación está presente en el código fuente.
Creo que las dos posiciones están abiertas y cerradas. También ayudaría tratar de conseguir los tipos de estas dos posiciones. Si están dirigidos de forma diferente, confirmaría mis sospechas...
No existe una posición de cierre.
Todavía no he podido publicarlo. Lo publicaré en 24 horas.
No funcionó, encontré problemas.
No funcionó, encontró problemas.
Lo estoy deseando. Si hay algo en lo que necesites ayuda, escríbenos.