SENNSK

 
Уровень 10

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


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

Рейтинг 2156



РЕКОМЕНДУЮ



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

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

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

Брокер для ваших роботов, 15 лет на рынке

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

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

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

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

  10  SENNSK Автор Сообщений: 65

  • 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

  35  AM2 Сообщений: 16537 - Андрей

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

  10  SENNSK Автор Сообщений: 65

  • 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

  35  AM2 Сообщений: 16537 - Андрей

  • 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

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