Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1139

 
kuznat399:
Y a-t-il des robots pour android ?


Il n'y a pas de négociation automatique dans la version mobile de Metatrader et il est peu probable qu'elle apparaisse dans un avenir proche. Si vous voulez contrôler le robot depuis votre téléphone, il vous faut un VPS qui hébergera le terminal avec le robot, + un logiciel pour l'accès à distance sur votre téléphone.
 
Pouvez-vous me dire si la visualisation ne s'affiche pas dans le testeur (build 1065) - cela peut-il être corrigé ?
 
J'ouvre dix graphiques hebdomadaires de paires de devises dans MT5 et 800 mégaoctets d'historique de ticks sont chargés dans le terminal. Il est constamment chargé, bien qu'il n'y ait pratiquement aucun changement sur les graphiques. La question est de savoir pourquoi j'ai besoin de l'historique des tics, si j'utilise uniquement des graphiques hebdomadaires ? À propos, sur MT4, les graphiques hebdomadaires s'ouvrent instantanément et sans délai.
 
sober:
J'ouvre dix graphiques hebdomadaires de paires de devises dans MT5 et le terminal charge 800 mégaoctets d'historique de ticks. Il est constamment chargé, bien qu'il n'y ait pratiquement aucun changement sur les graphiques. La question est de savoir pourquoi j'ai besoin de l'historique des tics, si j'utilise uniquement des graphiques hebdomadaires ? À propos, sur MT4, les graphiques hebdomadaires s'ouvrent instantanément sans aucun délai.


c'est une caractéristique de mt5 - tout charger sur m1 et ensuite construire la période requise... ....

et donc à chaque fois, pour chaque symbole

 
Il existe deux blocs d'extension pour MT5 (bloc de signal et de placement d'ordre et bloc de suivi). Je l'ai pris dans le MQL5. J'ai placé les fichiers "MQL5\Include\Expert\Signal" et "MQL5\Include\Expert". Je demande de l'aide.
 

L'idée de l'EA est d'acheter ou de vendre lorsque le prix touche un niveau horizontal ou une ligne de tendance tracée manuellement. J'ai créé un EA à partir de différents EA et indicateurs qui fonctionnent. Mais l'EA ne fonctionne pas. Ou plutôt, il ouvre seulement SELL sans aucun signal sur le premier tick. Qu'est-ce qui ne va pas ?

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

//| |

//| Copyright © 2010, MetaQuotes Software Corp.

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

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

#define MAGIC 131313 //ouverture du canal intérieur

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



extern inttern TF=15 ;


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

extern int StopLoss = 300 ;

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



extern double TakeProfit = 3000 ;

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


extern int Per_MA= 20 ;



//---- constantes


#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 ;


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

//| Calculer les positions ouvertes |

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

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++)

{

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

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

{

si(OrderType()==OP_BUY) achète++ ;

si(OrderType()==OP_SELL) vend++ ;

}

}

//---- volume des commandes de retour

if(buys>0) return(buys) ;

sinon retour(-vendues) ;

}

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

//| Calculer la taille optimale du lot |

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

double LotsOptimized()

{

double lot=Lots ;

int orders=HistoryTotal() ; // total des commandes historiques

int pertes=0 ; // nombre d'ordres de pertes sans pause

//---- sélectionner la taille du lot

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

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

//---- calcule le nombre d'ordres de pertes sans rupture.

si(Facteur de diminution>0)

{

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Erreur dans l'historique !") ; break ; }

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

//----

si(OrderProfit()>0) break ;

si(OrderProfit()<0) pertes++ ;

}

si(pertes>1) lot=NormaliserDouble(lot-lot*pertes/Facteur de réduction,2) ;

}

//---- retourner la taille du lot

si(lot<0.01) lot=0.01 ;

retour(lot) ;

}

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

/* cette partie de l'indicateur

int CheckBreakoutLines(int shift)

{

// Total des objets

int obj_total = ObjectsTotal() ;

// Heure de la barre

datetime now = Time[shift] ;

// Iterate

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

{

// Nom de l'objet

string label = ObjectName(i) ;

// Types

int OType = ObjectType(label) ;

bool trendline = false ;

bool hline = false ;

// Prix à évaluer

double cprice = 0 ;

// Lignes de tendance

si(OType == OBJ_TREND )

{

bool ray = ObjectGet(label, OBJPROP_RAY) ;

si(!ray)

{

datetime x1 = ObjectGet(label, OBJPROP_TIME1) ;

datetime x2 = ObjectGet(label, OBJPROP_TIME2) ;

si(x1 < maintenant && x2 < maintenant) continuer ;

}

cprice = GetCurrentPriceOfLine(label, shift) ;

trendline = true ;

} else if(OType == OBJ_HLINE ) {

cprice = ObjectGet(label, OBJPROP_PRICE1) ;

hline = true ;

} else {

continuer ;

}

// Breakouts et faux breakouts des lignes de tendance et des hlines

si(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 = (prix2 - prix1) / lapse ;

double cpoint = prix1 + (distance * pendiente) ;

retour(cpoint) ;

}


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

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

//| Vérifier les conditions d'un ordre ouvert |

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

void CheckForOpen()

{

int res ;


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

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

//---- conditions d'achat

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=faux ; s_1=vrais ;

retour ;

}


//---- conditions de vente

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=faux;b_1=vrai ;

retour ;

}

//----

}


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

//| Démarrer la fonction |

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

void start()

{

//---- vérifier l'historique et le commerce

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

//---- calculer les ordres ouverts par le symbole actuel

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

}


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

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

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

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

L'idée de l'EA est d'acheter ou de vendre lorsque le prix touche un niveau horizontal ou une ligne de tendance tracée manuellement. J'ai créé un EA à partir de différents EA et indicateurs qui fonctionnent. Mais l'EA ne fonctionne pas. Ou plutôt, il ouvre seulement SELL sans aucun signal sur le premier tick. Qu'est-ce qui ne va pas ?

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

//| |

//| Copyright © 2010, MetaQuotes Software Corp.

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

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

#define MAGIC 131313 //ouverture du canal intérieur

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



extern inttern TF=15 ;


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

extern int StopLoss = 300 ;

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



extern double TakeProfit = 3000 ;

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


extern int Per_MA= 20 ;



//---- constantes


#define OP_BUY_ 0

#define OP_SELL_ 1

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

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

//---- vérifier l'historique et le commerce

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

//---- calculer les ordres ouverts par le symbole actuel

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

}


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

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

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

J'ai chargé le programme dans le bloc-notes et supprimé les lignes vides. Il est devenu possible de couvrir d'un coup d'œil. J'ai appuyé sur le bouton SRC et j'ai collé. Voici ce qui est apparu. 1) Pourquoi auriez-vous besoin de définir

#define  OP_BUY_  0
#define  OP_SELL_ 1

si nous avons déjà OP_BUY=0 et OP_SELL=1

2) La racine de tout mal se trouve dans ce fragment. Une seule et même condition (MA>cprice &&Ask<cprice) est vérifiée deux fois, et des décisions différentes sont prises.

      // 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) Après cela, chaque branche effectue des vérifications mais le résultat est toujours le même.

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

D'une manière générale, la ligne ci-dessus peut être simplifiée et écrite comme suit

          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:

J'ai chargé le programme dans le bloc-notes et supprimé les lignes vides. Il est devenu possible de couvrir d'un coup d'œil. J'ai appuyé sur le bouton SRC et j'ai collé. Voici ce qui est apparu. 1) Pourquoi auriez-vous besoin de définir

si nous avons déjà OP_BUY=0 et OP_SELL=1

2) La racine de tout mal se trouve dans ce fragment. Une seule et même condition (MA>cprice &&Ask<cprice) est vérifiée deux fois, et des décisions différentes sont prises.

3) Après cela, chaque branche effectue des vérifications mais le résultat est toujours le même.

La ligne ci-dessus peut être simplifiée et écrite comme suit


Merci pour la réponse, mais il n'ouvre toujours que SELL, comme je le vois puisque OP_SELL = 1. Cette condition est toujours satisfaite. Je l'ai réécrit comme ceci

Les ordres ont cessé de s'ouvrir, à mon avis, int CheckBreakoutLines(int shift) ne fonctionne pas.

//+------------------------------------------------------------------+
//|                      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
Профиль трейдера
 

Chers professionnels. Que dois-je faire avant ou après l'installation de MT4 pour que l'historique des cotations puisse être écrit/lu à partir de n'importe quel disque sauf le disque système ou que ce ne soit PAS possible ?

MT4 de tous les courtiers dépose tout dans C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (pour chaque courtier et pour chaque terminal respectivement). Deux MT4 chez deux courtiers pour 3-4 paires ont consommé 25GB, c'est-à-dire toute la mémoire libre. Les citations nécessaires sont également chargées dans le testeur C:\Users\.......\tester\history.

S'il vous plaît, aidez-nous en ne prenant pas en compte la réinstallation de Windows (j'ai 7) avec la réallocation des tailles de disques. Peut-être que je fais quelque chose de mal ? Si je l'ai manqué et qu'il a déjà été discuté quelque part, envoyez-moi un lien...

Merci d'avance.

 
piranija:

Chers professionnels. Que dois-je faire avant ou après l'installation de MT4 pour que l'historique des cotations puisse être écrit/lu à partir de n'importe quel disque sauf le disque système ou que ce ne soit PAS possible ?

MT4 de tous les courtiers dépose tout dans C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (pour chaque courtier et pour chaque terminal respectivement). Deux MT4 chez deux courtiers pour 3-4 paires ont consommé 25GB, c'est-à-dire toute la mémoire libre. Les citations nécessaires sont également chargées dans le testeur C:\Users\.......\tester\history.

Veuillez me conseiller, sans tenir compte de la réinstallation de Windows (j'ai 7) avec réaffectation de la taille des disques. Peut-être que je fais quelque chose de mal ? Si je l'ai manqué et qu'il a déjà été discuté quelque part, envoyez-moi un lien...

Merci d'avance.

Il suffit de copier l'ensemble du dossier du terminal sur un lecteur hors système, de créer un raccourci vers celui-ci et d'écrire le commutateur /portable.