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

 
Alekseu Fedotov:

C'est aussi simple que cela.

void OnStart()
  {
// Формируем время  
   Alert("14.30  позавчерашнего дня = ",StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30"));

//14.30  позавчерашнего дня
   datetime time=StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30");

//Бар 14.30  позавчерашнего дня
   int     shift=iBarShift(NULL,0,time);

//Машка 14.30  позавчерашнего дня  
   double ma=iMA(NULL,0,13,0,MODE_SMMA,PRICE_MEDIAN,shift);

   Alert("Машка 14.30  позавчерашнего дня = ",DoubleToString(ma,Digits));

C'est comme ça.


Alekseu Fedotov, Malheureusement, ce n'est pas ça. Vous obtenez le numéro de barre avec le TF et ensuite vous utilisez le même TF, mais il vous en faut un autre (c'est le problème). Nous devons obtenir le numéro de la barre avec TF (par exemple 30) et ensuite obtenir la MA avec TF (1440), en partant de cette barre avec TF 30. C'est comme si vous vouliez maintenant (14.30) obtenir la MA avec TF 1440. Aujourd'hui - ce n'est pas un problème, mais le transférer à il y a quelques jours, c'est un problème.

 
STARIJ:
Oui. Nous devrions utiliser M1, et M5, ..... - pour vérifier. Peut-être utiliser l'interpolation ? mt5 a un historique des tics. Si vous me dites où sont les bénéfices, je regarderai à nouveau.

Je dois faire l'analyse technique rétrospectivement comme si cela se passait maintenant et regarder le résultat. C'est comme si j'avais fait une analyse technique de la MA avec TF 1d à 14h30 hier et qu'aujourd'hui j'avais obtenu les résultats du mouvement des prix par la MA d'hier. Si j'utilise TF 1440 aujourd'hui et que je regarde du point de vue d'hier, les données de l'analyse technique seront différentes, et donc les résultats devraient être différents.

 
Roman Sharanov:

Aide, j'ai besoin de dessiner un rectangle à partir du haut de la bougie précédente jusqu'à un point 200p au-dessus de celui-ci et de chronométrer une barre en avance.

J'ai écrit le code, mais je ne comprends pas pourquoi le point gauche du rectangle ne bouge pas ? Le droit glisse derrière le hai.

Comportement inattendu de la fonction... Auparavant, lorsque j'ai essayé de créer un objet portant le nom d'un objet existant, une erreur a été renvoyée et l'objet n'a pas changé les paramètres existants en nouveaux paramètres. Mais maintenant, apparemment, des modifications ont été apportées et chaque fois que high[0] est modifié ou qu'une nouvelle barre apparaît, high[1] a déjà une valeur différente et l'un des paramètres change lors de la création d'un nouveau rectangle.

La solution est très simple : vérifier l'existence de l'objet avant de le créer.

 
STARIJ:

Il se déplace



Non, je ne dessine rien avec ce code.

 
Roman Sharanov: Non, ça ne dessine rien avec ce code.

Regardez l'ensemble de mon dossier.

Dossiers :
PR.mq4  3 kb
 
STARIJ:

Regardez mon dossier


Oh je vois, vous avez MQL4 :)
J'ai créé des tableaux par séries temporelles et ça a marché, je ne comprends toujours pas pourquoi ça n'a pas marché pour moi.

 
Boss11: Je dois faire l'analyse technique rétrospectivement comme si cela se passait maintenant et regarder le résultat. C'est-à-dire, comme si j'avais fait une analyse technique de la MA avec TF 1d à 14h30 hier et qu'aujourd'hui j'ai obtenu les résultats du mouvement des prix par la MA d'hier. Si j'utilise TF 1440 aujourd'hui et que je regarde du point de vue d'hier, les données de l'analyse technique seront différentes, et donc les résultats devraient être différents.

Avec le TF 1440, tout est clair. Mais avec le M1, comme vous l'avez écrit, il y a une grande marge d'erreur ?

 
STARIJ:

Avec le TF 1440 tout est clair. mais avec le M1 comme vous l'avez écrit grosse erreur ?


Je ne l'ai pas essayé avec M1, mais je pense que la marge d'erreur sera moindre. M1->M5 sera plus précis que M30-> 1d

 

Veuillez me conseiller sur la réponse à une question spécifique. Je refais le Bollinger.

J'ai changé quelques lignes, ça ne dessine pas de barres. C'est quoi, des logarithmes ?

Formule de volatilité à partir de https://research-journal.org/economical/analiz-razlichnyx-metodov-ocenki-istoricheskoj-volatilnosti-dlya-opcionnoj-torgovli/

int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres,oldpos;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_EMA,PRICE_WEIGHTED,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      oldpos=i;
      while(k>=i)
        {
         //newres=Close[k]-oldval;
         //sum+=newres*newres;
          sum+=log(fabs(High[k]/Close[k]))*log(fabs(High[k]/Open[k]))+log(fabs(Low[k]/Close[k]))*log(fabs(Low[k]/Open[k]));
         k--;
        }
      deviation=BandsDeviations*MathSqrt(fabs(sum/BandsPeriod));
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
Dossiers :
 

Veuillez me dire comment supprimer un objet graphique. Il existe des lignes verticales dont les noms sont construits à partir des valeurs des variables.

string name=="test1" ; string Vertline="ligne_"+name ; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena) ; Comment puis-je supprimer uniquement les lignes verticales portant le nom test1 ?