Привет !

У меня есть центовый счёт под МТ5, но на нём пока нету средств (сумма средств=0).
Я запускаю специальный скрипт и мне он пишет во вкладке "Эксперты": "Торговля по символу запрещена".
Сможете ли вы мне помочь в данном вопросе ?
- Может сначала на счёт нужно положить деньги - кто уже сталкивался с этой проблемой? - помогите!
Код скрипта прилагаю.

Код HTML:
#property copyright "Copyright 2019, MetaQuotes Software Corp."   // ДАННЫЙ СКРИПТ ПРЕДНАЗНАЧЕН ДЛЯ СБОРА ДАННЫХ С ТЕРМИНАЛА MT5 В ФАЙЛ "tracer_SN.dmp"
#property link      "https://www.mql5.com"
#property version   "2.00"


static int MMR_MANUAL=500;
static int Digits_now;

void OnStart()
  {
  string s2, s3, r_now, file_of_data="tracer_SN.dmp";
  bool what, shift_swap, equ2, Agree, up_dir, cmp_on, equ, doit, EATradeAllowed;
  int t_z, T_SFT, t_i, t, i, t_attempts, L, t_handler, t_open_res, now_spread0, now_spread, xe, lp, USE_FM_MIN, USE_FM_MAX, att;
  double t_trade, ASK_DATA[2700], hand_point, TVL, minl, maxl, MMR, MLST, PLE, ask0, bid0, TCZ, VOLUME;
  datetime xxx, TEST_SECOND, THE_DATETIME;
  long dig;
  //---------------------------
  Print ("");
  Print("Начало скрипта");
  r_now="QWERTYUIOPASDFGHJKLZXCVBNM";
  s2=Symbol();
  
  s3=s2;
  
  t_z=StringLen(s2);
  if (t_z>6)
     {
     t=t_z-6;
     s2=StringSubstr(s2, t, 6);
     t_z-=t;
     }
  
  if (StringFind(s2,".",0)>-1) s2=StringSubstr(s3, 0, 6);
  
  T_SFT=0;
  for (t_i=0; t_i<t_z; t_i++)
      {
      if (t_i==1 || t_i==4) T_SFT+=( (StringGetCharacter(s2, t_i)-StringGetCharacter(s2, t_i+1))     -StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i+1),0),0) +StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i),0),0)); else
      T_SFT+=((StringGetCharacter(s2, t_i-1)-StringGetCharacter(s2, t_i))  +StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i),0),0)+StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i-1),0),0));
      T_SFT+=(StringGetCharacter(s2, t_i)-StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i),0),0));
      if (t_i==2) T_SFT+=( StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i-1),0),0) + StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i+1),0),0));
      if (t_i==5) T_SFT+=( StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i-2),0),0) + StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i),0),0)- StringFind(r_now, DoubleToString(StringGetCharacter(s2, t_i-3),0),0)+StringGetCharacter(s2, t_i-1));
      }
  T_SFT-=(StringGetCharacter(s2, 2)*t_z*0.4);
  T_SFT-=(StringGetCharacter(s2, 5)*t_z*0.3);
  T_SFT-=(StringGetCharacter(s2, 4)*t_z*0.2);
  T_SFT+=StringFind(r_now, DoubleToString(StringGetCharacter(s2,5),0),0);
  T_SFT+=StringGetCharacter(s2, 1);
  t=100; i=0; while (i<2700 && t>0) {i=ArrayInitialize(ASK_DATA,0); t--;}
  Print (""); Print ("Производится анализ данных торгового терминала из файла <"+file_of_data+"> ...");
  
  t_attempts=20;
  t_handler=-1;
  while (t_handler==-1 && t_attempts>0)
        {
        if (t_attempts!=20) Sleep (50);
        t_handler=FileOpen(file_of_data, FILE_BIN|FILE_READ|FILE_WRITE);
        t_attempts--;
        }
  t_trade=0;
  t_open_res=-1;
  if (t_handler!=-1)
     {
     L=FileSize(t_handler)/8;
     t_attempts=30;
     while (t_open_res<L && t_attempts>0)
           {
           t_open_res=FileReadArray(t_handler, ASK_DATA, 0, L);
           t_attempts--;
           }
     if (t_open_res>=L)
        {
        hand_point=ASK_DATA[T_SFT]; TVL=ASK_DATA[300+T_SFT]; minl=ASK_DATA[600+T_SFT]; maxl=ASK_DATA[900+T_SFT]; MMR=ASK_DATA[1200+T_SFT]; MLST=ASK_DATA[1500+T_SFT]; Digits_now=ASK_DATA[1800+T_SFT]; now_spread=ASK_DATA[2100+T_SFT]; PLE=ASK_DATA[2400+T_SFT];
        now_spread0=now_spread;
        if (TVL>1000000 || Digits_now<2) TVL=0;
        t_trade=TVL*minl*maxl*MMR*hand_point*MLST*Digits_now*PLE;
        t_z=t_handler;
        }
     }
  what=false;
  if (t_trade<=0)
     {
     Print ("не удалось восстановить данные торгового терминала из файла, придётся анализировать текущее подключение...");
     t_z=0;
     EATradeAllowed=false;
     VOLUME=0;
     THE_DATETIME=TimeLocal()+5;
     while (TimeLocal()<THE_DATETIME && (t_z<=0 || !EATradeAllowed)) {t_z=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED); EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);}
     if (TimeLocal()>=THE_DATETIME)
        {
        if (t_z<=0) {t_z=1; Print ("торги по данному инструменту запрещены!");}
        if (!EATradeAllowed) {t_z=0; Print ("Автоматическая торговля с помощью экспертов/скриптов запрещена на стороне сервера");}
        }
     //-----------------------------------------------------
     dig=SymbolInfoInteger(s2, SYMBOL_TRADE_MODE);
     if (dig==SYMBOL_TRADE_MODE_DISABLED) r_now="Торговля по символу запрещена";
     if (dig==SYMBOL_TRADE_MODE_LONGONLY) r_now="Разрешены только покупки";
     if (dig==SYMBOL_TRADE_MODE_SHORTONLY) r_now="Разрешены только продажи";
     if (dig==SYMBOL_TRADE_MODE_CLOSEONLY) r_now="Разрешены только операции закрытия позиций";
     if (dig==SYMBOL_TRADE_MODE_FULL) r_now="Нет ограничений на торговые операции";
     //-----------------------------------------------------
     if (t_z>0 && dig!=SYMBOL_TRADE_MODE_DISABLED)
        {
        if (dig!=SYMBOL_TRADE_MODE_FULL) r_now="существующие ограничения по счёту: "+r_now;
        Print (r_now);
        dig=SymbolInfoInteger(s2, SYMBOL_TRADE_EXEMODE);
        if (dig==SYMBOL_TRADE_EXECUTION_REQUEST) r_now="Торговля по запросу";
        if (dig==SYMBOL_TRADE_EXECUTION_INSTANT) r_now="Торговля по потоковым ценам";
        if (dig==SYMBOL_TRADE_EXECUTION_MARKET) r_now="Исполнение ордеров по рынку";
        if (dig==SYMBOL_TRADE_EXECUTION_EXCHANGE) r_now="Биржевое исполнение";
        Print ("Режим заключения сделок: "+r_now);
        Print ("торги по данному инструменту разрешены - сбор данных...");
        doit=false;
        att=100;
        while (!doit && att>0)
              {
              doit=SymbolInfoDouble(s2, SYMBOL_TRADE_TICK_VALUE,TVL);
              if (doit) doit=SymbolInfoDouble(s2, SYMBOL_VOLUME_MIN,minl);
              if (doit) doit=SymbolInfoDouble(s2, SYMBOL_VOLUME_MAX,maxl);
              if (doit) doit=SymbolInfoDouble(s2, SYMBOL_VOLUME_STEP,MLST);
              if (doit) doit=SymbolInfoDouble(s2, SYMBOL_POINT,hand_point);
              if (doit) doit=SymbolInfoInteger(s2, SYMBOL_DIGITS,dig);
              if (doit) doit=SymbolInfoDouble(s2, SYMBOL_MARGIN_INITIAL, MMR);
              if (!doit || MMR==0) {Sleep(2); att--; doit=false;}
              }
        PLE=AccountInfoInteger(ACCOUNT_LEVERAGE);
        Print ("ПЛЕЧО="+DoubleToString(PLE,0));
        Print ("МНОЖИТЕЛЬ ШКАЛЫ ДЕЛЕНИЯ="+DoubleToString(TVL,5));
        Digits_now=NormalizeDouble(dig,0);
        Print ("ЗНАКОВ ПОСЛЕ ТОЧКИ="+DoubleToString(Digits_now,0));
        Print ("ОБЪЁМ.МИН="+DoubleToString(minl,3));
        Print ("ОБЪЁМ.МАКС="+DoubleToString(maxl,3));
        Print ("МНОЖИТЕЛЬ ЗАЛОГОВОЙ МАРЖЫ="+DoubleToString(MMR,10));
        Print ("ШАГ ЛОТА="+DoubleToString(MLST,3));
        Print ("ЕДИНИЦА ШКАЛЫ ДЕЛЕНИЯ="+DoubleToString(hand_point,5));
        if (MMR==0) {MMR=MMR_MANUAL; Print ("MMR исправлена на "+DoubleToString(MMR,0)+" по причине равной нулю");}
        if (maxl==minl) {maxl=minl*1000; Print ("maxl исправлена на "+DoubleToString(maxl,2)+" по причине равной minl");}
        if (hand_point==0) hand_point=_Point;
        if (hand_point==0) hand_point=1/MathPow(10,Digits_now);
        VOLUME=TVL*minl*maxl*MMR*hand_point*MLST*Digits_now*PLE;
        t_z=1;
        Print ("результат сбора данных (>0-положительный, =0-отрицательный)="+DoubleToString(VOLUME,4));
        }
        else {t_z=0; VOLUME=0; r_now="существующие ограничения по счёту: "+r_now; Print (r_now);}
     if (VOLUME<=0)
        {
        up_dir=t_z;
        t_z=t_handler;
        what=true;
        xe=0;
        shift_swap=false;
        }
        else //if (TerminalInfoInteger(TERMINAL_CONNECTED))
                {
                xxx=TimeLocal()+60;
                lp=0; equ2=false; TEST_SECOND=0; Agree=false;
                while (TimeLocal()<xxx)
                      {
                      if (TerminalInfoInteger(TERMINAL_CONNECTED))
                         {
                         ask0=SymbolInfoDouble(s2,SYMBOL_ASK); bid0=SymbolInfoDouble(s2,SYMBOL_BID);
                         now_spread=Point_DBL_to_INT(NormalizeDouble(ask0-bid0,Digits_now));
                         if (now_spread!=lp && lp!=0)
                            {
                            if (!equ2)
                               {
                               Print("пара имеет плавающий спред...");
                               equ2=true;
                               if (now_spread>lp) {USE_FM_MIN=lp; USE_FM_MAX=now_spread;} else {USE_FM_MIN=now_spread; USE_FM_MAX=lp;}
                               }
                            if (TimeLocal()>TEST_SECOND || TEST_SECOND==0)
                               {
                               if (equ2)
                                  {
                                  cmp_on=false;
                                  if (now_spread<USE_FM_MIN) {USE_FM_MIN=now_spread; cmp_on=true;}
                                  if (now_spread>USE_FM_MAX) {USE_FM_MAX=now_spread; cmp_on=true;}
                                  if (cmp_on || !shift_swap) {Print("спред: [",USE_FM_MIN,"...",USE_FM_MAX,"]"); shift_swap=true;}
                                  }
                               TEST_SECOND=TimeLocal();
                               }
                            }
                            else
                               {
                               if (!equ2 && ask0!=TCZ) xe++;
                               if (!equ2 && !Agree && TimeLocal()>xxx-10 && xe>5)
                                  {
                                  Print("пара имеет фиксированный спред =",now_spread);
                                  Agree=true;
                                  }
                               if (!Agree && !equ2 && TimeLocal()>xxx-3) xxx++;
                               }
                         lp=now_spread;
                         TCZ=ask0;
                         }
                      }
                if (equ2) now_spread=USE_FM_MAX;
                }
     if (!what)
        {

        att=AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE); TCZ=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
        if (att==0) PrintFormat ("ситуация принудительного закрытия: свободная маржа в процентах<=%G%s",TCZ,"%"); else PrintFormat ("ситуация принудительного закрытия: свободная маржа в депозите<=%G",TCZ);
        ASK_DATA[0]=att;     // индикатор MT5 [0...1]
        ASK_DATA[1]=TCZ;
        
        ASK_DATA[T_SFT]=hand_point; ASK_DATA[300+T_SFT]=TVL; ASK_DATA[600+T_SFT]=minl; ASK_DATA[900+T_SFT]=maxl; ASK_DATA[1200+T_SFT]=MMR; ASK_DATA[1500+T_SFT]=MLST; ASK_DATA[1800+T_SFT]=Digits_now; ASK_DATA[2100+T_SFT]=now_spread; ASK_DATA[2400+T_SFT]=PLE;
        t_attempts=20;
        THE_DATETIME=TimeLocal()+5;
        equ=false;
        t_z=t_handler;
        if (t_handler==-1)
           {
           while (t_handler==-1 && t_attempts>0)
                 {
                 if (t_attempts!=20) Sleep (50);
                 t_handler=FileOpen(file_of_data, FILE_BIN|FILE_WRITE);
                 t_attempts--;
                 }
           if (t_handler!=-1) {equ=true; t_z=t_handler;}
           }
           else while (TimeLocal()<THE_DATETIME && !equ) equ=FileSeek(t_handler, 0, SEEK_SET);
        if (equ)
           {
           lp=-1;
           THE_DATETIME=TimeLocal()+5;
           while (TimeLocal()<THE_DATETIME && lp<2700) lp=FileWriteArray(t_handler, ASK_DATA, 0, 2700);
           if (lp>=2700)
              {
              if (t_open_res>=L && L*t_open_res!=0) Print ("файл <",file_of_data,"> был успешно дополнен данными по текущему инструменту (",s2,")"); else Print ("файл <",file_of_data,"> был заново создан и дополнен данными по текущему инструменту (",s2,")");
              }
           }
           else Print ("не получилось обновить файл <",file_of_data+"> текущим инструментом, но работать можно");
        }
     }
     else Print("данные для инструмента ",s2," были успешно восстановлены из файла <",file_of_data,">");
  if (t_z!=-1) FileClose(t_z);
  Print("Конец скрипта");
  }
//----------------------------
int Point_DBL_to_INT(double chk)
    {
    string st, sq;
    int sf, sl, sqt;
    st=DoubleToString(chk, Digits_now);
    sf=StringFind(st, ".", 0)+1;
    sq=StringSubstr(st, 0, sf-1);
    sqt=StringToInteger(sq);
    if (sf==0) return (chk);
    sl=StringLen(st)-1;
    st=StringSubstr(st, sf, sl);
    if (sqt!=0) sf=StringToInteger(sq+st); else
       {
       sf=StringToInteger(st);
       if (chk<0) sf=-sf;
       }
    return (sf);
    }