Только в тестере работает - страница 2

 
Integer:

Ааа. Понял. 138 - реквот.

OrderClosePrice() - это цена закрытия последнего выделенного ордера, но не того, который закрываете. Надо сначала выделить ордер по тикету, если удалоссь выделить, то OrderClose() с OrderClosePrice().


Я так понимаю, OrderClosePrice() цена закрытого ордера, история,

а OrderClose() работает по ценам Ack (для продажи) Bid (для покупки),

или нет?

 
r772ra:


Я так понимаю, OrderClosePrice() цена закрытого ордера, история,

а OrderClose() работает по ценам Ack (для продажи) Bid (для покупки),

или нет?


OrderClosePrice() - это цена закрытия выделенного ордера. Для ордера из истории это фактическая цена закрытия, а для открытого ордера это цена по которой будет выполняться запрос на закрытие (Bid или Ask в зависимости от направления ордера).
 
Integer:

OrderClosePrice() - это цена закрытия выделенного ордера. Для ордера из истории это фактическая цена закрытия, а для открытого ордера это цена по которой будет выполняться запрос на закрытие (Bid или Ask в зависимости от направления ордера).

Ага, Спасибо...
 
void CloseCore(string symb,int op1=-1,int op2=-1,int mn=-1)  {
  
  double Lot1,Lot2,Lot3,Pr1=0,Pr2=0,Pr3=0; 
  int Ticket1=0,Ticket2=0,Ticket3=0;
  
  if (symb=="0") symb=Symbol();

  for (int i=OrdersTotal()-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==symb || Symbol()=="") {
        if ( mn<0 || OrderMagicNumber()==mn ) {
          if ( OrderType()==op1) {
          if ( Pr1<OrderProfit()+OrderSwap()+OrderCommission()&& Lot1<OrderLots() ) {
               Pr1=OrderProfit()+OrderSwap()+OrderCommission();
               Lot1=OrderLots();
               Ticket1=OrderTicket();
            }
          if ( Pr2>OrderProfit()+OrderSwap()+OrderCommission()&& Lot2<OrderLots() ) {
               Pr2=OrderProfit()+OrderSwap()+OrderCommission();
               Lot2=OrderLots();
               Ticket2=OrderTicket();
            }
         }
          if ( OrderType()==op2) {
          if ( Pr3>OrderProfit()+OrderSwap()+OrderCommission()&& Lot3<OrderLots() ) {
               Pr3=OrderProfit()+OrderSwap()+OrderCommission();
               Lot3=OrderLots();
               Ticket3=OrderTicket();
            }
         } 
       }
     }
   }}
   if ( Закрытый_хвост == false ) { 
   if ((Pr1+Pr2)>0 && Lot1>0 && Lot2>0 ) 
        {
        if (OrderSelect(Ticket1,SELECT_BY_TICKET)) {  CloseSelect();  }
        if (OrderSelect(Ticket2,SELECT_BY_TICKET)) {  CloseSelect();  }

        }
      }
   if ( Закрытый_хвост == true ) { 
   if ((Pr1+Pr2+Pr3)>0 && Lot1>0 && Lot2>0 && Lot3==Лот_ордера ) 
        {
        Print("Ticket1 : ",Ticket1,"Ticket2 : ",Ticket2,"Ticket3 : ",Ticket3);
        if (OrderSelect(Ticket1, SELECT_BY_TICKET)) {  CloseSelect();  }
        if (OrderSelect(Ticket2, SELECT_BY_TICKET)) {  CloseSelect();  }
        if (OrderSelect(Ticket3, SELECT_BY_TICKET)) {  CloseSelect();  } 

        }
   if ((Pr1+Pr2)>0 && Lot1>0 && Lot2>0 && (Lot3>Лот_ордера ||Lot3==0)) 
        {
        Print("Ticket1 : ",Ticket1,"Ticket2 : ",Ticket2,"Ticket3 : ",Ticket3);
        if (OrderSelect(Ticket1, SELECT_BY_TICKET)) {  CloseSelect();  }
        if (OrderSelect(Ticket2, SELECT_BY_TICKET)) {  CloseSelect();  }

        }        
      }
   return(0);
} 
 

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



Причина обращения: