Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1139

 
kuznat399:
Существуют ли роботы для андроид?


Автоторговли в мобильной версии Metatrader нет и, видимо, в обозримом будущем не появится. Если хочется рулить роботом с телефона - нужен VPS, на котором будет стоять терминал с роботом, + программа для удалённого доступа на телефоне.
 
Подскажите, не отображается визуализация в тестере (билд 1065) - возможно исправить?
 
Открываю в МТ5 десять недельных графиков валютных пар, в терминал загружается тиковая история в 800 мегабайт. И постоянно подгружается, хотя на графиках изменений почти нет. Вопрос - зачем мне тиковая история, если я пользуюсь только недельными графиками?  К слову, на МТ4 недельные графики открываются мгновенно и без задержек.
 
sober:
Открываю в МТ5 десять недельных графиков валютных пар, в терминал загружается тиковая история в 800 мегабайт. И постоянно подгружается, хотя на графиках изменений почти нет. Вопрос - зачем мне тиковая история, если я пользуюсь только недельными графиками?  К слову, на МТ4 недельные графики открываются мгновенно и без задержек.


это особенность мт5 - загружаем всё на М1, а потом строим требуемый период... селяви (

и так каждый раз, для каждого символа

 
Есть два подключаемых блока для МТ5 (блок сигнала и выставления ордеров и блок трейлинга). Взял на MQL5. При генерации эксперта блок сигнала не видит, а блок трейлинга видит. файлы разместил "MQL5\Include\Expert\Signal" и "MQL5\Include\Expert". Прошу помощи.
 

Идея советника в покупке или продаже при касании ценой горизонтального уровня или линии тренда  проведенных вручную. Составил советник из разных работающих советников и индикатора. Но советник не работает. Вернее открывает только SELL причем без сигнала на первом тике. Что не так?

/+------------------------------------------------------------------+

//|                                                 |

//|                      Copyright © 2010, MetaQuotes Software Corp. |

//|                             http://www.mql4.com/ru/users/rustein |

//+------------------------------------------------------------------+

#define MAGIC  131313 // открытие внутрь канала

//---------------------------------------



extern int TF=15;


//+------------------------------------------------------------------+

extern int    StopLoss          = 300;

//--------------------------------------------



extern double TakeProfit = 3000;

 //--------------------------------------               


extern int Per_MA= 20;



//---- constants


#define OP_BUY_  0

#define OP_SELL_   1



 

//-------------------------------------------------------------------+

extern double Lots              = 0.1;

extern double MaximumRisk       = 1;

extern double DecreaseFactor    = 0;



bool b_1=true, s_1=true;


//+------------------------------------------------------------------+

//| Calculate open positions                                         |

//+------------------------------------------------------------------+

 double MA=iMA(NULL,TF,Per_MA,0,0,0,1);





int CalculateCurrentOrders(string symbol)

  {

   int buys=0,sells=0;

//----

   for(int i=0;i<OrdersTotal();i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)

        {

         if(OrderType()==OP_BUY)  buys++;

         if(OrderType()==OP_SELL) sells++;

        }

     }

//---- return orders volume

   if(buys>0) return(buys);

   else       return(-sells);

  }

//+------------------------------------------------------------------+

//| Calculate optimal lot size                                       |

//+------------------------------------------------------------------+

double LotsOptimized()

  {

   double lot=Lots;

   int    orders=HistoryTotal();     // history orders total

   int    losses=0;                  // number of losses orders without a break

//---- select lot size

  //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);

   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100/MarketInfo(Symbol(),MODE_TICKVALUE)/StopLoss,2);

   

//---- calcuulate number of losses orders without a break

   if(DecreaseFactor>0)

     {

      for(int i=orders-1;i>=0;i--)

        {

         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }

         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;

         //----

         if(OrderProfit()>0) break;

         if(OrderProfit()<0) losses++;

        }

      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2);

     }

//---- return lot size

   if(lot<0.01) lot=0.01;

   return(lot);

  }

  //-------------------------------------------------

  /* эта часть из индикатора*/

  

  int CheckBreakoutLines(int shift)

{

   // Total Objects 

   int obj_total = ObjectsTotal();

   

   // Time of bar 

   datetime now = Time[shift];

  

   // Iterate

   for(int i = obj_total - 1; i >= 0; i--)

   {

      // Object name

      string label = ObjectName(i);

 

      // Types

      int OType = ObjectType(label);

      bool trendline = false;

      bool hline = false;

      

      // Price to evaluate

      double cprice = 0;

      

      // Trendlines

      if(OType == OBJ_TREND )

      {

         bool ray = ObjectGet(label, OBJPROP_RAY);

         if(!ray)

         {

            datetime x1 = ObjectGet(label, OBJPROP_TIME1);

            datetime x2 = ObjectGet(label, OBJPROP_TIME2);

            if(x1 < now && x2 < now) continue;

         }

         cprice = GetCurrentPriceOfLine(label, shift);

         trendline = true;

      } else if(OType == OBJ_HLINE ) {

         cprice = ObjectGet(label, OBJPROP_PRICE1);

         hline = true;

      } else {

         continue;

      }

      

      // Breakouts and false breakouts of trendlines and hlines

      if(MA>cprice &&Ask<cprice)

      {

         if(trendline) { return(OP_BUY_); } else if(hline) { return(OP_BUY_); }

      } else if (MA>cprice &&Ask<cprice) {

        if(trendline) { return(OP_SELL_); } else if(hline) { return(OP_SELL_); }    

      }

     }

   

   return(EMPTY_VALUE);       

}


double GetCurrentPriceOfLine(string label, int shift)

{

   double price1 = ObjectGet(label, OBJPROP_PRICE1);

   double price2 = ObjectGet(label, OBJPROP_PRICE2);

   datetime d1   = ObjectGet(label, OBJPROP_TIME1);

   datetime d2   = ObjectGet(label, OBJPROP_TIME2);

   int shiftfrom = iBarShift(Symbol(), 0, d1, false);

   int shiftto   = iBarShift(Symbol(), 0, d2, false);

   int lapse = MathAbs(shiftto - shiftfrom);

   int distance = MathAbs(shift - shiftfrom);

   double pendiente = (price2 - price1) / lapse;

   double cpoint = price1 + (distance * pendiente);

   return(cpoint);

}


  //-------------------------------------------------------------------------------------------------------------

  

//+------------------------------------------------------------------+

//| Check for open order conditions                                  |

//+------------------------------------------------------------------+

void CheckForOpen()

  {

   int    res;


//--------------------------------------------------------------------+

    

//--------------------------------------------------------------------+

//---- buy conditions 

 if(OP_BUY_&&b_1)

  

     {

      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*Point),Ask+TakeProfit*Point," VV",MAGIC,0,Green);

      b_1=false; s_1=true; 

      return;

     }  


   

    

     

         

//---- sell conditions

      

     if(OP_SELL_&&s_1)

 {

      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+(StopLoss*Point),Bid-TakeProfit*Point," VV",MAGIC,0,Red);

        s_1=false;b_1=true;

      return;

     } 

    

//----

  }


//+------------------------------------------------------------------+

//| Start function                                                   |

//+------------------------------------------------------------------+

void start()

  {

     

//---- check for history and trading

   if(Bars<100 || IsTradeAllowed()==false) return;

//---- calculate open orders by current symbol

   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();

   

  }   


//+------------------------------------------------------------------+

//|---------------------------// END //------------------------------|

//+------------------------------------------------------------------+

Warstein
Warstein
  • www.mql5.com
Профиль трейдера
 
ValerVL35:

Идея советника в покупке или продаже при касании ценой горизонтального уровня или линии тренда  проведенных вручную. Составил советник из разных работающих советников и индикатора. Но советник не работает. Вернее открывает только SELL причем без сигнала на первом тике. Что не так?

/+------------------------------------------------------------------+

//|                                                 |

//|                      Copyright © 2010, MetaQuotes Software Corp. |

//|                             http://www.mql4.com/ru/users/rustein |

//+------------------------------------------------------------------+

#define MAGIC  131313 // открытие внутрь канала

//---------------------------------------



extern int TF=15;


//+------------------------------------------------------------------+

extern int    StopLoss          = 300;

//--------------------------------------------



extern double TakeProfit = 3000;

 //--------------------------------------               


extern int Per_MA= 20;



//---- constants


#define OP_BUY_  0

#define OP_SELL_   1

.....................................

.....................................    

//---- check for history and trading

   if(Bars<100 || IsTradeAllowed()==false) return;

//---- calculate open orders by current symbol

   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();

   

  }   


//+------------------------------------------------------------------+

//|---------------------------// END //------------------------------|

//+------------------------------------------------------------------+

Загрузил программу в блокнот и удалил пустые строки. Появилась возможность охватить взглядом. Нажал кнопку SRC и вставил. Вот что получилось. 1) Зачем определять

#define OP_BUY_  0
#define OP_SELL_ 1

если уже есть OP_BUY=0  и OP_SELL=1

2) Корень зла вот в этом куске. Одно и то же условие (MA>cprice &&Ask<cprice) дважды проверяется, и принимаются разные решения.

      // Breakouts and false breakouts of trendlines and hlines
      if(MA>cprice &&Ask<cprice)
      {
         if(trendline) { return(OP_BUY_); } else if(hline) { return(OP_BUY_); }
      } else if (MA>cprice &&Ask<cprice) {
        if(trendline) { return(OP_SELL_); } else if(hline) { return(OP_SELL_); }    
      }

3) Далее в каждой ветви выполняются проверки, а результат все равно один и тот же

if(trendline) { return(OP_BUY_); } else if(hline) { return(OP_BUY_); }
if(trendline) { return(OP_SELL_); } else if(hline) { return(OP_SELL_); }

и вообще строку выше можно упростить и записать так

          if(trendline)return OP_BUY;
          if(hline)    return OP_BUY;
или еще проще
          if(trendline or hline) return OP_BUY;

//+------------------------------------------------------------------+
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                             http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC  131313 // открытие внутрь канала
//---------------------------------------
extern int TF=15;
extern int    StopLoss          = 300;
extern double TakeProfit = 3000;
extern int Per_MA= 20;
extern double Lots              = 0.1;
extern double MaximumRisk       = 1;
extern double DecreaseFactor    = 0;

//---- constants
#define OP_BUY_  0
#define OP_SELL_ 1

bool b_1=true, s_1=true;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
 double MA=iMA(NULL,TF,Per_MA,0,0,0,1);
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//---- select lot size
  //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100/MarketInfo(Symbol(),MODE_TICKVALUE)/StopLoss,2);

//---- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2);
     }
//---- return lot size
   if(lot<0.01) lot=0.01;
   return(lot);
  }
  //-------------------------------------------------

  /* эта часть из индикатора*/
  int CheckBreakoutLines(int shift)
{
   // Total Objects 
   int obj_total = ObjectsTotal();

   // Time of bar 
   datetime now = Time[shift];

   // Iterate
   for(int i = obj_total - 1; i >= 0; i--)
   {
      // Object name
      string label = ObjectName(i);

      // Types
      int OType = ObjectType(label);
      bool trendline = false;
      bool hline = false;

      // Price to evaluate
      double cprice = 0;

      // Trendlines
      if(OType == OBJ_TREND )
      {
         bool ray = ObjectGet(label, OBJPROP_RAY);
         if(!ray)
         {
            datetime x1 = ObjectGet(label, OBJPROP_TIME1);
            datetime x2 = ObjectGet(label, OBJPROP_TIME2);
            if(x1 < now && x2 < now) continue;
         }
         cprice = GetCurrentPriceOfLine(label, shift);
         trendline = true;
      } else if(OType == OBJ_HLINE ) {
         cprice = ObjectGet(label, OBJPROP_PRICE1);
         hline = true;
      } else {
         continue;
      }

      // Breakouts and false breakouts of trendlines and hlines
      if(MA>cprice &&Ask<cprice)
      {
         if(trendline) { return(OP_BUY_); } else if(hline) { return(OP_BUY_); }
      } else if (MA>cprice &&Ask<cprice) {
        if(trendline) { return(OP_SELL_); } else if(hline) { return(OP_SELL_); }    
      }
     }
   return(EMPTY_VALUE);       
}

double GetCurrentPriceOfLine(string label, int shift)
{
   double price1 = ObjectGet(label, OBJPROP_PRICE1);
   double price2 = ObjectGet(label, OBJPROP_PRICE2);
   datetime d1   = ObjectGet(label, OBJPROP_TIME1);
   datetime d2   = ObjectGet(label, OBJPROP_TIME2);
   int shiftfrom = iBarShift(Symbol(), 0, d1, false);
   int shiftto   = iBarShift(Symbol(), 0, d2, false);
   int lapse = MathAbs(shiftto - shiftfrom);
   int distance = MathAbs(shift - shiftfrom);
   double pendiente = (price2 - price1) / lapse;
   double cpoint = price1 + (distance * pendiente);
   return(cpoint);
}
  //-------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;

//--------------------------------------------------------------------+
//---- buy conditions 
 if(OP_BUY_&&b_1)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*Point),Ask+TakeProfit*Point," VV",MAGIC,0,Green);
      b_1=false; s_1=true; 
      return;
     }  

//---- sell conditions
     if(OP_SELL_&&s_1)
 {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+(StopLoss*Point),Bid-TakeProfit*Point," VV",MAGIC,0,Red);
        s_1=false;b_1=true;
      return;
     } 
//----
  }

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;

//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
  }   

//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
 
LRA:

Загрузил программу в блокнот и удалил пустые строки. Появилась возможность охватить взглядом. Нажал кнопку SRC и вставил. Вот что получилось. 1) Зачем определять

если уже есть OP_BUY=0  и OP_SELL=1

2) Корень зла вот в этом куске. Одно и то же условие (MA>cprice &&Ask<cprice) дважды проверяется, и принимаются разные решения.

3) Далее в каждой ветви выполняются проверки, а результат все равно один и тот же

и вообще строку выше можно упростить и записать так


Спасибо за ответ переделал но все равно открывает только SELL как я понял Так как  OP_SELL =1. Это условие всегда выполняется. Я переделал так

ордера перестали открываться помоему не работает    int CheckBreakoutLines(int shift) Может не там где надо стоит?

//+------------------------------------------------------------------+
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                             http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC  131313 // открытие внутрь канала
//---------------------------------------
extern int TF=15;
extern int    StopLoss          = 300;
extern double TakeProfit = 3000;
extern int Per_MA= 20;
extern double Lots              = 0.1;
extern double MaximumRisk       = 1;
extern double DecreaseFactor    = 0;
bool OP_BUY_= false;   
bool OP_SELL_ =false;   

bool b_1=true, s_1=true;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
 double MA=iMA(NULL,TF,Per_MA,0,0,0,1);
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//---- select lot size
  //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100/MarketInfo(Symbol(),MODE_TICKVALUE)/StopLoss,2);
//---- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2);
     }
//---- return lot size
   if(lot<0.01) lot=0.01;
   return(lot);
  }
  //-------------------------------------------------

  /* эта часть из индикатора*/
  int CheckBreakoutLines(int shift)
{
   // Total Objects 
   int obj_total = ObjectsTotal();
   // Time of bar 
   datetime now = Time[shift];
   // Iterate
   for(int i = obj_total - 1; i >= 0; i--)
   {
      // Object name
      string label = ObjectName(i);
      // Types
      int OType = ObjectType(label);
      bool trendline = false;
      bool hline = false;
      // Price to evaluate
      double cprice = 0;
      // Trendlines
      if(OType == OBJ_TREND )
      {
         bool ray = ObjectGet(label, OBJPROP_RAY);
         if(!ray)
         {
            datetime x1 = ObjectGet(label, OBJPROP_TIME1);
            datetime x2 = ObjectGet(label, OBJPROP_TIME2);
            if(x1 < now && x2 < now) continue;
         }
         cprice = GetCurrentPriceOfLine(label, shift);
         trendline = true;
      } else if(OType == OBJ_HLINE ) {
         cprice = ObjectGet(label, OBJPROP_PRICE1);
         hline = true;
      } else {
         continue;
      }
      // Breakouts and false breakouts of trendlines and hlines
      if(MA>cprice &&Ask<cprice)
      {OP_BUY_= true;
         if(trendline ||hline)  return (OP_BUY_); 
      } else if (MA<cprice &&Bid>cprice) {OP_SELL_ =true;
        if(trendline ||hline)  return (OP_SELL_);     
      }
     }
   return(EMPTY_VALUE);       
}

double GetCurrentPriceOfLine(string label, int shift)
{
   double price1 = ObjectGet(label, OBJPROP_PRICE1);
   double price2 = ObjectGet(label, OBJPROP_PRICE2);
   datetime d1   = ObjectGet(label, OBJPROP_TIME1);
   datetime d2   = ObjectGet(label, OBJPROP_TIME2);
   int shiftfrom = iBarShift(Symbol(), 0, d1, false);
   int shiftto   = iBarShift(Symbol(), 0, d2, false);
   int lapse = MathAbs(shiftto - shiftfrom);
   int distance = MathAbs(shift - shiftfrom);
   double pendiente = (price2 - price1) / lapse;
   double cpoint = price1 + (distance * pendiente);
   return(cpoint);
}
  //-------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;

//--------------------------------------------------------------------+
//---- buy conditions 
 if(OP_BUY_&&b_1)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*Point),Ask+TakeProfit*Point," VV",MAGIC,0,Green);
      b_1=false; s_1=true; 
      return;
     }  

//---- sell conditions
     if(OP_SELL_ &&s_1)
 {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+(StopLoss*Point),Bid-TakeProfit*Point," VV",MAGIC,0,Red);
        s_1=false;b_1=true;
      return;
     } 
//----
  }

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
  }   

//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
Warstein
Warstein
  • www.mql5.com
Профиль трейдера
 

Уважаемые специалисты. Что надо сделать до установки, при установке МТ4 или после, чтобы в последствии история котировок писалась\считывалась с любого диска кроме системного или это НЕ возможно?

МТ4 от всех брокеров сваливают всё на  C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (для каждого брокера и для каждого их терминала соответственно). По два МТ4 у двух брокеров для 3-4 пар съело 25Гбайт, то есть всю свободную память.  Там же ещё необходимые котировки при тестировании подгружаются в тестер C:\Users\.......\tester\history. 

Прошу помочь советом, не учитывающим переустановки Винды(у меня7) с перераспределением размеров дисков. Может я что то не так делаю? Если я пропустил, и это где то уже обсуждалось - бросьте пожалуйста в меня ссылкой... 

Заранее благодарен.

 
piranija:

Уважаемые специалисты. Что надо сделать до установки, при установке МТ4 или после, чтобы в последствии история котировок писалась\считывалась с любого диска кроме системного или это НЕ возможно?

МТ4 от всех брокеров сваливают всё на  C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (для каждого брокера и для каждого их терминала соответственно). По два МТ4 у двух брокеров для 3-4 пар съело 25Гбайт, то есть всю свободную память.  Там же ещё необходимые котировки при тестировании подгружаются в тестер C:\Users\.......\tester\history. 

Прошу помочь советом, не учитывающим переустановки Винды(у меня7) с перераспределением размеров дисков. Может я что то не так делаю? Если я пропустил, и это где то уже обсуждалось - бросьте пожалуйста в меня ссылкой... 

Заранее благодарен.

Перенеси простым копированием всю папку терминала на не системный диск, создай ему ярлык и пропиши ключ /portable


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