Скачать MetaTrader 5

Как получить полное название символ? Например: вместо #C - Citigroup Inc.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Используй MQL5 Cloud Network. Тестируй роботов с гиперскоростью!
Forex Trader
114257
Forex Trader 2007.08.25 01:13 
Как получить полное название символ для отображения на чарте. Например: вместо #C - Citigroup Inc.
Forex Trader
114257
Forex Trader 2007.08.26 17:14  
Во многих ДЦ количество символов уже переваливает за 100. Постоянно лезть в свойства символа через "Обзор рынка" чтобы посмотреть инфу по символу очень не удобно.
Вот скрипт который выводи инфу по счёт и символу. Но есть одна проблема. Не выводится полоное название. Как получить полное название символ для отображения на чарте. Например: вместо #C - Citigroup Inc.

void start()
{
   string symbol=Symbol();
   string market=MarketType(symbol);
   string сurrency=AccountCurrency();
   string base=symbol; if (market=="Forex") base=StringSubstr(symbol,0,3);
   double freemargin=AccountFreeMargin();
   double lotsize_base=MarketInfo(symbol,MODE_LOTSIZE);
   double lotmargin_base=0;
   double lotmargin_сurrency_buy =0;
   double lotmargin_сurrency_sell=0;
   double ask=MarketInfo(symbol,MODE_ASK);
   double bid=MarketInfo(symbol,MODE_BID);
   if (market=="Forex")
   {
      if (base==сurrency) {ask=1; bid=1;}
      else
      {
         ask=MarketInfo(base+сurrency,MODE_ASK);
         bid=MarketInfo(base+сurrency,MODE_BID);
      }
   }
   double leverage=0;
   if (market=="Forex"  ) leverage=AccountLeverage();
   if (market=="Metalls") leverage=10;
   if (market=="CFD"    ) leverage=10;
   if (leverage>0) lotmargin_base=lotsize_base/leverage;
   lotmargin_сurrency_buy =lotmargin_base*ask;
   lotmargin_сurrency_sell=lotmargin_base*bid;
   if (market=="Futures")
   {
      lotmargin_base=FuturesLotMargin(symbol);
      lotmargin_сurrency_buy =lotmargin_base;
      lotmargin_сurrency_sell=lotmargin_base;
   }
   string lotmargin_buy =DoubleToStr(lotmargin_сurrency_buy ,2)+" "+сurrency;
   string lotmargin_sell=DoubleToStr(lotmargin_сurrency_sell,2)+" "+сurrency;
   if (market=="Forex" && base!=сurrency)
   {
      lotmargin_buy =lotmargin_buy +" ("+DoubleToStr(lotmargin_base,2)+" "+base+")";
      lotmargin_sell=lotmargin_sell+" ("+DoubleToStr(lotmargin_base,2)+" "+base+")";
   }
   double freelots_buy =0;
   double freelots_sell=0;
   if (lotmargin_сurrency_buy >0 && freemargin>0) freelots_buy =freemargin/lotmargin_сurrency_buy ;
   if (lotmargin_сurrency_sell>0 && freemargin>0) freelots_sell=freemargin/lotmargin_сurrency_sell;
   double minlot=MarketInfo(symbol,MODE_MINLOT);
   int count_buy =0; if (minlot>0) count_buy =freelots_buy /minlot;
   int count_sell=0; if (minlot>0) count_sell=freelots_sell/minlot;
   freelots_buy =minlot*count_buy ;
   freelots_sell=minlot*count_sell;
   double tickvalue=MarketInfo(symbol,MODE_TICKVALUE);
   double swap_buy =0; if (minlot>0) swap_buy =MarketInfo(symbol,MODE_SWAPLONG )/minlot;
   double swap_sell=0; if (minlot>0) swap_sell=MarketInfo(symbol,MODE_SWAPSHORT)/minlot;
   double swap_buy_ticks =0; if (tickvalue>0) swap_buy_ticks =swap_buy /tickvalue;
   double swap_sell_ticks=0; if (tickvalue>0) swap_sell_ticks=swap_sell/tickvalue;
   string type="Реал"; if(IsDemo()) type="Демо";
   string field="          ";
   string msg=""
        +"Компания: "+AccountCompany()+field
   +"\n"+"Имя владельца счета: "+AccountName()+field
   +"\n"+"Тип счета: "+type+field
   +"\n"+"Номер счета: "+AccountNumber()+field
   +"\n"+"Валюта счета: "+сurrency+field
   +"\n"+"Плечо: "+AccountLeverage()+field
   +"\n"+"Баланс: "+DoubleToStr(AccountBalance(),2)+" "+сurrency+field
   +"\n"+"Средства: "+DoubleToStr(AccountEquity(),2)+" "+сurrency+field
   +"\n"+"Залог: "+DoubleToStr(AccountMargin(),2)+" "+сurrency+field
   +"\n"
   +"\n"+"Символ: "+symbol+field
   +"\n"+"Рынок: "+market+field
   +"\n"+"Свободно лотов для BUY : "+DoubleToStr(freelots_buy,1)+field
   +"\n"+"Свободно лотов для SELL: "+DoubleToStr(freelots_sell,1)+field
   +"\n"+"Залог за лот для BUY : "+lotmargin_buy+field
   +"\n"+"Залог за лот для SELL: "+lotmargin_sell+field
   +"\n"+"Своп за лот для BUY : "+DoubleToStr(swap_buy,2)+" "+сurrency+" ("+DoubleToStr(swap_buy_ticks,2)+" pips)"+field
   +"\n"+"Своп за лот для SELL: "+DoubleToStr(swap_sell,2)+" "+сurrency+" ("+DoubleToStr(swap_sell_ticks,2)+" pips)"+field
   +"\n"+"Шаг изменения цены лота: "+DoubleToStr(tickvalue,2)+" "+сurrency+" (1 pips)"+field
   +"\n"+"Минимальный лот: "+DoubleToStr(minlot,1)+field
   +"\n"+"Шаг изменения лота: "+DoubleToStr(MarketInfo(symbol,MODE_LOTSTEP),1)+field
   +"\n"+"Спред: "+DoubleToStr(MarketInfo(symbol,MODE_SPREAD),0)+field
   +"\n"+"Точность: "+DoubleToStr(MarketInfo(symbol,MODE_DIGITS),0)+field
   +"\n"+"Уровень стопов: "+DoubleToStr(MarketInfo(symbol,MODE_STOPLEVEL),0)+field
   ;
   string title="Информация о счете и свойства символа";
   MessageBox(msg,title,MB_OK|MB_ICONINFORMATION);
}
string MarketType (string symbol)
{
   int len=StringLen(symbol);
   string base;
   if (StringSubstr(symbol,0,1)=="_") return ("Indexes");
   if (StringSubstr(symbol,0,1)=="#")
   {
      base=StringSubstr(symbol,len-1,1);
      if (base=="0") return ("Futures");
      if (base=="1") return ("Futures");
      if (base=="2") return ("Futures");
      if (base=="3") return ("Futures");
      if (base=="4") return ("Futures");
      if (base=="5") return ("Futures");
      if (base=="6") return ("Futures");
      if (base=="7") return ("Futures");
      if (base=="8") return ("Futures");
      if (base=="9") return ("Futures");
      return ("CFD");
   }
   else
   {
      if (symbol=="GOLD"  ) return ("Metalls");
      if (symbol=="SILVER") return ("Metalls");
      if (len==6)
      {
         base=StringSubstr(symbol,0,3);
         if (base=="AUD") return ("Forex");
         if (base=="CAD") return ("Forex");
         if (base=="CHF") return ("Forex");
         if (base=="EUR") return ("Forex");
         if (base=="GBP") return ("Forex");
         if (base=="LFX") return ("Forex");
         if (base=="NZD") return ("Forex");
         if (base=="SGD") return ("Forex");
         if (base=="USD") return ("Forex");
      }
   }
   return ("");
}
double FuturesLotMargin (string symbol)
{
   double result=0;
   string сurrency=AccountCurrency();
   double bid=1; if (сurrency!="USD") bid=MarketInfo(сurrency+"USD",MODE_BID);
   int len=StringLen(symbol);
   string base=StringSubstr(symbol,0,len-2);
   if (base=="#ENQ" ) result=bid*3750;
   if (base=="#EP"  ) result=bid*3938;
   if (base=="#SLV" ) result=bid*5063;
   if (base=="#GOLD") result=bid*2363;
   if (base=="#CL"  ) result=bid*4725;
   if (base=="#NG"  ) result=bid*8100;
   if (base=="#W"   ) result=bid* 608;
   if (base=="#S"   ) result=bid*1148;
   if (base=="#C"   ) result=bid* 473;
   return (result);
}
// End
Forex Trader
114257
Forex Trader 2007.08.26 21:13  
Чего проще, измени переменную string symbol=Symbol();
на функцию string symbol=FullSymbol();
А в этой функции ручками пропиши все полные названия от Symbol().
Но на мой взгляд таких непонятных символов наберется не более 10-15. Распечатай их на твердую копию и положи рядом с монитором. Можно отсюда http://www.alpari-idc.ru/ru/cspec/
Forex Trader
114257
Forex Trader 2007.08.27 00:55  
Вот скрипт который выводи инфу по счёт и символу.

Вот здесь последняя редакция скрипта "Инфо":
http://www.kroufr.ru/forum/index.php?action=dlattach;topic=4861.0;attach=4075

В MQL4 нет функции, которая бы выводила полное наименование символа. Просите разработчиков, может добавят...
Forex Trader
114257
Forex Trader 2007.08.27 03:13  
Но на мой взгляд таких непонятных символов наберется не более 10-15.

Еслиб было дело в 10-15. К примеру в moneyrain их наверно больше сотни.
Просите разработчиков, может добавят...

Не удачная шутка. Разработчиков просить бесполезно .
Спасибо за скрип и за разъяснения.
Forex Trader
114257
Forex Trader 2007.08.27 05:30  
Не вообще, а непонятных. Такие Майкрософт и Кока-Кола узнаются с одного взгляда.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий