как можно посчитать в ЕА количество закрытых ордеров

 

В сети нашел такой код :

 КАК ПОСЧИТАТЬ ОБЩУЮ ПРИБЫЛЬ ОРДЕРОВ КОТОРЫЕ БЫЛИ ЗАКРЫТЫ СЕГОДНЯ?

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


Заранее Спасибо Вам !

 

Функция GetProfitFromDateInCurrency().

Эта функция возвращает суммарный профит в валюте депозита закрытых с определённой даты позиций. Более точный отбор учитываемых позиций задаётся внешними параметрами:

  • sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.
  • op - Торговая операция, тип позиции. Допустимые значения: OP_BUYOP_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);
    }
 
Stefan Stoyanov:

В сети нашел такой код :

 Кто не подскажет как можно посчитать количество закрытых ордеров за  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  здесь не при чем

Мне нужно количество ордеров начиная с текущего время сервера на 24 часа назад

И мне нужно чужое, независимое мнение

Вроде так :


int orders()
{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); }

  

 
Stefan Stoyanov:

Ребята, мне кажется Вы не поняли.

А это кто спрашивал ?

Stefan Stoyanov:

КАК ПОСЧИТАТЬ ОБЩУЮ ПРИБЫЛЬ ОРДЕРОВ КОТОРЫЕ БЫЛИ ЗАКРЫТЫ СЕГОДНЯ?

 
Vladimir Zubov:

А это кто спрашивал ?

Это не я Здесь спрашивали

http://forum.alpari.ru/index.php?/topic/47229-ochen-nuzhna-pomosch-novichku/

Очень нужна помощь новичку
Очень нужна помощь новичку
  • 2011.05.16
  • forum.alpari.com
Ребята помогите если не сложно. Ломаю голову уже неделю. Нужно написать советник типа БигБен. Немогу описать условия входа по времени. Первый раз все работает ок. Но дальше полная лажа. Первая сделка отложенная открывается правильно (берется 7-ми часовой бар после его завершения определяется Хай и Лоу ждем ложного пробоя и открываем отложеник...
 
Stefan Stoyanov:

Ребята, мне кажется Вы не поняли.

Функция  GetProfitHistoryInCurrency  здесь не при чем

Мне нужно количество ордеров начиная с текущего время сервера на 24 часа назад

И мне нужно чужое, независимое мнение

Вроде так 

Если уж на то пошло, то ордера не могут быть с прибылью, это просто приказы. Прибыльными/Убыточными могут быть только позиции, которые были или есть в рынке.

Вы сначала продумайте что вам нужно, потом напишите, перечитайте, и если сами поняли свой вопрос - опубликуйте!  

 
Vitaly Muzichenko:

Если уж на то пошло, то ордера не могут быть с прибылью, это просто приказы. Прибыльными/Убыточными могут быть только позиции, которые были или есть в рынке.

Вы сначала продумайте что вам нужно, потом напишите, перечитайте, и если сами поняли свой вопрос - опубликуйте!  

Я ясно сказал что мне нужно

Мне нужно постороннее мнение об:


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); } 
 
Stefan Stoyanov:

Я ясно сказал что мне нужно

Мне нужно постороннее мнение об:

То есть, вас не интересует в каком участке времени мы находимся сейчас, нужно в любой момент знать сколько было позиций за последние 24 часа, даже если сейчас середина дня? Или всё-же с начала суток по сейчас?
 
Vitaly Muzichenko:
То есть, вас не интересует в каком участке времени мы находимся сейчас, нужно в любой момент знать сколько было позиций за последние 24 часа, даже если сейчас середина дня? Или всё-же с начала суток по сейчас?
Ну наконец то понял Молодец
 
Stefan Stoyanov:
Ну наконец то понял Молодец

 

Vitaly Muzichenko:
То есть, вас не интересует в каком участке времени мы находимся сейчас, нужно в любой момент знать сколько было позиций за последние 24 часа, даже если сейчас середина дня? Или всё-же с начала суток по сейчас?

Понял что?: "в любой момент знать сколько было позиций за последние 24 часа"  или  "всё-же с начала суток по сейчас"

Причина обращения: