Questions des débutants MQL5 MT5 MetaTrader 5 - page 876

 
Vitaly Muzichenko:

Malheureusement, je n'ai pas trouvé l'article, peut-être que quelqu'un d'autre peut le suggérer.

Vous ne pourrez pas passer d'ordres car vous ne pourrez pas saisir le bon prix de fixation. Il en va de même pour les lots.

J'ai réglé avec la souris.

  • Cliquez au-dessus du prix+Ctrl - Limite de vente
  • Cliquez sur le prix inférieur+Ctrl -Buy Limit
  • Cliquez au-dessus du prix+Ctrl+Shift - Stop à l'achat
  • Cliquez en dessous du prix+Ctrl+Shift - Stop de vente
Vous pouvez également déplacer BuyStopLimit et SellStopLimit.
 
Artyom Trishkin:

Je parie avec la souris.

  • Cliquez au-dessus du prix+Ctrl - Limite de vente
  • Cliquez sur le prix inférieur+Ctrl -Buy Limit
  • Cliquez au-dessus du prix+Ctrl+Shift - Stop à l'achat
  • Cliquez en dessous du prix+Ctrl+Shift - Stop de vente
Vous pouvez également mettre BuyStopLimit et SellStopLimit avec le shifft.

Le panneau de contrôle de cet article https://www.mql5.com/ru/articles/62 fonctionnera dans le testeur (seulement les boutons) ?

Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • 2010.04.15
  • Евгений
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
 
Sergey Savinkin:

Le panneau de contrôle de cet article https://www.mql5.com/ru/articles/62 fonctionnera dans le testeur (boutons seulement) ?

Essayez donc - qu'est-ce qui l'en empêche ?

Je viens d'écrire comment je place moi-même les ordres en attente dans le visualiseur.

 
Artyom Trishkin:

Alors essayez - qu'est-ce qui vous arrête ?

J'ai simplement écrit comment je règle les ordres en attente dans le visualiseur.

Je l'essaie maintenant. Je ne voulais pas perdre de temps, je n'ai pas besoin du panneau dans le fonctionnement du robot, j'en ai juste besoin pour un test. Je n'avais donc pas l'intention d'étudier le sujet en détail.

 
Bon article, mais l'événementOnChartEvent() n'est pas appelé dans le testeur, les boutons ne fonctionnent pas. J'ai trouvé la solution sur le forum https://www.mql5.com/ru/forum/42817/page2
Использование переменных в событии OnChartEvent индикатора в тестере
Использование переменных в событии OnChartEvent индикатора в тестере
  • 2016.02.25
  • www.mql5.com
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
 

Pouvez-vous me dire pourquoi lorsque je modifie le code ci-dessous de close[i-1] à close[i-2] le Array of Range se produit ? Le code a été écrit en suivant strictement le livre MQL5, mais il n'explique pas pourquoi le tampon est dépassé lorsque le prix est décalé de plus de 2 cellules.

  {
   int values_to_copy;
   int start;
   int calculated=BarsCalculated (iBands1_handle);

   
   if (calculated <=0)
   {
    return (0);
   }
   if (prev_calculated==0 || calculated!=bars_calculated)
   {
    start=1;
    if (calculated> rates_total) values_to_copy=rates_total;
    else values_to_copy=calculated;
    }
    else
    {
   start=rates_total-1;
   values_to_copy=1;
   }
   
   if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0);

   for (int i=start; i <rates_total &&!IsStopped ();i++)
   {
    Print("C ", close[i-2]);
   }
 
clickaider:

Pouvez-vous me dire pourquoi lorsque je modifie le code ci-dessous de close[i-1] à close[i-2] le Array of Range se produit ? Le code a été écrit en suivant strictement le livre MQL5, mais il ne décrit pas pourquoi le retrait du tampon se produit lorsque le prix est décalé de plus de 2 cellules.

D'après ce que je comprends, nous parlons d'un indicateur. Ainsi, considérons deux cas d'accès à un tableau de séries chronologiques"fermé" : (1) ce qui se passe lorsque"start" est égal à "1" et (2) ce qui se passe lorsque"start" est égal à "rates_total-1".

Calculez simplement dans votre esprit l'indice du tableau"close" résultant si vous essayez de faire "close[i-2]" pour le cas (1) et pour le cas (2).

 
Vladimir Karputov:

Je comprends que nous parlons d'un indicateur. Considérons donc deux cas d'accès au tableau de séries temporelles"proches" : (1) ce qui se passe lorsque"start" est égal à "1" et (2) ce qui se passe lorsque"start" est égal à "rates_total-1".

Calculez simplement dans votre esprit l'indice du tableau"close" résultant si vous essayez de faire "close[i-2]" pour le cas (1) et pour le cas (2).

Merci, j'ai vérifié, il y avait un besoin de mettre un nombre supérieur à 1 dans la valeur start = 1, le débogage a montré que l'erreur se produit lorsque le tableau de fermeture tente de prendre une valeur d'une cellule qui n'est pas encore apparue au début du recalcul.

 
Je voudrais créer un tableau à deux dimensions avec les heures d'ouverture et de clôture, les longueurs des chandeliers et les pips. Je veux créer un EA basé sur cet exemple en utilisant des mathématiques supérieures, à savoir l'intégrale triple. Supposons que x et y connaissent le prix et le temps, trouvez z - dans ce cas, je le fais.
 
Une autre question - si ce code établit la condition que le prix de clôture sera plus élevé que la ligne (supposons que cette condition est en fait avant le début du programme), le code fonctionne comme il le devrait, mais si nous ajoutons une condition inverse, c'est-à-dire des conditions actuelles différentes avant le début du code, les données ne seront pas correctes après le débogage. Veuillez me dire pourquoi cela se produit. Après tout, il ne s'agit que d'une comparaison dans une instruction de condition, pourquoi cela devrait-il avoir un quelconque effet négatif sur les performances du code ?
   for (int i = start; i < rates_total &&!IsStopped ();i++)
   {
    if(close[i] > Upper[i])
    Print("C ", close[i]);
    
Exemple : si
if(close[i] < Upper[i])

Le résultat du débogage est le suivant :

Les données se déroulent correctement, se rafraîchissant au même rythme que le prix.

Mais si nous fixons initialement une telle condition :

if(close[i] > Upper[i])

Alors le résultat sera incorrect :

C'est-à-dire que les valeurs des prix de clôture ne coïncident pas avec le prix actuel.


Je ne comprends pas pourquoi il en est ainsi.

Bloc de code de base dans le post