В MT4 есть функция закрытие перекрытых ордеров. Если не ошибаюсь
это выглядит примерно так: один ордер закрываеться с потерей
спреда, а другой противоположно направленный с одинаковым количеством
лотов, закраваеться без потери спреда. Можно ли в эксперте прописать
такой способ? В описаниях MQL поискал, вроде не чего подобного нет.
Может ктото уже сталкивался уже с этим, если не трудно подскажите пожалуйста.
- Чем отличаются разные варианты закрытия позиции?
- Возможность перекрытия противоположных ордеров в МТ4.
- Полезные функции от KimIV
conys:
Смотрите функциюbool OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE)
Valmars:
bool OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE)
Извените, мне аж стыдно стало. Честно говорю не видел... Спасибо. :)
А мне нет.
Есть у кого функция закрытия всех перекрытых ордеров?
eevviill:
Вроде в базе должно быть! Правда, раньше в 4-ке видел.
А мне нет.
Есть у кого функция закрытия всех перекрытых ордеров?
Поиск рулит! См. Решетов ещё в 2008 году выложил: https://www.mql5.com/ru/forum/112224/page2#116139 Удачи!
borilunad:
Поиск рулит! См. Решетов ещё в 2008 году выложил: https://www.mql5.com/ru/forum/112224/page2#116139 Удачи!
Поиск рулит! См. Решетов ещё в 2008 году выложил: https://www.mql5.com/ru/forum/112224/page2#116139 Удачи!
Да это вообще эврика!
int total = OrdersTotal(); int buycad = -1; int sellcad = -1; int buychf = -1; int sellchf = -1; int buyjpy = -1; int selljpy = -1; for (int i = 0; i < total; i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == "USDCAD") { if (OrderType() == OP_BUY) { buycad = OrderTicket(); } else { sellcad = OrderTicket(); } } if (OrderSymbol() == "USDCHF") { if (OrderType() == OP_BUY) { buychf = OrderTicket(); } else { sellchf = OrderTicket(); } } if (OrderSymbol() == "USDJPY") { if (OrderType() == OP_BUY) { buyjpy = OrderTicket(); } else { selljpy = OrderTicket(); } } } if ((buycad >= 0) && (sellcad >= 0)) { OrderCloseBy(buycad, sellcad, Green); Sleep(30000); } if ((buychf >= 0) && (sellchf >= 0)) { OrderCloseBy(buychf, sellchf, Green); Sleep(30000); } if ((buyjpy >= 0) && (selljpy >= 0)) { OrderCloseBy(buyjpy, selljpy, Green); Sleep(30000); }
Накатал свою функцию.
//////////////////////////////////////////////////////////////////////////////// void Close_all_by() { int cur_ticket; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS)) { if(OrderMagicNumber()==Magic) { if(OrderSymbol()==Symbol()) { //BUY if(OrderType()==OP_BUY) { cur_ticket=OrderTicket(); for(int y=i-1; y>=0; y--) { if(OrderSelect(y, SELECT_BY_POS)) { if(OrderMagicNumber()==Magic) { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { i++; if(OrderCloseBy(OrderTicket(),cur_ticket)) break; } } } } } }//end if buy else //SELL if(OrderType()==OP_SELL) { cur_ticket=OrderTicket(); for(int y2=i-1; y2>=0; y2--) { if(OrderSelect(y2, SELECT_BY_POS)) { if(OrderMagicNumber()==Magic) { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { i++; if(OrderCloseBy(OrderTicket(),cur_ticket)) break; } } } } } }//end if sell } } } } }
eevviill:
Накатал свою функцию.
По мотивам вашей накатал такую
int orderticket( int ordertype) { int i, answer = -1; for ( i = OrdersTotal() - 1; i >= 0; i--) if ( OrderSelect( i, SELECT_BY_POS) ) if ( OrderMagicNumber()==Magic && OrderSymbol()==Symbol() && OrderType()== ordertype ) { answer = OrderTicket(); break; } return( answer ); } //////////////////////////////////////////////////////////////////////////////// void Close_all_by() { int BuyTicket, SellTicket; while ( true ) { BuyTicket = orderticket( OP_BUY ); if ( BuyTicket < 0 ) break; // кончились ордера на покупку SellTicket = orderticket( OP_SELL ); if ( SellTicket < 0 ) break; //кончились ордера на продажу // существуют перекрытые ордера OrderCloseBy( BuyTicket, SellTicket); } }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь