Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 540

 
Rustam Bikbulatov:

Спасибо!!!!! сейчас попробую втиснуть в свой код!  Почему на вервой строке (void) ?

А зачем вам указывать тип ордера, если имя функции говорит, что она считает ордера Buy ?
 
Artyom Trishkin:
А зачем вам указывать тип ордера, если имя функции говорит, что она считает ордера Buy ?

Имя то можно изменить за считанные секунды а вот самим кодом проблемы 

 
Rustam Bikbulatov:

Имя то можно изменить за считанные секунды а вот самим кодом проблемы 

Да проблемы-то не с кодом, а с вашим пониманием того, что вы делаете :)

//+------------------------------------------------------------------+
int fMarketOrdersOpen(const ENUM_ORDER_TYPE order_type)
  {
   int total=OrdersTotal(), count=0;
   for(int i=total-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderType()!=order_type) continue;
         if(OrderMagicNumber()==123 && OrderSymbol()==Symbol())
            count++;
        }
     }
   return count;
  }
//+------------------------------------------------------------------+
 
Rustam Bikbulatov:
Ребята. Уже мозг кипит((( Подскажите как из этого определения количества ордеров

сделать количество объема в лотах? Что нужно изменить или подкорректировать? 

double fMarketOrdersOpenB(int type){
   double c=0,aBuyCount=0;
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==123){
            switch(OrderType()){
               case OP_BUY:aBuyCount+=OrderLots();break;
              }}}else{return(-1);}}
   if(type==OP_BUY)c=aBuyCount;return(c);}

При ошибке выбора хотя бы одного ордера функция вернет -1

Если type соответствует OP_BUY - получите объем лотов BUY

При других значениях type функция вернет 0.

Если я правильно понял задачу - изменить подсчет штук на подсчет объема лотов ордеров BUY
 
Kirill Belousov:

При ошибке выбора хотя бы одного ордера функция вернет -1

Если type соответствует OP_BUY - получите объем лотов BUY

При других значениях type функция вернет 0.

Если я правильно понял задачу - изменить подсчет штук на подсчет объема лотов ордеров BUY

да. именно так. не могу сообразить 

 
Artyom Trishkin:

Да проблемы-то не с кодом, а с вашим пониманием того, что вы делаете :)

согласен что не понимаю полностью программирование. ну не мое это((((

 
Изначально этот код 
int fMarketOrdersOpenB(int type){
   int c=0,aBuyCount=0;
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==123){
            switch(OrderType()){
               case OP_BUY:aBuyCount++;break;
              }}}else{return(-1);}}
   if(type==OP_BUY)c=aBuyCount;return(c);}

мне нужно втсавить 

     .........
double lts=fMarketOrdersOpenB(OP_BUY);
   if(lts>0){
         int irv2=OrderSend(Symbol(),OP_BUY,lts,Ask,3,0,0,NULL,123,0,CLR_NONE);}

В моем коду выводит количество ордеров а мне нужно объем лота всех ордеров бай

 
Rustam Bikbulatov:
Изначально этот код 

мне нужно втсавить 

В моем коду выводит количество ордеров а мне нужно объем лота всех ордеров бай

Самое важное - правильно задать вопрос.

Ищите сами, что вам нужно

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko:

Самое важное - правильно задать вопрос.

Ищите сами, что вам нужно

Видел и пробовал. Много чем помог уже но есть предел моего понимания 

 
Rustam Bikbulatov:
Ребята. Уже мозг кипит((( Подскажите как из этого определения количества ордеров

сделать количество объема в лотах? Что нужно изменить или подкорректировать? 

double fMarketOrdersOpenB(const ENUM_ORDER_TYPE type)
{
     double lots=0;
     for(int i=0;i<OrdersTotal();i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES) )   continue;
          if( OrderSymbol()!=Symbol() )                     continue;
          if( OrderMagicNumber()!=123 )                     continue;
          if( OrderType() != type )                         continue;
          lots += OrderLots();
     }
     return(lots);
}