Estoy tratando de implementar dos funciones en mi EA, la primera define el beneficio de la última operación, la segunda define el lote de la última operación.
Busqué en este sitio de la A a la Z e hice varias funciones, siguiendo los ejemplos de los artículos y otros EAs, pero no hay resultado - ambas funciones siempre devuelven 0.00.
Aquí me parece la variante más cercana a la correcta, pero el resultado es siempre 0:
double LossLastPos(){
// --- определение границ требуемой торговой историиdatetime end=TimeCurrent(); // текущее серверное времяdatetime start=end-PeriodSeconds(PERIOD_D1);// установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньHistorySelect(start,end);
//--- получим количество ордеров в историиint history_orders=HistoryOrdersTotal();
//--- получим тикет ордера из истории, имеющего последний индекс в спискеulong order_ticket=HistoryOrderGetTicket(history_orders-1);
if(order_ticket>0) // получили в кэш исторический ордер, работаем с ним
{
//Получаем значение прибыли последнего ордераdouble profit = HistoryDealGetDouble(order_ticket,DEAL_PROFIT);
return(profit);
}
}
Trato de obtener el tamaño del lote de la misma manera:
Yo mismo acabo de empezar la migración de mql4 a mql5. La implementación de dichas funciones en mql4 no era muy difícil, pero aquí hay un punto muerto.
Por favor, aconséjenme una solución real y que funcione.
Aquí hay una solución que funciona al 100% - la función devuelve el beneficio de la última posición cerrada en el historial de la terminal:
//+------------------------------------------------------------------+ //|Функция возвращает профит последней позиции |//+------------------------------------------------------------------+double ProfitLastPos()
{
// --- определение границ требуемой торговой историиdatetime end=TimeCurrent(); // текущее серверное времяdatetime start=end-PeriodSeconds(PERIOD_D1);// установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньif(HistorySelect(start,end))
{
//--- получим количество сделок в историиint history_orders=HistoryDealsTotal();
//--- получим тикет сделки из истории, имеющей последний индекс в спискеulong order_ticket=HistoryDealGetTicket(history_orders-1);
if(order_ticket>0) // получили в кэш историческую сделку, работаем с ней
{
profit=HistoryDealGetDouble(order_ticket,DEAL_PROFIT);
}
}
return(profit);
}
Por analogía obtenemos el tamaño del lote de la última operación:
Y si además pulsas Ctrl+ en el editor, obtendrás un código bien formateado. Especialmente importante antes de subir el ejemplo al foro (mejor legibilidad). ))
tol64: Si además pulsas Ctrl+ en el editor, obtendrás un código bien formateado. Esto es especialmente importante antes de subir el ejemplo al foro (mejor legibilidad). ))
Buenos días! Recientemente he empezado a aprender MQL5. Tengo un problema con el cierre de posiciones. En código: if(!m_Trade.PositionClose(_Symbol,100))//--- cerrar la posición por el símbolo actual. El resultado es que la posición se invierte. Te agradecería mucho una pista, ¿cómo puedo cerrar una posición?
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
if( p_close1 < buy_stop_level )// если бар 1 закрылся ниже уровня стоп
{
if(!m_Trade.PositionClose(_Symbol,100))//--- закрываем позицию по текущему символу
{
//--- сообщим о неудачеPrint("Метод PositionClose() потерпел неудачу. Код возврата=",m_Trade.ResultRetcode(),
". Описание кода: ",m_Trade.ResultRetcodeDescription());
}
else
{
Print("Метод PositionClose() выполнен успешно. Код возврата=",m_Trade.ResultRetcode(),
" (",m_Trade.ResultRetcodeDescription(),")");
}
}
}
Quiero poner una acción (futuros) en MT5 para probar la mía, ¿cómo?
De ninguna manera. Busque una casa de bolsa con estos futuros
%))) No hay DC con este fuchs))) Tiene que estar pegado...
Qué pena, qué pena, todo empezó tan bien...
¡Saludos a todos!
Estoy tratando de implementar dos funciones en mi EA, la primera define el beneficio de la última operación, la segunda define el lote de la última operación.
Busqué en este sitio de la A a la Z e hice varias funciones, siguiendo los ejemplos de los artículos y otros EAs, pero no hay resultado - ambas funciones siempre devuelven 0.00.
Aquí me parece la variante más cercana a la correcta, pero el resultado es siempre 0:
Trato de obtener el tamaño del lote de la misma manera:
Y nada funciona, los valores son siempre cero.
Yo mismo acabo de empezar la migración de mql4 a mql5. La implementación de dichas funciones en mql4 no era muy difícil, pero aquí hay un punto muerto.
Por favor, aconséjenme una solución real y que funcione.
...
Por favor, sugiera una solución real y que funcione.
Utilice HistoryDealGetTicket() y HistoryDealsTotal().
Y hacer la validación:
¡tol64 muchas gracias! Todo está funcionando.
Aquí hay una solución que funciona al 100% - la función devuelve el beneficio de la última posición cerrada en el historial de la terminal:
Por analogía obtenemos el tamaño del lote de la última operación:
¡tol64 muchas gracias! Todo está funcionando.
...
Si además pulsas Ctrl+ en el editor, obtendrás un código bien formateado. Esto es especialmente importante antes de subir el ejemplo al foro (mejor legibilidad). ))
Buenos días! Recientemente he empezado a aprender MQL5. Tengo un problema con el cierre de posiciones. En código: if(!m_Trade.PositionClose(_Symbol,100))//--- cerrar la posición por el símbolo actual. El resultado es que la posición se invierte. Te agradecería mucho una pista, ¿cómo puedo cerrar una posición?
Registro de EA después de que la barra haya cerrado por debajo del nivel de parada. Posición larga = 1 lote, posición corta = 1 lote)