Logo

Вход

Войти с помощью соц. сетей
Пока нет объявлений.
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
06.07.2014, 15:28
Лучший ответ
Выплачено: 15893 RUB
Сообщение от mixey Посмотреть сообщение
На одном сайте в видео уроке нашел следующую функцию:
Убери массив и конкретно укажи тир ордера который нужно считать.
20.01.2015, 20:29
Лучший ответ
Выплачено: 1362 RUB
попробуй так:
Объяви в самом начале кода, массив:
MQL код:
void OnTick()
{
int random;
int ord[8];
....


перед условием открытия ордеров вызови функцию подсчета ордеров:

MQL код:
   Uchet_orderov(Magic,Symbol(),ord);
...


а после кода советника идет такая функция подсчета ордеров:

MQL код:
// Учет ордеров
void Uchet_orderov(int Mag,string Symb,int &mas[8])
{
ArrayInitialize(mas,0);
//mas[0] - покупки
//mas[1] - продажи
//mas[2] - buylimit
//mas[3] - selllimit
//mas[4] - buystop
//mas[5] - sellstop
//mas[6] - сделки
//mas[7] - отложки
int tip;
for (int pos=0; pos<OrdersTotal(); pos++)
{
OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
tip=OrderType();
switch(tip)
{
case 0:{mas[0]++;mas[6]++;break;}
case 1:{mas[1]++;mas[6]++;break;}
case 2:{mas[2]++;mas[7]++;break;}
case 3:{mas[3]++;mas[7]++;break;}
case 4:{mas[4]++;mas[7]++;break;}
case 5:{mas[5]++;mas[7]++;break;}
}
}
}
23.01.2015, 13:10
Лучший ответ
Выплачено: 99793 RUB
Сообщение от pedashyuriy Посмотреть сообщение
а после кода советника идет такая функция подсчета ордеров:
Можете облегчить себе написание/чтение кода и использовать константы, тогда не придется описывать отдельно все элементы массива.

MQL код:
int Uchet_orderov(int &mas[8])
{
ArrayInitialize(mas,0);

int tip,
OP_DEALS = 6,
OP_ORDERS = 7;
for (int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
tip=OrderType();
switch(tip)
{
case OP_BUY: {mas[OP_BUY]++; mas[OP_DEALS]++; break;}
case OP_SELL: {mas[OP_SELL]++; mas[OP_DEALS]++; break;}
case OP_BUYLIMIT: {mas[OP_BUYLIMIT]++; mas[OP_ORDERS]++; break;}
case OP_SELLLIMIT: {mas[OP_SELLLIMIT]++; mas[OP_ORDERS]++; break;}
case OP_BUYSTOP: {mas[OP_BUYSTOP]++; mas[OP_ORDERS]++; break;}
case OP_SELLSTOP: {mas[OP_SELLSTOP]++; mas[OP_ORDERS]++; break;}
}
}
}
return(0);
}
  • #1 Свернуть

    Учет ордеров по magic

    На одном сайте в видео уроке нашел следующую функцию:
    PHP код:
    void Uchet_orderov (int Magicstring Symbint &mas[8])
    {
    ArrayInitialize(mas,0);
    //mas[0] - покупки
    //mas[1] - покупки 
    //mas[2] - buylimit
    //mas[3] - selllimit
    //mas[4] - buystop
    //mas[5] - sellstop
    //mas[6] - cделки
    //mas[7] - отложки

             
             
    int tip;
    for(
    int pos=OrdersTotal()-1pos>=0pos--)
    {
    if (
    OrderSelect(posSELECT_BY_POSMODE_TRADES)&&OrderMagicNumber()==Magic&&OrderSymbol()==Symb&&OrderTicket()!=tiket)
    {


    tip=OrderType();
    switch(
    tip)
    {
    case 
    0:{mas[0]++;mas[6]++;break;}
    case 
    1:{mas[1]++;mas[6]++;break;}
    case 
    2:{mas[2]++;mas[7]++;break;}
    case 
    3:{mas[3]++;mas[7]++;break;}
    case 
    4:{mas[4]++;mas[7]++;break;}
    case 
    5:{mas[5]++;mas[7]++;break;}
    }
    }
    continue;

    }

    Попробовал применить, но по каким то причинам не выполняется учет по magic номеру т.е. если удаляю OrderMagicNumber()==Magic - учитываются все ордера, но если ее добавляю, то ордеров 0. P.S. ордера с данным magic номером созданы.
    В советнике использую так:
    PHP код:
    extern int   MagicNumber 2014;
    int orders[8];
    Uchet_orderov(MagicNumberSymbol(), orders);
    Comment ("Покупки: " orders[0] + "Продажи: " orders[1]); 
    В чем может быть ошибка и как ее исправить?
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от mixey Посмотреть сообщение
    На одном сайте в видео уроке нашел следующую функцию:
    Убери массив и конкретно укажи тир ордера который нужно считать.

    Комментарий

    • #3 Свернуть

      попробуй так:
      Объяви в самом начале кода, массив:
      MQL код:
      void OnTick()
      {
      int random;
      int ord[8];
      ....


      перед условием открытия ордеров вызови функцию подсчета ордеров:

      MQL код:
         Uchet_orderov(Magic,Symbol(),ord);
      ...


      а после кода советника идет такая функция подсчета ордеров:

      MQL код:
      // Учет ордеров
      void Uchet_orderov(int Mag,string Symb,int &mas[8])
      {
      ArrayInitialize(mas,0);
      //mas[0] - покупки
      //mas[1] - продажи
      //mas[2] - buylimit
      //mas[3] - selllimit
      //mas[4] - buystop
      //mas[5] - sellstop
      //mas[6] - сделки
      //mas[7] - отложки
      int tip;
      for (int pos=0; pos<OrdersTotal(); pos++)
      {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      tip=OrderType();
      switch(tip)
      {
      case 0:{mas[0]++;mas[6]++;break;}
      case 1:{mas[1]++;mas[6]++;break;}
      case 2:{mas[2]++;mas[7]++;break;}
      case 3:{mas[3]++;mas[7]++;break;}
      case 4:{mas[4]++;mas[7]++;break;}
      case 5:{mas[5]++;mas[7]++;break;}
      }
      }
      }

      Комментарий

      • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
      • #4 Свернуть

        Сообщение от pedashyuriy Посмотреть сообщение
        а после кода советника идет такая функция подсчета ордеров:
        Можете облегчить себе написание/чтение кода и использовать константы, тогда не придется описывать отдельно все элементы массива.

        MQL код:
        int Uchet_orderov(int &mas[8])
        {
        ArrayInitialize(mas,0);

        int tip,
        OP_DEALS = 6,
        OP_ORDERS = 7;
        for (int i=0; i<OrdersTotal(); i++)
        {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
        tip=OrderType();
        switch(tip)
        {
        case OP_BUY: {mas[OP_BUY]++; mas[OP_DEALS]++; break;}
        case OP_SELL: {mas[OP_SELL]++; mas[OP_DEALS]++; break;}
        case OP_BUYLIMIT: {mas[OP_BUYLIMIT]++; mas[OP_ORDERS]++; break;}
        case OP_SELLLIMIT: {mas[OP_SELLLIMIT]++; mas[OP_ORDERS]++; break;}
        case OP_BUYSTOP: {mas[OP_BUYSTOP]++; mas[OP_ORDERS]++; break;}
        case OP_SELLSTOP: {mas[OP_SELLSTOP]++; mas[OP_ORDERS]++; break;}
        }
        }
        }
        return(0);
        }
        Правила форума | КИСА | Акция «Деньги за посты» | Как вставить картинку?

        Комментарий

        X