Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не нашел нужную программу? Закажи ее!
Stefan Stoyanov
16057
Stefan Stoyanov 2016.04.12 06:16 

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

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

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


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

Vladimir Zubov
4306
Vladimir Zubov 2016.04.12 06:35  

Функция 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);
    }
Vitaly Muzichenko
3437
Vitaly Muzichenko 2016.04.12 10:36  
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 -позавчера
Stefan Stoyanov
16057
Stefan Stoyanov 2016.04.12 14:02  

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

Функция  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); }

  

Vladimir Zubov
4306
Vladimir Zubov 2016.04.12 14:05  
Stefan Stoyanov:

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

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

Stefan Stoyanov:

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

Stefan Stoyanov
16057
Stefan Stoyanov 2016.04.12 14:09  
Vladimir Zubov:

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

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

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

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

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

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

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

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

Вроде так 

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

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

Stefan Stoyanov
16057
Stefan Stoyanov 2016.04.12 14:54  
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); } 
Vitaly Muzichenko
3437
Vitaly Muzichenko 2016.04.12 14:57  
Stefan Stoyanov:

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

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

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

 

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий