 но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
  но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
					        										 но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
  но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
					        										 
  
 
					        										 
 
					        										 
 
					        										 
 //+------------------------------------------------------------------+
//|   Функция открытия ордера                                        |
//|------------------------------------------------------------------|
//|   Параметры запроса:                                             |
//|   OpenOrder("BUY")  - Открытие ордера на покупку (BUY)           |
//|   OpenOrder("SELL") - Открытие ордера на продажу (SELL)          |
//+------------------------------------------------------------------+
void OpenOrder(string type)
{
double StopLoss = 0;
double TakeProfit = 0;
//--- Инициализация переменых ----------------------------------------
int               ticket      = 0;
string            symbol      /* Cимвол */                  = Symbol();
ENUM_ORDER_TYPE   cmd         /* Торговая операция */       = ORDER_TYPE_BUY; 
double            volume      /* Количество лотов */        = LotsOptimized();
double            price       /* Цена */                    = 0.0;
int               slippage    /* Проскальзывание */         = 3; 
double            stoploss    /* stop loss */               = 0;
double            takeprofit  /* take profit */             = 0;
string            comment     /* Комментарий */             = NULL;
int               magic       /* Идентификатор */           = MAGICMA;
datetime          expiration  /* Cрок истечения ордера */   = 0;
color             arrow_color /* Цвет */                    = clrNONE;
//--- Получим информацию по символу ----------------------------------
double bid     = MarketInfo(symbol,MODE_BID);    // Запрос значения Bid
double ask     = MarketInfo(symbol,MODE_ASK);    // Запрос значения Ask
double point   = MarketInfo(symbol,MODE_POINT);  // Запрос Point
double digits  = MarketInfo(symbol,MODE_DIGITS);  // Запрос Digits
//--------------------------------------------------------------------
//--- Подставим значения под соответствующий тип ордера --------------
if (type == "BUY")
   {
   cmd = ORDER_TYPE_BUY;
   price = NormalizeDouble(Ask,digits);
   if (StopLoss > 0) stoploss = NormalizeDouble(Bid - StopLoss * point,digits);
   if (TakeProfit > 0) takeprofit = NormalizeDouble(Ask + TakeProfit * point,digits);
   arrow_color = Green;
   }
if (type == "SELL")
   {
   cmd = ORDER_TYPE_SELL;
   price = NormalizeDouble(Bid,digits);
   if (StopLoss > 0) stoploss = NormalizeDouble(Ask + StopLoss * point,digits); 
   if (TakeProfit > 0) takeprofit = NormalizeDouble(Bid - TakeProfit * point,digits);
   arrow_color = Red;
   }
//--- Проверим достаточно ли средств для открытия ордера -------------
double free_margin=AccountFreeMarginCheck(symbol,cmd,volume);
if(free_margin<0) //Если на счету не хватает средств
   {
   string oper=(cmd==OP_BUY)? "Buy":"Sell";
   Print("Not enough money for ", oper," ",volume, " ", symbol, " Error code=",GetLastError());
   return;
   }
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if(free_margin>0)
   {ticket = OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);}
//--------------------------------------------------------------------
}
//+------------------------------------------------------------------+ 
 //+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }
//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }
//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Корректное значение объема";
   return(true);
  }if (CheckVolumeValue(iLots)==TRUE) ticket = OrderSend...bool CheckVolumeValue(double volume)
{
string description;
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);   //Минимально допустимый объем для торговых операций
if(volume<min_volume)
   {
   description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
   return(FALSE);
   }
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);   //Максимально допустимый объем для торговых операций
if(volume>max_volume)
   {
   description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
   return(FALSE);
   }
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP); //Получим минимальную градацию объема
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
   {
   description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
   return(FALSE);
   }
description="Корректное значение объема";
return(TRUE);
}bool CheckVolumeValue(double volume,string &description) 
 
					        										 
  
 gd_240 = 0;
double ld_56 = 0;
for (index = OrdersTotal() - 1; index >= 0; index--)
   {
   OrderSelect(index, SELECT_BY_POS, MODE_TRADES);
   if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
      {
      if (OrderType() == OP_BUY || OrderType() == OP_SELL)
         {
         gd_240 += OrderOpenPrice() * OrderLots();
         ld_56 += OrderLots();
         }
      }
   }
gd_240 = NormalizeDouble(gd_240 / ld_56, Digits); 
 
					        										//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LotsOptimized()
{
//--- Инициализация переменых ----------------------------------------
double   volume     = 0;
double   lot        = 0.01;
double   exponent   = 2;
double   count      = CountOpenOrders();
int      digits     = (int)2; //MarketInfo(Symbol(),MODE_DIGITS);
//--------------------------------------------------------------------
volume = NormalizeDouble(lot * MathPow(exponent, count),digits);
//--------------------------------------------------------------------
return(volume);
}
//+------------------------------------------------------------------+/code>
Kudryashov