Функция GetProfitFromDateInCurrency().
Эта функция возвращает суммарный профит в валюте депозита закрытых с определённой даты позиций. Более точный отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
- dt - Дата и время в секундах с 1970 года. Значение по умолчанию - 0 означает учёт всех доступных в истории позиций.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает суммарный профит в валюте депозита | //| закрытых с определённой даты позиций | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) | //+----------------------------------------------------------------------------+ double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0) { 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) { if (dt<OrderCloseTime()) { p+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } } return(p); }
В сети нашел такой код :
Кто не подскажет как можно посчитать количество закрытых ордеров за 24 ч назад ,начиная с текущего время сервера в МТ4
Заранее Спасибо Вам !
//=============================================================================================== //---------------------- Возвращает профит за выбранный период с истории -----------------------+ //=============================================================================================== double GetProfitHistoryInCurrency(string symb="0", int index=-1, int mg=-1) { if(symb=="0") { symb=Symbol();} datetime DailyStartTime=iTime(symb,PERIOD_D1,index); double DailyProfit=0; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if((OrderSymbol()==symb || symb=="") && (mg<0 || OrderMagicNumber()==mg)) { if((OrderCloseTime()>=DailyStartTime && OrderCloseTime()<DailyStartTime+86400) || index<0) DailyProfit+=(OrderProfit()+OrderCommission()+OrderSwap()); }}} return(DailyProfit); }
Использование: GetProfitHistoryInCurrency(_Symbol, 0, Magic); // 0 - сегодня, 1 - вчера, 2 -позавчера
Ребята, мне кажется Вы не поняли.
Функция GetProfitHistoryInCurrency здесь не при чем
И мне нужно чужое, независимое мнение
Вроде так :
{double orders = 0 ;
for ( i = OrdersHistoryTotal () - 1; i >= 0; i--)
{if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)==true)
if (OrderCloseTime () >TimeCurrent() - 24*3600)
{orders ++ ; }
else {break ; } }
Print ("orders за сегодня: ", orders) ;
//----
return(0); }
Ребята, мне кажется Вы не поняли.
А это кто спрашивал ?
КАК ПОСЧИТАТЬ ОБЩУЮ ПРИБЫЛЬ ОРДЕРОВ КОТОРЫЕ БЫЛИ ЗАКРЫТЫ СЕГОДНЯ?
А это кто спрашивал ?
Это не я Здесь спрашивали
http://forum.alpari.ru/index.php?/topic/47229-ochen-nuzhna-pomosch-novichku/

- 2011.05.16
- forum.alpari.com
Ребята, мне кажется Вы не поняли.
Функция GetProfitHistoryInCurrency здесь не при чем
И мне нужно чужое, независимое мнение
Вроде так
Если уж на то пошло, то ордера не могут быть с прибылью, это просто приказы. Прибыльными/Убыточными могут быть только позиции, которые были или есть в рынке.
Вы сначала продумайте что вам нужно, потом напишите, перечитайте, и если сами поняли свой вопрос - опубликуйте!
Если уж на то пошло, то ордера не могут быть с прибылью, это просто приказы. Прибыльными/Убыточными могут быть только позиции, которые были или есть в рынке.
Вы сначала продумайте что вам нужно, потом напишите, перечитайте, и если сами поняли свой вопрос - опубликуйте!
Я ясно сказал что мне нужно
Мне нужно постороннее мнение об:
int orders() {int order = 0 ; for ( i = OrdersHistoryTotal () - 1; i >= 0; i--) {if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)==true) if (OrderCloseTime () >TimeCurrent() - 24*3600) {order ++ ; }else {break ; } } return(0); }
Я ясно сказал что мне нужно
Мне нужно постороннее мнение об:
То есть, вас не интересует в каком участке времени мы находимся сейчас, нужно в любой момент знать сколько было позиций за последние 24 часа, даже если сейчас середина дня? Или всё-же с начала суток по сейчас?
Ну наконец то понял Молодец
То есть, вас не интересует в каком участке времени мы находимся сейчас, нужно в любой момент знать сколько было позиций за последние 24 часа, даже если сейчас середина дня? Или всё-же с начала суток по сейчас?
Понял что?: "в любой момент знать сколько было позиций за последние 24 часа" или "всё-же с начала суток по сейчас"

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В сети нашел такой код :
КАК ПОСЧИТАТЬ ОБЩУЮ ПРИБЫЛЬ ОРДЕРОВ КОТОРЫЕ БЫЛИ ЗАКРЫТЫ СЕГОДНЯ?
int start()
{double profit = 0 ;
for (int i = OrdersHistoryTotal () - 1; i >= 0; i--)
{OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) ;
if (TimeDayOfYear (OrderCloseTime ()) == DayOfYear ())
// или так - if (iBarShift (NULL, 1440, OrderCloseTime ()) == 0)
/ /или так - if (iBarShift (NULL, PERIOD_D1, OrderCloseTime ()) == 0)
{profit += OrderProfit () + OrderCommission () + OrderSwap () ; }else {break ; } }
Print ("Прибыль за сегодня: ", DoubleToStr (profit, 2)) ; return(0); }
Кто не подскажет как можно посчитать количество закрытых ордеров за 24 ч назад ,начиная с текущего время сервера в МТ4
Заранее Спасибо Вам !