[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 108

 
paladin80:
Je cherche des conseils auprès de l'intelligence collective. J'ai mis le conseiller expert en mode démo et j'ai modifié un peu son code. (1) Pour le remplacer dans MT4, puis-je simplement suspendre son action (sans fermer MT4), le remplacer par un nouveau dans le dossier .../experts/ (avec le même nom), puis autoriser à nouveau le trading dans le panneau supérieur de MT4 ? (2) Ou dois-je fermer MT4 et transférer l'EA dans .../experts/ comme d'habitude et le faire glisser sur le graphique ?

Lorsque l'EA fonctionne sur le graphique, seule sa recompilation à cet endroit entraîne son déchargement automatique et son rechargement sur le graphique. Et avec des paramètres par défaut.

Sinon, l'EA reste en mémoire et même la suppression de son fichier ex4 n'entraînera pas sa suppression du graphique.

 

Bon après-midi.

Existe-t-il un moyen de modifier les propriétés indicator_minimum et indicator_maximum quand on le souhaite, au lieu de les définir comme constantes une fois dans le préprocesseur ? Je n'ai rien trouvé d'utile dans la documentation.

 
Solree:

Bon après-midi.

Existe-t-il un moyen de modifier les propriétés indicator_minimum et indicator_maximum quand on le souhaite, au lieu de les définir comme constantes une fois dans le préprocesseur ? Je n'ai rien trouvé d'utile dans la documentation.

Dans les paramètres de l'indicateur, onglet "commun". Vous ne pouvez pas le faire avec le logiciel MQL.
 
alsu:
Dans les paramètres de l'indicateur, onglet "général". Vous ne pouvez pas utiliser le logiciel MQL.
C'est dommage... Je vous remercie de votre réponse.
 
alsu:
Dans les paramètres de l'indicateur, onglet "général". Vous ne pouvez pas utiliser le logiciel MQL.
Vous pouvez. Seulement dans le mauvais sens. Grâce à un tampon supplémentaire. Il est vrai qu'il sera impossible de définir une valeur minimale inférieure à la valeur de fonctionnement.
 
Zhunko:
Vous pouvez. Seulement tordu. Utilisez un tampon supplémentaire. Toutefois, il ne sera pas possible de fixer un minimum inférieur au minimum vital.
Et vous ne pouvez pas non plus fixer un maximum supérieur à celui qui est prédéfini ;))
 
alsu:
Et vous ne pouvez pas non plus aller plus haut que le maximum préétabli)).

Zhunko:
Oui, vous pouvez. Seulement déformé. Grâce à un tampon supplémentaire. Il est vrai qu'il sera impossible de fixer un minimum inférieur au minimum vital.

Pourquoi ? Si tout est contrôlé de manière interne et programmatique, alors modifiez et contrôlez tout comme vous le souhaitez.

Vous pouvez réduire les valeurs à VIDE, ou vous pouvez élargir les tampons.

 
sergeev:

pourquoi ? si tout est interne et contrôlé par programme, alors changez et contrôlez le tout comme vous le souhaitez.

Vous voulez couper les valeurs à VIDE, ou vice versa, élargissez les tampons.

Répondu pour le tampon.

J'ai un tampon qui est responsable du balayage vertical. J'édite les lignes avec des objets graphiques. C'est pourquoi tout s'échelonne correctement dans les deux sens.

 
Pouvez-vous nous donner un peu plus de détails à ce sujet ? Un morceau de code avec ceci, si vous le voulez bien :)
 
Bonsoir, une autre question s'est posée. Voici une partie du code :
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1

extern string Symbol1.Name = "EURUSD";     // Название инструмента 1
extern bool   Symbol1.Reverse = false;     // Является ли инструмент 1 реверсивным (с обратной корреляцией) 
                                           // по отношению к остальным инструментам
extern string Symbol2.Name = "EURUSD";     // Название инструмента 2
extern bool   Symbol2.Reverse = false;     // Является ли инструмент 2 реверсивным (с обратной корреляцией) 

extern int MA.Slow = 80;                   // Период медленной МА

// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент

// Параметры графических объектов        
string Label.Name = "label";  
int wndNum;                                // Номер подокна индикатора
string wndName;                            // Наименование окна
string oSymb1,oSymb2;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() { 
  // Задаем имена графическим объектам
  oSymb1=Symbol1.Name;
  oSymb2=Symbol2.Name;

  // Формируем свойства графиков индикатора
  IndicatorBuffers(2);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0,Symbol1.Name);

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2.Name);

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()  {
  // Удаляем все графические объекты
  DeleteObject(oSymb1);
  DeleteObject(oSymb2); 
  return(0);  
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  // Подсчет количества баров для построения индикатора
  int limit; int counted_bars=IndicatorCounted();
  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
  
  // Определяем параметры окна индикатора
  wndNum=WindowFind(WindowExpertName());
  wndName=WindowExpertName()+wndNum; 
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
    Buf1[i]= iMA(Symbol1.Name,0,MA.Slow,0,MODE_SMA,PRICE_CLOSE,i); }
    
  for (i=0; i<limit; i++) {
    Buf2[i]= iMAOnArray(Buf1,0,MA.Slow,0,MODE_SMA,i); }
Comment faire pour que Buf1 ne soit pas du tout affiché dans la fenêtre de l'indicateur ?
Raison: