OrderSelect(0, SELECT_BY_POS, MODE_TRADES))

 
(OrderSelect(0, SELECT_BY_POS, MODE_TRADES))

Обьясните пожалуйсто, (OrderSelect(0, SELECT_BY_POS, MODE_TRADES)), как ведется учет ордеров,позиций, на данном примере ? тоесть 0..1...2...3 и  т.д, без учета типа ордера, тикета,меджик номера,просто на скоко я понемаю по позиции ордера в списке вычесляется?
 
Invest777 писал(а) >>

тоесть 0..1...2...3 и т.д, без учета типа ордера, тикета,меджик номера,просто на скоко я понемаю по позиции ордера в списке вычесляется?


да. (конечно не именно так по порядку как в окне, по разному может быть)Различия в ордерах только активные и исторические, а так все в одной куче

 
Techno >>:


да. (конечно не именно так по порядку как в окне, по разному может быть)Различия в ордерах только активные и исторические, а так все в одной куче


вот и проблема.....мне надо чтоб так как в окне, потомучто я допустим до етого уже смоделировал ситуацию, какую позицию будет занемать выбранный ордер, и мне нужен именно он, а получается нестыковка моего учета...и программы...
 
Invest777 писал(а) >>

вот и проблема.....мне надо чтоб так как в окне, потомучто я допустим до етого уже смоделировал ситуацию, какую позицию будет занемать выбранный ордер, и мне нужен именно он, а получается нестыковка моего учета...и программы...

на самом деле это не проблема. Если ты хочешь выделить именно определенный ордер, то его нужно просто пометить, например магиком и все.
А в окне ордера уже рассортированы по типу или тикету или прибыли, это никак не связано с их позицией(реальной).
 
а магик здесь прописывать? 
OrderSelect(OrderMagicNumber(), SELECT_BY_POS, MODE_TRADES))
или  

(OrderSelect( SELECT_BY_POS, MODE_TRADES))
           if (OrderMagicNumber()==magic) 
 

магик устанавливается при открытии ордера в функции OrderSend, а уже когда идет перебор всех ордеров эксперт этими функциями понимает, что это нужный ордер для последующей обработки.
for (int i=0; i<OrdersTotal(); i++)
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
if (OrderMagicNumber()==magic)
//
}

 
да,спасиб, а можно еще както пометить ордер кроме магика?
 
Invest777 писал(а) >>
да,спасиб, а можно еще както пометить ордер кроме магика?


магик самый совершенный способ. Еще можно комментарием, или при открытии ордера запоминать номер тикета и выделение делать по тикету OrderSelect( номер тикета,SELECT_BY_TICKET); Но по тикету не надежный метод, тк тикет иногда меняется самопроизвольно.
 
по коменту,тоесть(например) :
for (int i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderComment()=="+Order_0") 
                OrderModify(OrderTicket(),0,0,OrderOpenPrice() - 20*Point,0);
}
так?
 
Invest777 писал(а) >>
по коменту,тоесть(например) :
так?


да. а выставляются коментарии при открытии ордера.
 
Techno >>:


да. а выставляются коментарии при открытии ордера.


но почемуто, я выставил данный комент "+Order_0", для первого ордера buy, но при етом, он его не модифицирует,либо неможет найти,либо я пишу неправельные параметры,но вроде все правельно : 
if (OrdersTotal()==4){
for (int i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderComment()=="+Order_0") 
                OrderModify(OrderTicket(),0,0,OrderOpenPrice() - 20*Point,0);
}
Причина обращения: