Estou a tentar implementar duas funções na minha EA, a primeira define o lucro da última troca, a segunda define muito da última troca.
Pesquisei neste site de A a Z e fiz várias funções, seguindo os exemplos em artigos e outros EAs, mas nenhum resultado - ambas as funções retornam sempre 0,00.
Aqui parece-me ser o mais próximo da variante correcta, mas o resultado é sempre 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);
}
}
Aqui está uma solução 100% funcional - a função devolve o lucro da última posição fechada na história do 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 analogia, obtemos o tamanho do lote do último comércio:
E se também carregar em Ctrl+ no editor, receberá um código bem formatado. Especialmente importante antes de carregar o exemplo para o fórum (melhor legibilidade). ))
tol64: Se também carregar em Ctrl+ no editor, receberá um código bem formatado. Isto é especialmente importante antes de carregar o exemplo para o fórum (melhor legibilidade). ))
Bom dia! Comecei recentemente a aprender MQL5. Tenho um problema com o fecho de posição. Em código: if(!m_Trade.PositionClose(_Symbol,100))//--- fechar posição pelo símbolo actual. O resultado é que a posição é invertida! Ficaria muito grato por uma dica, como posso fechar uma posição?
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------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(),")");
}
}
}
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Quero colocar um stock (futuros) no MT5 para testar o meu, como?
Nem pensar. procure uma corretora com este futuro
%))) Não há DC com estes fuchs)))) Tem de ser colado...
Que pena, que pena, tudo começou tão maravilhosamente...
Saudações a todos!
Estou a tentar implementar duas funções na minha EA, a primeira define o lucro da última troca, a segunda define muito da última troca.
Pesquisei neste site de A a Z e fiz várias funções, seguindo os exemplos em artigos e outros EAs, mas nenhum resultado - ambas as funções retornam sempre 0,00.
Aqui parece-me ser o mais próximo da variante correcta, mas o resultado é sempre 0:
Tento obter o tamanho do lote da mesma forma:
E nada funciona, os valores são sempre zero.
Eu próprio acabo de iniciar a migração de mql4 para mql5. A implementação de tais funções em mql4 não foi muito difícil, mas aqui está um impasse.
Por favor, aconselhem-me uma solução real e funcional.
...
Por favor, sugira uma solução real e funcional.
Use HistoryDealGetTicket() e HistoryDealsTotal().
E fazer a validação:
tol64 muito obrigado! Tudo está a funcionar.
Aqui está uma solução 100% funcional - a função devolve o lucro da última posição fechada na história do terminal:
Por analogia, obtemos o tamanho do lote do último comércio:
tol64 muito obrigado! Está tudo a funcionar.
...
Se também carregar em Ctrl+ no editor, receberá um código bem formatado. Isto é especialmente importante antes de carregar o exemplo para o fórum (melhor legibilidade). ))
Bom dia! Comecei recentemente a aprender MQL5. Tenho um problema com o fecho de posição. Em código: if(!m_Trade.PositionClose(_Symbol,100))//--- fechar posição pelo símbolo actual. O resultado é que a posição é invertida! Ficaria muito grato por uma dica, como posso fechar uma posição?
Registo da EA depois de a barra ter fechado abaixo do nível de paragem. Posição longa = 1 lote, posição curta = 1 lote)