[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 429

 
Dimka-novitsek:

Доброгодня!!!      Я видиму что-то не понял с массивами, что ли.  Функция не вносит в массив профит!! Он пре любых обстоятельствахноль. Ноль и все!

int Orderasthitaem[6][3];
void Orderasthitaem()
{
 int BUY = 0, SELL = 0, BUYLIMIT = 0, BUYSTOP = 0, SELLLIMIT = 0, SELLSTOP = 0;
 double BUY_Profit = 0, SELL_Profit = 0;
 for (int i = 0; i < OrdersTotal(); i++)
  {
   OrderSelect(i, SELECT_BY_POS);  
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
    {            
     int type = OrderType();
     if (type == 0) {BUY++; BUY_Profit = BUY_Profit + OrderProfit();}
     if (type == 1) {SELL ++; SELL_Profit = SELL_Profit + OrderProfit();}
     if (type == 2) {BUYLIMIT++;}
     if (type == 3) {SELLLIMIT++;}
     if (type == 4) {BUYSTOP++;}
     if (type == 5) {SELLSTOP++;}}}
       
     Orderasthitaem[0][1] = BUY;
     Orderasthitaem[0][2] = BUY_Profit;
     Orderasthitaem[1][1] = SELL;
     Orderasthitaem[1][2] = SELL_Profit;
     Orderasthitaem[2][1] = BUYLIMIT;
     Orderasthitaem[3][1] = SELLLIMIT;
     Orderasthitaem[4][1] = BUYSTOP;
     Orderasthitaem[5][1] = SELLSTOP;        
    }
  }
}
Функция.

Обиявление вне всех функций

 
Спасибо!!!  
 

А почему массив типа инт? А вдруг профит будет дробный, а хотя вряд л это существенно...  Да, видимо доубле не нужен! 

 

Я щас себе его переобьявлю, попробую. Но неужели что-тоизменится? Почему же не рботало?  Щас попробую.. 

 
ruslanchik:
Если тикет ордера хранится на сервере брокера, то  где хранится маджик и коммент ордеров?

на сервере брокера.
 
А, вижу что как вы присваиваете элементам массива. Ага, спасибо!!!!!!!!
 
Добрый день, сейчас изучаю учебник по MQL4  Сергея Ковалева и пока не нашел как обращаться к массивам-таймсериям других валютных пар. Т.е. необходимо, чтобы в один советник подгружались массивы-таймсерии нескольких валютных пар. Знаю, что к некоторым данным можно обращаться с помощью функции MarketInfo(), только проблема в том, что в идентификаторах запроса нет ни close, ни других параметров ценовых рядов. Подскажите где можно почитать способы организации работы (если есть) с массивами-таймсерияи нескольких инструментов или, может как возможно обойти это ограничение.
 
Я собственно ещё не компилировал и ничего не пробовал, только смотрю. ТАкм все же дело в том, что при выходе из циклов, значения BUY_Profit и прю переменных не сохраняются?  Так ведь программа выполняется последовательно, или всё же не сохраняются?
 
Dimka-novitsek:
Я собственно ещё не компилировал и ничего не пробовал, только смотрю. ТАкм все же дело в том, что при выходе из циклов, значения BUY_Profit и прю переменных не сохраняются?  Так ведь программа выполняется последовательно, или всё же не сохраняются?
Dimka-novitsek:
А, вижу что как вы присваиваете элементам массива. Ага, спасибо!!!!!!!!

Тип любой можно. Просто не заметил, что одна из переменных double. Нужен double - ставь double.

Работает? 

 

Я только смотрю.  И... ООООООО!!!!!!    Я у себя делал так , обьявлял такint Orderasthitaem[6][2];  в элементе два маассива, то есть вы поняли, а обращался уже к третьему Orderasthitaem[0,2] !!!!!!!

Уверен, вот собака порылась!!!!!!!!!!!  ОООО!!! 

 
Dimka-novitsek:
Я собственно ещё не компилировал и ничего не пробовал, только смотрю. ТАкм все же дело в том, что при выходе из циклов, значения BUY_Profit и прю переменных не сохраняются?  Так ведь программа выполняется последовательно, или всё же не сохраняются?

...можно ещё так:

double Orderasthitaem[6][2];
void Orderasthitaem()
{
    double ld_Profit = 0.;
    int li_Total = OrdersTotal();
    ArrayInitialize (Orderasthitaem, 0.);
    if (li_Total == 0) return;
    for (int i = 0; i < OrdersTotal(); i++)
    {
        OrderSelect (i, SELECT_BY_POS);  
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
        {            
            int type = OrderType();
            ld_Profit = OrderProfit();
            Orderasthitaem[type][0]++;
            if (type > 1) continue;
            Orderasthitaem[type][1] += ld_Profit;
        }
    }
}
- это как кому нравится.
Причина обращения: