J'essaie d'implémenter deux fonctions dans mon EA, la première définit le profit de la dernière transaction, la seconde définit le lot de la dernière transaction.
J'ai cherché sur ce site de A à Z et fait plusieurs fonctions, en suivant les exemples des articles et d'autres EA, mais aucun résultat - les deux fonctions renvoient toujours 0.00.
Cette variante me semble être la plus proche de la variante correcte mais le résultat est toujours 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);
}
}
J'essaie d'obtenir la taille du lot de la même manière :
Et rien ne fonctionne, les valeurs sont toujours nulles.
Je viens moi-même de commencer la migration de mql4 vers mql5. L'implémentation de telles fonctions dans mql4 n'était pas très difficile, mais voici une impasse.
Veuillez me conseiller une solution réelle et fonctionnelle.
Voici une solution qui fonctionne à 100% - la fonction renvoie le profit de la dernière position fermée dans l'historique du 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);
}
Par analogie, nous obtenons la taille du lot de la dernière transaction :
Et si vous appuyez également sur Ctrl+ dans l'éditeur, vous obtiendrez un code proprement formaté. Particulièrement important avant de télécharger l'exemple sur le forum (meilleure lisibilité). ))
tol64: Si vous appuyez également sur Ctrl+ dans l'éditeur, vous obtiendrez un code proprement formaté. Ceci est particulièrement important avant de télécharger l'exemple sur le forum (meilleure lisibilité). ))
Bonjour, j'ai récemment commencé à apprendre MQL5. J'ai un problème avec la fermeture des positions. En code : if(!m_Trade.PositionClose(_Symbol,100))//--- fermer la position par le symbole actuel. Le résultat est que la position est inversée ! Je serais très reconnaissant d'avoir un indice, comment puis-je fermer une position ?
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------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(),")");
}
}
}
Je veux mettre une action (futures) dans MT5 pour tester la mienne, comment ?
Pas du tout. Cherchez une maison de courtage avec ces contrats à terme.
%))) Il n'y a pas de DC avec ce fuchs)))) Il doit être collé ensemble...
C'est dommage, c'est dommage, et tout avait si bien commencé...
Salutations à tous !
J'essaie d'implémenter deux fonctions dans mon EA, la première définit le profit de la dernière transaction, la seconde définit le lot de la dernière transaction.
J'ai cherché sur ce site de A à Z et fait plusieurs fonctions, en suivant les exemples des articles et d'autres EA, mais aucun résultat - les deux fonctions renvoient toujours 0.00.
Cette variante me semble être la plus proche de la variante correcte mais le résultat est toujours 0 :
J'essaie d'obtenir la taille du lot de la même manière :
Et rien ne fonctionne, les valeurs sont toujours nulles.
Je viens moi-même de commencer la migration de mql4 vers mql5. L'implémentation de telles fonctions dans mql4 n'était pas très difficile, mais voici une impasse.
Veuillez me conseiller une solution réelle et fonctionnelle.
...
Veuillez suggérer une solution réelle et fonctionnelle.
Utilisez HistoryDealGetTicket() et HistoryDealsTotal().
Et faites la validation :
tol64 merci beaucoup ! Tout fonctionne.
Voici une solution qui fonctionne à 100% - la fonction renvoie le profit de la dernière position fermée dans l'historique du terminal :
Par analogie, nous obtenons la taille du lot de la dernière transaction :
tol64 merci beaucoup ! Tout fonctionne.
...
Si vous appuyez également sur Ctrl+ dans l'éditeur, vous obtiendrez un code proprement formaté. Ceci est particulièrement important avant de télécharger l'exemple sur le forum (meilleure lisibilité). ))
Bonjour, j'ai récemment commencé à apprendre MQL5. J'ai un problème avec la fermeture des positions. En code : if(!m_Trade.PositionClose(_Symbol,100))//--- fermer la position par le symbole actuel. Le résultat est que la position est inversée ! Je serais très reconnaissant d'avoir un indice, comment puis-je fermer une position ?
Enregistrement de l'EA après la fermeture de la barre en dessous du niveau de stop. Position longue = 1 lot, position courte = 1 lot)