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

 
Artyom Trishkin:

Salut ... Comment ça, tu ne peux pas ?

Qu'est-ce que c'est, alors ? Cinq minutes dans l'éditeur...

C'est parfait !

Une équipe ?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........
ne fonctionne pas((( //MT4, build 1031
 
Renat Akhtyamov:

MERCI !

De toute façon.

Le déplacement de la ligne dans la fenêtre de l'indicateur vers la droite, au-delà de la barre de zéro, fonctionne sur la plateforme MT5.

MT4 n'a pas cette fonctionnalité, ça n'a pas marché, quoi que je fasse.

De plus, MT5, pour autant que je sache, a une capacité de modélisation en 3D, contrairement à MT4.

Tout cela est très cool !

J'ai craqué.

Je passe à MT5 ! !! // Et je le fais de toute urgence ;)

Qu'est-ce qui est impossible ? Déplacer le tampon indicateur vers la droite ? Oui, vous pouvez, même à droite ou à gauche ;) SetIndexShift().

Mais si vous avez décidé de passer à MT5, allez-y ;)

 
Renat Akhtyamov:

C'est génial !

Le commandement ?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........

J'ai stupidement inversé les dix dernières valeurs du tampon de calcul et sorti avec un décalage de 10 mesures. Je n'ai même pas pensé à une quelconque optimisation ou autre. Juste pour vous montrer :

//+------------------------------------------------------------------+
//|                                                  iCheckShift.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot BufferCurrent
#property indicator_label1  "BufferCurrent"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot BufferFuture
#property indicator_label2  "BufferFuture"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrDodgerBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2
//--- input parameters
input int      Shift=10;   // Смещение в будущее (баров)
//--- indicator buffers
double         BufferCurrent[];
double         BufferFuture[];
double         BufferCalculate[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(3);
   SetIndexBuffer(0,BufferCurrent,INDICATOR_DATA);
   SetIndexBuffer(1,BufferFuture,INDICATOR_DATA);
   SetIndexBuffer(2,BufferCalculate,INDICATOR_CALCULATIONS);
   SetIndexShift(1,Shift);
//---
   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[])
  {
//---
   if(rates_total<1) return(0);
   ArraySetAsSeries(BufferCalculate,true);
   ArraySetAsSeries(BufferCurrent,true);
   ArraySetAsSeries(BufferFuture,true);
   int limit=rates_total-prev_calculated;
   if(limit>1) {
      limit=rates_total-1;
      ArrayInitialize(BufferCalculate,EMPTY_VALUE);
      ArrayInitialize(BufferCurrent,EMPTY_VALUE);
      ArrayInitialize(BufferFuture,EMPTY_VALUE);
      }
   for(int i=limit; i>=0; i--) {
      BufferCurrent[i]=(high[i]+low[i])/2.0;
      if(i<Shift) BufferCalculate[i]=(high[i]+low[i]+open[i]+close[i])/4.0;
      }
   for(int i=0; i<Shift; i++) {
      BufferFuture[Shift-i]=BufferCalculate[i];
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Vitalie Postolache:

Qu'est-ce qui n'est pas possible ? Déplacer le tampon indicateur vers la droite? Oui, vous pouvez, à droite ou à gauche ;)

Mais si vous avez décidé de passer à MT5, allez-y ;)

J'ai écrit mon code ci-dessus. N'est-ce pas ?
 
Renat Akhtyamov:
votre code écrit ci-dessus. N'est-ce pas ?
Je l'ai ajouté ici. SetIndexShift(). Et Artem l'a écrit plus explicitement.
 
Vitalie Postolache:
Je l'ai ajouté ici. SetIndexShift(). Et Artiom l'a écrit plus en détail.

Enfin ! Problème résolu.

int j=0;
...
start()
{
........
      j=j+10;
      SetIndexShift(0,j);

Tout fonctionne sur MT4.

MERCI BEAUCOUP ! !!

 
Bonjour !
Ma question est la suivante :
Il y a un MACD dans la fenêtre de l'indicateur qui a une certaine valeur "A" calculée sur le prix actuel. Quelle serait la formule pour calculer la valeur du prix si la valeur MACD actuelle devenait "-A" ?
 
Leo59:
Bonjour !
Ma question est la suivante :
Il y a un MACD dans la fenêtre de l'indicateur qui a une certaine valeur "A" calculée sur le prix actuel. Quelle doit être la formule qui calcule la valeur du prix si la valeur MACD actuelle devient "-A" ?
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_MACD
Индикатор MACD — Википедия
Индикатор MACD — Википедия
  • ru.wikipedia.org
Индикатор используют для проверки силы и направления тренда, а также определения разворотных точек. Строится на основе скользящих средних. Существует две модификации индикатора MACD: линейный MACD и MACD-гистограмма. Для расчёта линейного MACD из скользящей средней цены (обычно берётся экспоненциальная скользящая средняя с меньшим периодом...
 
Renat, merci bien sûr pour votre participation..... Mais, la question portait sur autre chose :
Il y a un MACD dans la fenêtre de l'indicateur, qui a une certaine valeur "A" calculée sur le prix actuel. Quelle doit être la formule pour calculer la valeur du prix si la valeur MACD actuelle devient "-A" ?
 
Leo59:
Renat, merci, bien sûr, pour votre participation..... Mais, la question portait sur autre chose :
Il y a un MACD dans la fenêtre de l'indicateur, qui a une certaine valeur "A" calculée sur le prix actuel. Quelle serait la formule pour calculer la valeur du prix si la valeur MACD actuelle devenait "-A" ?
Il serait peut-être utile de montrer la formule permettant de calculer quand une certaine valeur de "A" a une valeur positive - on ne sait pas très bien de quoi on parle.
Raison: