Помогите доработать индикатор! ПОЖЛСТА!

 

Помогите доработать информационный индикатор. Кое с чем я разобрался, например, вывод на график информации Ask, Bid, Spread, Balance, Equity, Margin, Free margin, Drawdown, Leverage.

Индикатор

На счет Swap long и Swap short не уверен, правильно ли их написал, потому что отображаются нули. Ниже приведен код.

#property indicator_separate_window
//----Значение аск:  
int objekt_ask()
  {
  if(ObjectFind("objekt_ask") == -1)
    ObjectCreate("objekt_ask",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_ask","Ask: "+DoubleToStr(MarketInfo(Symbol(),MODE_ASK),5),10,"Calibri",Gold);
    ObjectSet("objekt_ask", OBJPROP_CORNER, 3);
    ObjectSet("objekt_ask", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_ask", OBJPROP_YDISTANCE, 245);
  return(0);
  }
//----Значение бид: 
int objekt_bid()
  {
  if(ObjectFind("objekt_bid") == -1)
    ObjectCreate("objekt_bid",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_bid","Bid: "+DoubleToStr(MarketInfo(Symbol(),MODE_BID),5),10,"Calibri",Gold);
    ObjectSet("objekt_bid", OBJPROP_CORNER, 3);
    ObjectSet("objekt_bid", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_bid", OBJPROP_YDISTANCE, 230);
  return(0);
  }
//----Значение српед:
int objekt_spread()
  {
  if(ObjectFind("objekt_spread") == -1)
    ObjectCreate("objekt_spread",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_spread","Spred: "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),0),10,"Calibri",Gold);
    ObjectSet("objekt_spread", OBJPROP_CORNER, 3);
    ObjectSet("objekt_spread", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_spread", OBJPROP_YDISTANCE, 215);
  return(0);
  }
//----Значение баланса: 
int objekt_balance()
  {
  if(ObjectFind("objekt_balance") == -1)
    ObjectCreate("objekt_balance",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_balance","Balance: "+DoubleToStr(AccountBalance(),2),10,"Calibri",Lime);
    ObjectSet("objekt_balance", OBJPROP_CORNER, 3);
    ObjectSet("objekt_balance", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_balance", OBJPROP_YDISTANCE, 185);
  return(0);
  }
//----Значение эквити:
int objekt_equity()
  {
  if(ObjectFind("objekt_equity") == -1)
    ObjectCreate("objekt_equity",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_equity","Equity: "+DoubleToStr(AccountEquity(),2),10,"Calibri",RoyalBlue);
    ObjectSet("objekt_equity", OBJPROP_CORNER, 3);
    ObjectSet("objekt_equity", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_equity", OBJPROP_YDISTANCE, 170);
  return(0);
  }
//----Значение маржи:
int objekt_margin()
  {
  if(ObjectFind("objekt_margin") == -1)
    ObjectCreate("objekt_margin",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_margin","Margin: "+DoubleToStr(AccountMargin(),2),10,"Calibri",Gray);
    ObjectSet("objekt_margin", OBJPROP_CORNER, 3);
    ObjectSet("objekt_margin", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_margin", OBJPROP_YDISTANCE, 155);
  return(0);
  }
//----Значение свободной маржи:
int objekt_freemargin()
  {
  if(ObjectFind("objekt_freemargin") == -1)
    ObjectCreate("objekt_freemargin",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_freemargin","Free margin: "+DoubleToStr(AccountFreeMargin(),2),10,"Calibri",White);
    ObjectSet("objekt_freemargin", OBJPROP_CORNER, 3);
    ObjectSet("objekt_freemargin", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_freemargin", OBJPROP_YDISTANCE, 140);
  return(0);
  }
//----Значение просадки:
int objekt_drawdown()
  {
  if(ObjectFind("objekt_drawdown") == -1)
    ObjectCreate("objekt_drawdown",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_drawdown","Drawdown: "+DoubleToStr(AccountProfit(),2),10,"Calibri",Red);
    ObjectSet("objekt_drawdown", OBJPROP_CORNER, 3);
    ObjectSet("objekt_drawdown", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_drawdown", OBJPROP_YDISTANCE, 125);
  return(0);
  }
//----Значение общего объема:
int objekt_totalvolume()
  {
  double lot=OrderLots();
  if(ObjectFind("objekt_totalvolume") == -1)
    ObjectCreate("objekt_totalvolume",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_totalvolume","Total volume: "+DoubleToStr(lot,2),10,"Calibri",Gold);
    ObjectSet("objekt_totalvolume", OBJPROP_CORNER, 3);
    ObjectSet("objekt_totalvolume", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_totalvolume", OBJPROP_YDISTANCE, 95);
  return(0);
  }
//----Значение общего объема длинных позиций:
int objekt_buyvolume()
  {
  double lot=OrderLots();
  if(ObjectFind("objekt_buyvolume") == -1)
    ObjectCreate("objekt_buyvolume",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_buyvolume","Buy volume: "+DoubleToStr(lot,2),10,"Calibri",Gold);
    ObjectSet("objekt_buyvolume", OBJPROP_CORNER, 3);
    ObjectSet("objekt_buyvolume", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_buyvolume", OBJPROP_YDISTANCE, 80);
  return(0);
  }
//----Значение общего объема коротких позиций:
int objekt_sellvolume()
  {
  double lot=OrderLots();
  if(ObjectFind("objekt_sellvolume") == -1)
    ObjectCreate("objekt_sellvolume",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_sellvolume","Sell volume: "+DoubleToStr(lot,2),10,"Calibri",Gold);
    ObjectSet("objekt_sellvolume", OBJPROP_CORNER, 3);
    ObjectSet("objekt_sellvolume", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_sellvolume", OBJPROP_YDISTANCE, 65);
  return(0);
  }
//----Значение своп лонг:
int objekt_swaplong()
  {
  if(ObjectFind("objekt_swaplong") == -1)
    ObjectCreate("objekt_swaplong",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_swaplong","Swap long: "+DoubleToStr(MarketInfo(Symbol(),MODE_SWAPLONG),2),10,"Calibri",Gold);
    ObjectSet("objekt_swaplong", OBJPROP_CORNER, 3);
    ObjectSet("objekt_swaplong", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_swaplong", OBJPROP_YDISTANCE, 35);
  return(0);
  }
//----Значение своп шорт:
int objekt_swapshort()
  {
  if(ObjectFind("objekt_swapshort") == -1)
    ObjectCreate("objekt_swapshort",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_swapshort","Swap short: "+DoubleToStr(MarketInfo(Symbol(),MODE_SWAPSHORT),2),10,"Calibri",Gold);
    ObjectSet("objekt_swapshort", OBJPROP_CORNER, 3);
    ObjectSet("objekt_swapshort", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_swapshort", OBJPROP_YDISTANCE, 20);
  return(0);
  }
//----Значение кредитного плеча:
int objekt_leverage()
  {
  if(ObjectFind("objekt_leverage") == -1)
    ObjectCreate("objekt_leverage",OBJ_LABEL,0,0,0);
    ObjectSetText("objekt_leverage","Leverage: "+DoubleToStr(AccountLeverage(),0),10,"Calibri",Gold);
    ObjectSet("objekt_leverage", OBJPROP_CORNER, 3);
    ObjectSet("objekt_leverage", OBJPROP_XDISTANCE, 5);
    ObjectSet("objekt_leverage", OBJPROP_YDISTANCE, 5);
  return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
//----Текстовая информация в окне графика
  objekt_bid();
  objekt_ask();
  objekt_spread();

  objekt_balance();
  objekt_equity();
  objekt_margin();
  objekt_freemargin();
  objekt_drawdown();

  objekt_totalvolume();
  objekt_buyvolume();
  objekt_sellvolume();

  objekt_swaplong();
  objekt_swapshort();
  objekt_leverage();
//----Графическая информация в отдельном окне
  
  return(0);
  }
//+------------------------------------------------------------------+  
  int deinit()
  {
  ObjectsDeleteAll();
  return(0);
  }
//+--------------------

СПС!

 

В цикле типа for( int i = OrdersTotal()-1; i >=0 ; i-- ) перебирать все открытые позиции и считать суммы лотов, свапов и что там ещё нужно

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