![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да не, я не про то как у Вас уже написано.
Расскажите словами - расчет профита по каким закрытым ордерам Вас интересует
- за день
- убыточные
- последний ордер
или как еще?
Серию опишите
Серия последних закрытых ордеров "за сейчас"
Серия последних закрытых ордеров "за сейчас"
То есть, нужна информация по последней закрытой серии ордеров, если я правильно понимаю?
Для реализации такого подхода, нужно сначала заполнять массив тикетов ордеров при каждом успешном закрытии а потом вытащить инфу по закрытым ордерам в том виде, который Вам нужен
Сами сможете?
Попробуйте
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
Попробуйте
Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(LastProfit);
}
А если не закроется в одно и то же время?
не то чуток
А если при подаче приказа на закрытии запомнить t, тогда будет норм.
но эта строчка
не нужна
Вытащит общую сумму по всей серии
Но мадам хочет более подробную инфу, как я понял из первого поста
А если не закроется в одно и то же время?
То есть, нужна информация по последней закрытой серии ордеров, если я правильно понимаю?
Для реализации такого подхода, нужно сначала создать массив тикетов ордеров при успешном закрытии а потом вытащить инфу по закрытым ордерам
Сами сможете?
Лучше примером подскажите
Т.е.
и дальше сравнить ?
Лучше примером подскажите
Т.е.
и дальше сравнить ?
Без проблем
Сейчас осталось уточнить - каким образом должна выглядеть информация по закрытым ордерам серии?
Перечисление потянет или сумму поделить на + и -?
Есть такой индикатор
i-Profit
Выводит инфу, текущей прибыли, за сегодня, за неделю, месяц , год.
Лучше примером подскажите
Вот как вариант:
GlobalVariableSet(GetGlobalVariableName("LastProfit"), TimeCurrent()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}
Дальше уже собственно всё остальное
//| Возвращает суммарный профит в валюте депозита серии закрытых позиций |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
return(LastProfit);
}
//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
if(symb=="0") { symb=Symbol();}
if(!MQLInfoInteger(MQL_TESTER)) {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_"+name);
} else {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_tester"+"_"+name);
}}
Ну и получим даже тогда, когда перезагрузим терминал
{
Comment( LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))) );
}
Есть такой индикатор
i-Profit
Выводит инфу, текущей прибыли, за сегодня, за неделю, месяц , год.