Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 903

 
Alexandr Sokolov:

J'ai un code qui n'est pas exécuté dans MQL5 dans mon indicateur

Le problème est que, si leprix == STO_LOWHIGH tout fonctionne correctement, mais si le prix == STO_CLOSECLOSE la fonction assigne aux variables statiques seulement

... contournement de la boucle

mais cette même fonction fonctionne correctement dans MQL4

 
Alexandr Sokolov:

mais la même fonction fonctionne correctement dans MQL4

Ensuite nous devons spécifier quels tableaux High[] Close[]

S'ils proviennent de mql4, ils ne sont pas disponibles dans mql5, s'ils sont personnalisés... Je ne peux pas faire de suggestions.

 
Alexandr Sokolov:

Je veux obtenir les stochastiques habituelles maxHigh et minLow dans la période K par Low/High et Close/Close

Low/High pendant l'initialisation fonctionne bien, mais Close/Close non

Il est plus facile de trouver fmax() ou fmin() à partir du tableau obtenu par CopyBuffer()

 
Alexey Viktorov:

Ensuite, nous devons clarifier ce que sont les tableaux High[] et Close[].

S'ils proviennent de mql4, ils ne sont pas disponibles dans mql5, s'ils sont personnalisés... Je ne peux pas faire de suppositions.

Voici le contenu de ces tampons dans MQL5

int count = rates_total - prev_calculated, copied = 0; if(count < (int)kperiod + (int)dperiod + (int)slowing) {count = (int)kperiod + (int)dperiod + (int)slowing;};
   if(mode == m1 && price == STO_LOWHIGH) {copied = CopyOpen(_Symbol,PERIOD_CURRENT,0,count,Open); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyHigh(_Symbol,PERIOD_CURRENT,0,count,High); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyLow(_Symbol,PERIOD_CURRENT,0,count,Low); if(copied != count) return(0);};
   copied = CopyClose(_Symbol,PERIOD_CURRENT,0,count,Close); if(copied != count) return(0);
 
Alexey Viktorov:

Il est plus facile de trouver fmax() ou fmin() à partir du tableau obtenu par CopyBuffer()

J'ai besoin de valeurs non pas sur l'ensemble du tampon, mais sur une période K
Sinon comment l'implémenter, en tenant compte du fait que je dois copier les données en tenant compte de la période de décélération ?

 
Alexandr Sokolov:

Je n'ai pas besoin des valeurs de tout le tampon, mais de celles de la période K
. Sinon, comment puis-je mettre cela en œuvre, étant donné que je dois copier les données en tenant compte de la période de décélération ?

Hier, j'ai fait la même chose, mais avec des tableaux haut et bas.

   for(i = limit; i < rates_total; i++)
    {
     UpperBuf[i] = high[ArrayMaximum(high, i-period, period)];
     LowerBuf[i] = low[ArrayMinimum(low, i-period, period)];
     MidBuf[i] = (UpperBuf[i]+LowerBuf[i])/2;
    }

Sans retournement des séries chronologiques. Donc, comme prévu dans le MQL5 ? Barre de zéro sur la gauche.

De plus, il est possible de copier le tampon de l'indicateur, non pas tout le tampon, mais seulement la quantité spécifiée de la barre spécifiée. Et j'ai recommandé par erreur fmax() et fmin(). Je voulais dire ArrayMaximum()

 
Alexandr Sokolov:

Je veux obtenir les stochastiques normales maxHigh et minLow dans une période K par Low/High et Close/Close.

Low/High pendant l'initialisation fonctionne bien, mais pas Close/Close.

Il existe des fonctions standard pour les séries temporelles

Maximum=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,num,startbar));
Minimum=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,num,startbar));
 
Taras Slobodyanik:

il existe des fonctions standard pour les séries temporelles

Il est conseillé de commencer à lire depuis le début pour obtenir de bons conseils. D'où la première question et le reste de la discussion.

 
Alexey Viktorov:

Il est conseillé de commencer à lire depuis le début pour obtenir de bons conseils. D'où la première question et le reste de la discussion.

Il semble que, dès le début, l'homme parcourt la série chronologique à la recherche du minimum et du maximum.
Il est possible de s'en passer.

void KValues(int i)
  {
   if (price == STO_LOWHIGH)
      {
      vhigh=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,kperiod,i));
      vlow=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,kperiod,i));
      }
   else
      {
      vhigh=iClose(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      vlow=iClose(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      }
  }
(n'a pas vérifié).
 
Taras Slobodyanik:

Il semble avoir examiné la question depuis le début - l'homme parcourt les séries chronologiques à la recherche du minimum et du maximum.
Vous pourriez vous en passer.

(n'a pas vérifié).

Il veut des valeurs stochastiques.

Bien que... Je suis déjà confus moi-même de ce dont il a besoin. Cela ressemble à une condition stochastique, mais il copie les barres...
Raison: