どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1139

 
kuznat399:
アンドロイド用のロボットはないのですか?


メタトレーダーのモバイル版には 自動売買はなく、当分登場することはないでしょう。スマホからロボットを操作する場合は、ロボットのある端末をホストするVPS+スマホでリモートアクセスするためのソフトが必要です。
 
テスター(ビルド1065)でビジュアライゼーションが表示されないのですが、修正可能でしょうか?
 
MT5で通貨ペアの週足チャートを10枚開くと、800メガバイトのティック履歴が ターミナルに読み込まれます。チャート上ではほとんど変化がないのに、常にロードされているのです。問題は、週足チャートしか使わないのに、なぜティック履歴が必要なのかということです。ちなみに、MT4では週足チャートは遅延なく即座に開く。
 
sober:
MT5で通貨ペアの週足チャートを10枚開くと、ターミナルに800メガバイトのティック履歴が 読み込まれます。チャート上ではほとんど変化がないのに、常にロードされているのです。問題は、週足チャートしか使っていないのに、なぜティック履歴が必要なのかということです。ちなみに、MT4では週足チャートは遅延なく瞬時に開く。


これはmt5の特徴で、m1ですべてをロードしてから必要な期間を構築する......。....

というように、毎回、各シンボルに対して

 
MT5用のプラグインブロックは2種類(シグナル・発注ブロック、トレーリングブロック)あります。MQL5で撮りました。MQL5Include︓Expert︓SignalとMQL5Include︓Expert︓ファイルを配置しました。お願いしているのです。
 

EAのアイデアは、価格が水平レベルまたは手動で引いたトレンドラインに触れたときに売買することです。いろいろな動作するEAとインジケータを組み合わせてEAを作りました。しかし、EAが動作しない。というか、最初のティックでシグナルが出ずにSELLしか開きません。どうしたんですか?

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

//| |

//| 著作権 © 2010, MetaQuotes Software Corp.

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

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

#define MAGIC 131313 //内向きのチャンネルを開く

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



extern inttern TF=15;


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

extern int StopLoss = 300;

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



extern double TakeProfit = 3000;

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


extern int Per_MA= 20;



//---- 定数


#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 とする。


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

///オープンポジションの計算

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

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





int CalculateCurrentOrders(文字列シンボル)

{

int buys=0,sells=0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。

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

{

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

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

}

}

//---- リターンオーダー数

if(buys>0) return(buys);

else return(-sells);

}

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

//| 最適なロットサイズを計算する

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

double LotsOptimized()

{

double lot=ロット。

int orders=HistoryTotal(); // ヒストリーの受注総額

int losses=0; // ブレークしないロスオーダーの数

//---- ロットサイズを選択する

//lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2)とする。

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

//---- 損切り注文の回数を計算する。

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)ブレーク。

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

}

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

}

//---- ロットサイズを返す

if(lot<0.01) lot=0.01;

return(lot)です。

}

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

/* インジケータからこの部分

int CheckBreakoutLines(int shift)

{

// オブジェクトの総数

int obj_total = ObjectsTotal();

// バーの時間

datetime now = Time[shift];

// 繰り返し

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

{

// オブジェクト名

文字列ラベル = ObjectName(i);

// タイプ

int OType = ObjectType(label)。

bool trendline = false;

bool hline = false;

// 評価する価格

double cprice = 0;

// トレンドライン

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(ラベル、シフト);

trendline = true。

}else if(OType == OBJ_HLINE ) {.

cprice = ObjectGet(label, OBJPROP_PRICE1);

hline = true。

}else {

を続ける。

}

// トレンドラインとHラインのブレイクアウトとフォールスブレイクアウト

if(MA>cprice &&Ask<cprice)

{

if(トレンドライン) { return(OP_BUY_); }.else if(hline) { return(OP_BUY_); }.

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

if(トレンドライン) { return(OP_SELL_); }.else if(hline) { return(OP_SELL_); }.

}

}

return(EMPTY_VALUE)とする。

}


double GetCurrentPriceOfLine(文字列ラベル、intシフト)

{

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)です。

}


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

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

//| 開注文条件のチェック

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

void CheckForOpen()

{

int res;


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

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

//---- 買付条件

if(OP_BUY_&&b_1)

{

res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*ポイント)、Ask+TakeProfit*ポイント、" VV",MAGIC,0,Green);

b_1=false; s_1=true とする。

を返します。

}


//---- 販売条件

if(OP_SELL_&&s_1)

{

res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+(StopLoss*ポイント),Bid-TakeProfit*ポイント," VV",MAGIC,0,Red) です。

s_1=false;b_1=true とする。

を返します。

}

//----

}


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

//| 機能開始

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

void start()

{

//---- 履歴と取引を確認する

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

//---- 現在のシンボルで未決済注文を計算する

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

}


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

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

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

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

EAのアイデアは、価格が水平レベルまたは手動で引いたトレンドラインに触れたときに売買することです。いろいろな動作するEAとインジケータを組み合わせてEAを作りました。しかし、EAが動作しない。というか、最初のティックでシグナルが出ずにSELLしか開きません。どうしたんですか?

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

//| |

//| 著作権 © 2010, MetaQuotes Software Corp.

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

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

#define MAGIC 131313 //内向きのチャンネルを開く

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



extern inttern TF=15;


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

extern int StopLoss = 300;

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



extern double TakeProfit = 3000;

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


extern int Per_MA= 20;



//---- 定数


#define OP_BUY_ 0

#define OP_SELL_ 1



//---- 履歴と取引を確認する

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

//---- 現在のシンボルで未決済注文を計算する

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)を2回チェックし、異なる判定を行う。

      // 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)を2回チェックし、異なる判定を行う。

3) その後、各ブランチがチェックを行うが、結果は同じままである

上の行を簡略化して書くと、次のようになります。


ご返答ありがとうございます。しかし、OP_SELL=1なので、やはりSELLしか開きませんね。この条件は常に満たされている。このように書き直しました。

注文が開かなくなった、私の意見では、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
Профиль трейдера
 

プロフェッショナルの皆様へ。MT4をインストールする前、またはインストールした後に、システムディスク以外のディスクから相場履歴を読み書きできるようにする、またはできないようにするにはどうしたらよいでしょうか。

MT4 from all brokers dump everything to C:\UsersMAN@AppDataRoaming@MetaQuotes@Terminal@100......001history@downloads (for each broker and for each their terminal respectively).2つのブローカーで3-4組のMT4を使用すると、25GB、すなわちすべての空きメモリを消費します。また、必要な引用文はテスターのC: \Usersers......\testerhistory にロードされています。

Windows(7)の再インストールとディスクサイズの再割り当ては考慮しないので、アドバイスをお願いします。もしかして、私のやり方が悪いのか?もし私が見落としていて、すでにどこかで議論されているのであれば、リンクを投げてください...。

ありがとうございました。

 
piranija:

プロフェッショナルの皆様へ。MT4をインストールする前、またはインストールした後に、システムディスク以外のディスクから相場履歴を読み書きできるようにする、またはできないようにするにはどうしたらよいですか?

MT4 from all brokers dump everything to C:\UsersMAN@AppDataRoaming@MetaQuotes@Terminal@100......001history@downloads (for each broker and for each their terminal respectively).2つのブローカーで3-4ペアのMT4が25GB、つまり全ての空きメモリを食いました。また、必要な引用文はテスターのC: \Usersers......\testerhistory にロードされています。

Windowsの再インストール(7を使用しています)とディスクサイズの再割り当ては考慮せずに、アドバイスお願いします。もしかして、私のやり方が悪いのか?もし私が見落としていて、すでにどこかで議論されているのであれば、リンクを投げてください...。

ありがとうございました。

ターミナルフォルダ 全体をシステムドライブ以外にコピーし、そのショートカットを作成し、/portable スイッチを書き込むだけです。