можно ли использовать торг.функции вложенными в пользовательские?

 
Если в эксперте заменить, к примеру строку вида:
if(OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICMA,0,Blue)>0)
на строку
if(OpenBuy()>0)
плюс функция
int OpenBuy() { return(OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICMA,0,Blue)); }
тестирование не возможно.
Build177
 
1. можно.
2. проверим.
что такое "тестирование невозможно"?
 
1. можно.
2. проверим.
что такое "тестирование невозможно"?

попробуте пожалуйста протестировать след.эксперта на eurusd240 за последний год.
один параметр - два значения. рез-ты должны быть одинаковы.
//+------------------------------------------------------------------+
// тест-стандарт для проветки торг.функций 
//(рез-тат можно посчитать вручную для сравнения)
//+------------------------------------------------------------------+
//#include <meineTrade.mqh>
#import "stdlib.ex4"
string ErrorDescription(int error_code);
#define MAGICMA  20050610
extern int UseOpenFunk=0;// =0-не использовать проверки торг.операций, >0-использовать
//статические сигналы на вход eurusd240 за год
int SizeB,SizeS,
    SignB[]={1097679060,1098967320,1102679100,1107864420,1113494460,1118798400,1120554300},
    SignS[]={1098765480,1102406160,1104436020,1110551820,1114103460,1119047760};

int init()
{
 SizeB=ArraySize(SignB); SizeS=ArraySize(SignS);
 return(0);
}
int deinit()
{
 Print("FINISH осталось ордеров=",OrdersTotal());
 return(0);
}
void start()
{
 int b=ChekB();           err_otlov(27);
 int s=ChekS();           err_otlov(28);
 if(b>=0) {if(CheckForClose(OP_SELL)>0)  return;
           if(UseOpenFunk>0){if(OpenBuy()>0)
                               {SignB[b]=0;    err_otlov(31);
                                return;
                               }
                            }
           else             {if(OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICMA,0,Blue)>0)
                               {SignB[b]=0;    err_otlov(36);
                                return;
                               }
                            }
          }  err_otlov(40);
 if(s>=0) {
           if(CheckForClose(OP_BUY)>0)  return;
           if(UseOpenFunk>0) {if(OpenSell()>0)
                                {SignB[s]=0;   err_otlov(44);
                                 return;
                                }
                             }
           else              {if(OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICMA,0,Red)>0)
                                {SignS[s]=0;   err_otlov(49);
                                 return;
                                }
                             }
          }  err_otlov(53);
}
//+------------------------------------------------------------------+
//|              проверим BUY                                        |
//+------------------------------------------------------------------+
int ChekB()
{
  for(int i=0; i<SizeB; i++) 
     if(SignB[i]>0)if(CurTime()>SignB[i]) return(i);  err_otlov(67);
 return(-1);
}
//+------------------------------------------------------------------+
//|              проверим SELL                                       |
//+------------------------------------------------------------------+
int ChekS()
{
  for(int i=0; i<SizeS; i++) 
     if(SignS[i]>0)if(CurTime()>SignS[i]) return(i);  err_otlov(65);
 return(-1);
}
//+------------------------------------------------------------------+
//|              проверим CLOSE                                      |
//+------------------------------------------------------------------+
int CheckForClose(int tip)
{
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      if(OrderType()==tip) {
                            if(tip==OP_BUY)
                              if(OrderClose(OrderTicket(),OrderLots(),Bid,3,White)==true) return(1);
                            if(tip==OP_SELL)
                              if(OrderClose(OrderTicket(),OrderLots(),Ask,3,White)==true) return(1);
                           }
     }  err_otlov(88);
   return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Открыть новый рыночный Ордер (либо-BUY либо-SELL)                |
//+------------------------------------------------------------------+
int OpenBuy()
{
 return(OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICMA,0,Blue));
}
int OpenSell()
{
 return(OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICMA,0,Red));
}
//+------------------------------------------------------------------+
//|              отлов ошибок                                        |
//+------------------------------------------------------------------+
bool err_otlov(int stroka)
{
 int er_=GetLastError(); 
 if(er_>0){Print("TestTest стр.",stroka,": ERROR=",er_,"  /",ErrorDescription(er_));
              return(false);}
 return(true);
}
 
ошибка у Вас.
           if(UseOpenFunk>0) {if(OpenSell()>0)
                                {SignB[s]=0;   err_otlov(44);
                                 return;
                                }
                             }
           else              {if(OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICMA,0,Red)>0)
                                {SignS[s]=0;   err_otlov(49);
                                 return;
                                }
                             }


во второй строке замените SignB на SignS

 
ошибка у Вас.
...
Извените, что отнял время.