SENNSK

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ



Дополнить советник

Прошу советник дополнить функцией которая выводит в углу терминала количество пар на которых открыты этим советником ордера. Не перечень валютных пар, а количество пар.
Открытые вручную ордера не должны учитываться.
zakaz.opentraders.ru/53288.html
  • +1
  • Просмотров: 1613
  • 9 мая 2020, 04:25
  • SENNSK
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник-усреднитель для МТ5
Следующая запись в группе  
Робот полуавтомат для фибоканала
08 мая 2020
09 мая 2020

Комментарии (10)

+
0
При подсчёте ордеров перед строчкой «ретурн()» поставь строчку «сомент (ордеров столькото);»
Благодарностей не нужно
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 9 мая 2020, 04:51
+
0
Мне количество ордеров не надо.
avatar

  9  SENNSK Автор Сообщений: 59

  • 9 мая 2020, 06:08
+
0
А что тебе мешает выдать через эту функцию остальное? Я знаю что мешает: лень
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 9 мая 2020, 10:07
+
0
вот допустим открыты:

евро 0.1
евро 0.1
евро 0.1

фунт 0.1
фунт 0.1

ена 0.1
ена 0.1
ена 0.1

какой будет алгоритм подсчета числа пар? я пока не представляю. а за такие я не берусь когда сразу решение не просматривается
avatar

  34  AM2 Сообщений: 15889 - Андрей

  • 9 мая 2020, 10:19
+
+1
Да я тем более не представляю. Я увидел вот этот топик где на скрине вывод пар mql.opentraders.ru/34924.html
Както их не поотдельности а суммировать можно?
Редактирован: 9 мая 2020, 15:01
avatar

  9  SENNSK Автор Сообщений: 59

  • 9 мая 2020, 15:00
+
0
Ну, можешь ко мне отправить, я много не возьму.

И с Праздником Победы!!! Ё!!!

Вопрос решается в цикле подсчёта ордеров.

Если ордер не равен не одному символу из массива
Массив[i+1]=(strins)Название;
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 9 мая 2020, 23:30
+
+1
Написал функцию. Дальше надо уже онлайн отлаживать. На 15-е




//+------------------------------------------------------------------+
//|                                                      Counter.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

string symbols[] = {"EURUSD","EURUSD","EURUSD","GBPUSD","GBPUSD","USDJPY","USDCHF","USDCAD"}; // база
string symb[]; // массив

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|  Проверка наличия символа в массиве                              |
//+------------------------------------------------------------------+
bool Proverka(string s)
  {
   for(int i=0; i<ArraySize(symb); i++)
     {
      if(s==symb[i])
         return(true);
     }
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   /*

   1. берем 1-й символ c базы
   2. заносим его в массив
   3. берем 2-й символ
   4. проверяем есть ли он в массиве
   5. если нет заносим

   */

   ArrayResize(symb,1);

   symb[0]=symbols[0];

   for(int i=0; i<ArraySize(symbols); i++)
     {
      if(!Proverka(symbols[i]))
        {
         ArrayResize(symb,ArraySize(symb)+1);
         symb[ArraySize(symb)-1]=symbols[i];
        }
     }

   Comment("\n Count: ",ArraySize(symb));
  }
//+------------------------------------------------------------------+


Редактирован: 10 мая 2020, 12:31
avatar

  34  AM2 Сообщений: 15889 - Андрей

  • 10 мая 2020, 11:46
+
0
Андрей, а не проще так?
//+------------------------------------------------------------------+
//|                                             NumberOfOpenPars.mq4 |
//|                     Copyright © 2020, Andrei Vladimirovich Nosar |
//|                                            mr.andrju81@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Andrei Vladimirovich Nosar"
#property link      "mr.andrju81@gmail.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//--- input parameters
input int      Magic=-1;

//------- Глобальные переменные индикатора ------------------------------------+
string    sotOS[];             // пары ордеров   OrderSymbol()
string    sotS[];             // пары
bool   sotFirstRun=True;     // Флаг первого прогона
//+----------------------------------------------------------------------------+
//|  Запоминает текущие операции в массиве.                                    |
//+----------------------------------------------------------------------------+
void MemCurrOP() 
{
  int i, k=OrdersTotal();

  ArrayResize(sotOS, k);
  for (i=0; i<k; i++) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic) 
    {
      sotOS[i]=OrderSymbol();
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Выполняет поиск элемента массива по значению                              |
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    e - значение элемента                                                   |
//+----------------------------------------------------------------------------+
bool ArraySearchStr(string& m[], string e) 
{
  for (int i=0; i<ArraySize(m); i++) 
  {
    if (m[i]==e) return(true);
  }
  return(false);
}

//+----------------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  sotFirstRun=True;     // Флаг первого прогона
  Comment("");
  start();
   
//---
   return(INIT_SUCCEEDED);
  }
//+----------------------------------------------------------------------------+
//|  Expert deinitialization function                                          |
//+----------------------------------------------------------------------------+
void deinit() { Comment(""); }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() 
{
   if (sotFirstRun) { MemCurrOP(); sotFirstRun=False; }
   ArrayResize(sotS,0);
   int i, k=OrdersTotal();
  for (i=0; i<k; i++) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic) 
    {
      if(ArraySearchStr(sotOS,OrderSymbol())==true && ArraySearchStr(sotS,OrderSymbol())==false)
         {
            string para=OrderSymbol();
            int sizePara = ArraySize(sotS); ArrayResize(sotS, sizePara+1);
            sotS[sizePara] = para;
         }
    }
  }
   Comment("Количество открытых пар = "+IntegerToString(ArraySize(sotS)));
 MemCurrOP();
}
//+------------------------------------------------------------------+

Редактирован: 10 мая 2020, 14:36
avatar

  18  Andrju81 Сообщений: 245 - Андрей

  • 10 мая 2020, 14:32
+
0
Пожалуйста, пробуйте — www.opentraders.ru/downloads/2655/
avatar

  18  Andrju81 Сообщений: 245 - Андрей

  • 10 мая 2020, 14:20
+
0
<code>
  for (i=0; i<k; i++) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic) 
    {
      sotOS[i][1]=++;
      
    }
  }</code>

А потом простое сложение: если больше 0 то х++
Редактирован: 10 мая 2020, 21:51
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 10 мая 2020, 18:44

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари