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

 
alvlaf:
Je l'ai essayé, les cinq premières minutes ont bien fonctionné, puis j'ai commencé à ouvrir plusieurs trades simultanément (4) et sur la même paire avec un lot augmenté. Alexander, je ne suis pas très clair dans votre version, comment la variable globale obtient et change sa valeur ?
Donc, commencez successivement. Tout d'abord, testez toutes les transactions possibles sur une paire, puis sur plusieurs. (4) est le nombre de transactions?
Au démarrage de l'EA, la variable est affectée à 1, s'il n'y en a pas (dans votre cas, il y en a certainement une, car elle est stockée pendant 4 semaines). A chaque tick, cette variable autorise ou non les nouvelles transactions - c'est sa seule signification. Si une transaction est perdante ou non rentable, AllowNewOrders=0, sinon - 1. Avant de vérifier les signaux d'achat/vente, cette variable est vérifiée et la boucle est retirée de la boucle, sans ouvrir aucun ordre. Si 4 ordres sur un symbole sont ouverts, de plus avec un lot plus important, CountTrades ne fonctionne évidemment pas. Je ne peux pas le vérifier moi-même, car l'Internet est très très très mauvais là où je suis. Et d'ailleurs, pour moi, sur les options de Grand Capital, quel que soit le délai, un nouveau tick n'apparaît qu'avec une nouvelle bougie - est-ce la même chose pour vous ?

 
A13ksandr:
Vous commencez donc de manière séquentielle. Testez d'abord sur une paire toutes les transactions possibles, puis sur quelques-unes seulement. (4) - est-ce le nombre de transactions ?
Au démarrage de l'EA, la variable est affectée à 1, s'il n'y en a pas (dans votre cas, il y en a certainement une, car elle est stockée pendant 4 semaines). A chaque tick, cette variable autorise ou non les nouvelles transactions - c'est sa seule signification. Si une transaction est perdante ou non rentable, AllowNewOrders=0, sinon - 1. Avant de vérifier les signaux d'achat/vente, cette variable est vérifiée et la boucle est retirée de la boucle sans ouvrir un ordre. Si 4 ordres sur un symbole sont ouverts, de plus avec un lot plus important, CountTrades ne fonctionne évidemment pas. Je ne peux pas le vérifier moi-même, car l'Internet est très très mauvais là où je suis. Et d'ailleurs, pour moi, sur les options de Grand Capital, quel que soit le délai, un nouveau tick n'apparaît qu'avec une nouvelle bougie - est-ce la même chose pour vous ?

Alexander, je pense qu'il n'est pas correct d'assigner 1 à la variable globale lors du lancement, car nous devons attendre qu'au moins un ordre s'ouvre. Je pense que nous devrions lier la valeur de AllowNewOrders àOrdersTotal ou CountTrades, afin qu'elle change lorsque la première série s'ouvre. Je vais essayer de le faire aujourd'hui, mais je suis très inexpérimenté, donc si vous me dites comment l'énoncer correctement dans le code, je vous en serai très reconnaissant. Dans mon terminal, les ticks arrivent à n'importe quel moment de la barre actuelle, même sur M1. (4) - est le nombre de transactions ouvertes par le robot en une seule fois. Et je l'ai testé comme vous le conseillez.
 
trader_fx:
https://docs.mql4.com/ru/objects/objectgetdouble
https://docs.mql4.com/ru/objects/objectgetinteger

Merci ! Je l'ai. Maintenant, voici une question. Ces fonctions permettent d'obtenir des valeurs à partir d'objets. Mais comment obtenir les valeurs de, disons, des flèches,

qui sont visibles dans le graphique, mais ne sont pas visibles dans la liste des objets. Par exemple, si les flèches sont dessinées, par exemple :

SetIndexStyle(0, DRAW_ARROW) ;

SetIndexArrow(0, 234) ;

\\\\

ObjectsTotal() (et d'autres fonctions objet) ne voient pas ces flèches.....

 
ilmel:

Merci ! Je l'ai. Maintenant, voici une question. Ces fonctions permettent d'obtenir des valeurs à partir d'objets. Mais comment obtenir les valeurs de, disons, des flèches,

qui sont visibles dans le graphique, mais ne sont pas visibles dans la liste des objets. Par exemple, si les flèches sont dessinées, par exemple :

SetIndexStyle(0, DRAW_ARROW) ;

SetIndexArrow(0, 234) ;

\\\\

ObjectsTotal() ( et d'autres fonctions objet) ne voient pas ces flèches.....

iCustom à la rescousse

 
Bonjour ! Quelqu'un sait-il ce qu'il faisait le 2 septembre ?
 

Bonsoir, pouvez-vous me dire où se trouve l'erreur, j'ai pris l'indicateur du tutoriel mql4https://book.mql4.com/ru/samples/icustom. Mais je veux que l'enveloppe soit dans une fenêtre séparée. Dans la capture d'écran, dans la fenêtre principale l'indicateur du tutoriel, dans la fenêtre inférieure j'ai

.Capture d'écran

#property strict
#property indicator_separate_window
#property indicator_minimum 1
#property indicator_buffers 1
#property  indicator_color1 Blue

double Buf_0[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  SetIndexBuffer(0,Buf_0);
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,clrAqua);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,                           // Индекс бара
       Counted_bars;                // Количество просчитанных баров 
    Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   while(i>=0)                      // Цикл по непосчитанным барам
     {
      Buf_0[i]=Close[i];             // Значение 0 буфера на i-ом баре     
      i--;                          // Расчёт индекса следующего бара
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
bobrush:

Bonsoir, pouvez-vous me dire où se trouve l'erreur, j'ai pris l'indicateur du tutoriel mql4https://book.mql4.com/ru/samples/icustom. Mais je veux que l'enveloppe soit dans une fenêtre séparée. Vous pouvez voir l'indicateur du livre dans la fenêtre principale et dans la fenêtre inférieure - mon indicateur.


Pourquoi devrais-je fixer un minimum ?

#property indicator_minimum 1 ???

Pourquoi dois-je utiliser deux couleurs différentes ?

Mais la principale erreur résidait dans le style de la mémoire tampon, le nombre de paramètres étant un peu élevé.

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,0,indicator_color1) ;

Eh bien, ça ressemble à ça :

#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property  indicator_color1 Blue

double Buf_0[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  SetIndexBuffer(0,Buf_0);
  SetIndexStyle(0,DRAW_LINE,0,0,indicator_color1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i=rates_total-prev_calculated-1;
   if(prev_calculated>0)     i++;

   while(i>=0)                      // Цикл по непосчитанным барам
     {
      Buf_0[i]=сlose[i];             // Значение 0 буфера на i-ом баре     
      i--;                          // Расчёт индекса следующего бара
     }
   return(rates_total);
  }
 
evillive:

Pourquoi fixer un minimum ?

#property indicator_minimum 1 ???

Oui, et la couleur deux fois, pourquoi, et différente ?

Mais l'erreur principale est dans le style du tampon, le nombre de paramètres était un peu erroné.

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,0,indicator_color1) ;

Eh bien, ça ressemble à ça :

Merci beaucoup ! A propos de#propertyindicator_minimum1 Je ne sais pas à quoi il sert :) si ce n'est difficile à expliquer ? Mon expérience en programmation est de 3 EAs qui ont échoué

 
bobrush:A propos de#propertyindicator_minimum1 Je ne sais pas à quoi il sert :) Si ce n'est pas difficile à expliquer ?

La limite inférieure de l'échelle d'une fenêtre d'indicateur séparée, tout ce qui est en dehors des limites n'est pas affiché dans la fenêtre. Habituellement, le minimum-maximum est défini lorsque vous avez besoin d'une échelle d'indicateur fixe et que vous savez que ses valeurs ne dépassent pas cette limite.
 
evillive:

La limite inférieure de l'échelle de la fenêtre de l'indicateur individuel. Tout ce qui se trouve en dehors de cette limite n'est pas affiché dans la fenêtre. Habituellement, le minimum-maximum est fixé lorsqu'une échelle d'indicateur fixe est requise et que l'on sait que ses valeurs ne doivent pas dépasser cette limite.
oh, juste ce que je cherchais, merci)