Уважаемые подскажите. Мне нужно получить сумарный профит в пунктах всех закрытых позиций с определенным magic.
У Кима есть функции GetProfitOpenPosInPoint и TakeProfitLastClosePos
Взяв за основу эти две фунции я попыталась написать функцию GetProfitClosePosInPoint
Она работает но только дает профит для одной последней позиции. А у Кима, если я поняла, функция GetProfitOpenPosInPoint дает сумарный профит открытых позиций.
Подскажите, как исправить функцию чтобы она давала сумарный профит. Или хотябы объясните, что в функции Кима GetProfitOpenPosInPoint дает прибавление (сумирует) профит.
Я так и думала. А почему тогда в моей версии сумма не плюсуется хотя у меня тоже pr+= ?
Я так и думала. А почему тогда в моей версии сумма не плюсуется хотя у меня тоже pr+= ?
как вы вызываете функцию? с какими параметрами?
Вообще у меня задача сравнить убыток открытых позиций ( magic1) с прибылью закрытых ( magic2). И если их сумма равна или больше нуля, то закрыть позиции( magic1) .
Lost1 = GetProfitOpenPosInPoint(NULL, -1, magic1);
Prof2 = GetProfitClosePosInPoint(NULL, -1, magic2);
if (Lost1+Prof2 >=0)
{ClosePositions(NULL, -1, magic1);}
суммарный профит открытых
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) { double p=0; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { p+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } return(p); }
суммарный профит закрытых
double GetProfitClosePosInCurrency(string sy="", int op=-1, int mn=-1) { double p=0; int i, k=OrdersHistoryTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { p+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } return(p); }
а у вас магик точно разный? позиции по одному инструменту?
Lost1 = GetProfitOpenPosInPoint(NULL, -1, magic1);
magic1 должен быть int, а не string, т.е должно быть число -1,0, 1,2,3 и т.д
Спасибо большое
Да у меня magic1 и magic2 простые числа. Инструмент один. Мне нужно сравнение в пунктах, а не в Currency. Хотя наверное можно и в Currency сравнивать?
Если в пунктах то нужно разделить на p?
double p; p=MarketInfo(OrderSymbol(), MODE_POINT); if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01; p+=(OrderProfit()+OrderCommission()+OrderSwap())/p;
Спасибо большое
Да у меня magic1 и magic2 простые числа. Инструмент один. Мне нужно сравнение в пунктах, а не в Currency. Хотя наверное можно и в Currency сравнивать?
сравнивать можно хоть в попугаях
работает?
я ещё на работе...:) не могу проверить. сегодня вечером попробую
При получении профита закрытых позиций лучше ограничивать выборку датой, с которой смотреть закрытые позиции. В качестве примера GetProfitFromDateInCurrency()
если сегодня открытые позиции с магик 3,
а вчерашние закрытые с магик 2 , и сравниваться будут по магику
то в ваших функциях в данном случае, ограничение по дате, ИМХО излишне
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые подскажите. Мне нужно получить сумарный профит в пунктах всех закрытых позиций с определенным magic.
У Кима есть функции GetProfitOpenPosInPoint и TakeProfitLastClosePos
Взяв за основу эти две фунции я попыталась написать функцию GetProfitClosePosInPoint
Она работает но только дает профит для одной последней позиции. А у Кима, если я поняла, функция GetProfitOpenPosInPoint дает сумарный профит открытых позиций.
Подскажите, как исправить функцию чтобы она давала сумарный профит. Или хотябы объясните, что в функции Кима GetProfitOpenPosInPoint дает прибавление (сумирует) профит.