Вот что я сделала.
void OT()
{
datetime t=0;
int actTotal = OrdersTotal();
for(int i=0; i<actTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol())
{
if( t > OrderOpenTime()) t = t;
else t = OrderOpenTime();
}
}
}
}
Только не могу сообразить как из этого достать OrderType()
Если я правильно понял вопрос, то может быть подойдет:
https://www.mql5.com/ru/forum/107476/page20
Функция GetTypeLastOpenPos().
Эта функция возвращает тип последней открытой позиции или -1. Более точный отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает тип последней открытой позиции или -1 | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int GetTypeLastOpenPos(string sy="", int mn=-1) { datetime t; int i, k=OrdersTotal(), r=-1; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderType(); } } } } } return(r); }
Большое спасибо!!!
А кто может подсказать почему в этом куске выставляются отложенные ордера без остановки?
Мне надо чтобы после выставления обычного ордера выставлялся отложенный в другую сторону.
И как это исправить?
for(i=0; i<actTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) {BuyOrders++; oop1 = OrderOpenPrice();}
if(OrderType()==OP_SELL) {SellOrders++; oop2 = OrderOpenPrice();}
if(OrderType()==OP_BUYSTOP) BuyStop++;
if(OrderType()==OP_SELLSTOP) SellStop++;
}
}
if(BuyOrders > 0 || SellOrders > 0 && OT() == 1 && SellStop < 1)
{
double pBid=oop1-(Pips*Point);
OrderSend(Symbol(),OP_SELLSTOP,2*Lots,pBid,Slippage,NULL,NULL,"",0,0,Red);
}
if(SellOrders > 0 || BuyOrders > 0 && OT() == 2 && BuyStop < 1)
{
double pAsk=oop2+Pips*Point;
OrderSend(Symbol(),OP_BUYSTOP,2*Lots,pAsk,Slippage,NULL,NULL,"",0,0,Blue);
}
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования