Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зачем продавать продукты в MetaTrader AppStore? Узнай из статьи!
Camnoce6e
42
Camnoce6e 2012.05.02 22:08 

Просьба не ругаться если эта тема уже была, по крайней мере я ее не нашел.

Надо закрыть два ордера - один на GBPUSD, второй на EURUSD. Советник закрывает только тот ордер в котором окне он находится, а второй ни в какую. Профит считает по обоим ордерам нормально. Если оба ордера находятся в том же окне что и советник, он их закрывает без проблем. Может еще библиотеку надо или еще чего чтоб сов работал по нескольким парам.

Левитин Сергей В.
5155
Левитин Сергей В. 2012.05.02 22:16  
Camnoce6e:

Просьба не ругаться если эта тема уже была, по крайней мере я ее не нашел.

Надо закрыть два ордера - один на GBPUSD, второй на EURUSD. Советник закрывает только тот ордер в котором окне он находится, а второй ни в какую. Профит считает по обоим ордерам нормально. Если оба ордера находятся в том же окне что и советник, он их закрывает без проблем. Может еще библиотеку надо или еще чего чтоб сов работал по нескольким парам.


Ну а советник-то где? Мы должны угадать почему он у вас что-то не закрывает?
Cmu4
1227
Cmu4 2012.05.02 22:17  
Уберите условие Symbol() из функции выбора ордера для закрытия. Должно помочь... хотя удалённо сложно что-то сказать. Могу подправить, если не получится.
Рустам
3604
Рустам 2012.05.02 22:19  
уберите фильтр по символу.
Левитин Сергей В.
5155
Левитин Сергей В. 2012.05.02 22:22  
FAQ:
уберите фильтр по символу.

Если вспомнить
bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
то этого может оказаться мало..
Cmu4
1227
Cmu4 2012.05.02 22:24  

Мне всё это напоминает https://www.mql5.com/ru/forum/133408

XD

Camnoce6e
42
Camnoce6e 2012.05.03 02:20  

Вот код функции закрытия

void closeBuySell()
{
if(RRzakBSP==1)
{for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
{OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderTicket()==TicketBuy)
{TicketBuy2=OrderTicket();
while(TicketBuy==TicketBuy2)
{RefreshRates();
OrderClose(OrderTicket(),ZakLotBuy,NormalizeDouble(Bid,Digits),0,Lime);
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES); TicketBuy2=OrderTicket();
}}
if (OrderType() == OP_SELL && OrderTicket()==TicketSell)
{TicketSell2=OrderTicket();
while(TicketSell==TicketSell2)
{RefreshRates();
OrderClose(OrderTicket(),ZakLotSell,NormalizeDouble(Ask,Digits),0,Lime);
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES); TicketSell2=OrderTicket();
}}}}}

TicketBuy и TicketSell задаются прямо в сове.

Alexandr Bryzgalov
23902
Alexandr Bryzgalov 2012.05.03 03:39  
Camnoce6e:

Вот код функции закрытия

void closeBuySell()
{
if(RRzakBSP==1)
{for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
{OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderTicket()==TicketBuy)
{TicketBuy2=OrderTicket();
while(TicketBuy==TicketBuy2)
{RefreshRates();
OrderClose(OrderTicket(),ZakLotBuy,NormalizeDouble(Bid,Digits),0,Lime);
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES); TicketBuy2=OrderTicket();
}}
if (OrderType() == OP_SELL && OrderTicket()==TicketSell)
{TicketSell2=OrderTicket();
while(TicketSell==TicketSell2)
{RefreshRates();
OrderClose(OrderTicket(),ZakLotSell,NormalizeDouble(Ask,Digits),0,Lime);
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES); TicketSell2=OrderTicket();
}}}}}

TicketBuy и TicketSell задаются прямо в сове.

ага, и ни чё что будет закрывать по ценам текущего инструмента
Alexandr Bryzgalov
23902
Alexandr Bryzgalov 2012.05.03 03:45  
      int tot1=OrdersTotal();
      for(int i1=totl-1;i1>=0;i1--)//проверяем соответствие нашего списка с таблицей ордеров
      {
         if(OrderSelect(i1,SELECT_BY_POS))//закроет все ордера
         //если ордер в списке есть, а в таблице его не обнаружено необходимо его удалить
         {
            //закрываем позицию
            if(OrderType()==OP_BUY)
            {
               RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage);
               continue;
            }
            if(OrderType()==OP_SELL)
            {
               RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage);
               continue;
            }
         }
      }
Yury Reshetov
13498
Yury Reshetov 2012.05.03 03:58  
Camnoce6e:

Вот код функции закрытия

OrderClose(OrderTicket(),ZakLotBuy,NormalizeDouble(Bid,Digits),0,Lime);


OrderClose(OrderTicket(),ZakLotSell,NormalizeDouble(Ask,Digits),0,Lime);


  1. Научитесь для начала пользоваться SRC для вставки кода, чтобы людям зрение не портить (комбинация клавиш Ctrl+Alt+M)
  2. Для чайников есть специальная ветка https://www.mql5.com/ru/forum/138609
  3. Аsk и Bid для любого инструмента после OrderSelect() можно получить через MarketInfo(OrderSymbol(), MODE_ASK) и MarketInfo(OrderSymbol(), MODE_BID)
Camnoce6e
42
Camnoce6e 2012.05.03 05:05  
Всем СПАСИБО. Разобрался, все заработало. И не судите вы уж новичков, то что для вас очевидно, для новичка огромная проблема.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий