Скачать MetaTrader 5

Пожалуйста, помогите с выявлением проблемы

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появились классы?
Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:21 

Советник был запущен на 20 валютных парах, по условиям не должны были открыты новые сделки если не прошел один день. На двух парах проблема. Помогите пожалуйста.

void OpenPos()
  {

   if(OneDayDeal())
     {
      if((iRSI(NULL,0,21,PRICE_CLOSE,0)<50) && (iRSI(NULL,0,21,PRICE_CLOSE,1)<50))
        {
         PutOrder(1,Bid);
        }

      if((iRSI(NULL,0,21,PRICE_CLOSE,0)>50) && (iRSI(NULL,0,21,PRICE_CLOSE,1)>50))
        {
         PutOrder(0,Ask);
        }
     }
  }
bool OneDayDeal()
  {
   bool result=true;
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()<2 && TimeDay(OrderCloseTime())==Day())
           {
            result=false;
           }
        }
     }
   return(result);
  }
new-rena
3372
new-rena 2016.11.03 17:25  
Izzatilla Ikramov:

Советник был запущен на 20 валютных парах, по условиям не должны были открыты новые сделки если не прошел один день. На двух парах проблема. Помогите пожалуйста.

.......

Вот это :  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

будет корректно работать, если на вкладке "История счета" будут находиться обрабатываемые ордера

Поэтому желательно по правой кнопке мышки во внутрях этой вкладки выбирать "Вся история"

Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:27  
new-rena:

.......

Вот это :  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

будет корректно работать, если на вкладке "История счета" будут находиться обрабатываемые ордера

Поэтому желательно по правой кнопке мышки во внутрях этой вкладки выбирать "Вся история"

вся история отображается как нужно.
new-rena
3372
new-rena 2016.11.03 17:31  
Izzatilla Ikramov:
вся история отображается как нужно.

Дальше тогда едем.

А где у Вас цикл перебора ордеров?

Ну типа

bool OneDayDeal()
  {
     bool result=true;

     for (i =OrdersHistoryTotal(); i>=0; i--)
      {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()<2 && TimeDay(OrderCloseTime())==Day())result=false;
      }

     return(result);
  }

Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:44  
new-rena:

Дальше тогда едем.

А где у Вас цикл перебора ордеров?

Ну типа

bool OneDayDeal()
  {
     bool result=true;

     for (i =OrdersHistoryTotal(); i>=0; i--)
      {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()<2 && TimeDay(OrderCloseTime())==Day())result=false;
      }

     return(result);
  }

Как я понимаю, когда советник работал на одной паре  - проблем не возникало, а когда я запустил не несколько парах - появилась проблема из за того, что перебор осуществлял только по последним сделкам?
Vitaly Muzichenko
3428
Vitaly Muzichenko 2016.11.03 17:45  

Позиция может быть открыта и ещё не закрыта, поэтому сигнал игнорируется, а вы смотрите только по закрытым

if(OrderType()<2 && TimeDay(OrderCloseTime())==Day())
Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:46  
for (int i =OrdersHistoryTotal(); i>=0; i--)   нужно ли добавить int?
Vitaly Muzichenko
3428
Vitaly Muzichenko 2016.11.03 17:48  
Izzatilla Ikramov:
for (int i =OrdersHistoryTotal(); i>=0; i--)   нужно ли добавить int?

да, нужен, если перед этим не инициализировали переменную i

Посмотрите сюда

Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:48  
Vitaly Muzichenko:

Позиция может быть открыта и ещё не закрыта, поэтому сигнал игнорируется, а вы смотрите только по закрытым

if(OrderType()<2 && TimeDay(OrderCloseTime())==Day())
Для этого есть ограничение на количество открытых сделок.
new-rena
3372
new-rena 2016.11.03 17:50  
Izzatilla Ikramov:
for (int i =OrdersHistoryTotal(); i>=0; i--)   нужно ли добавить int?
Да, если "int i" еще не было нигде сверху
Izzatilla Ikramov
13013
Izzatilla Ikramov 2016.11.03 17:52  
Спасибо Вам!
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий