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

 
Владимир Казаков #:

Décomposer les expressions en actions... et, oh mon dieu, les résultats sont les mêmes !!!?

Donc tout de même avec la réduction des types quelque chose ne fonctionne pas comme je le voudrais

d'experts et de compreneurs peut quelqu'un expliquer quel était le problème?!
Eh bien, de ne pas répéter les erreurs))))

PS : voici la même expression dans ce format qui fonctionne de la même façon

La méthode d'exclusion était un double infaillible pour l'int.

J'espère que j'ai bien compris.

double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);
double a = (double) ((d*pow(10,_Digits-2))*(180.0/M_PI)*(double) coefAngle);
 

Salutations, pourriez-vous me conseiller sur un robot, mt5.

J'ai besoin que les indices dans le tableau coïncident avec la valeur du décalage par rapport à la barre actuelle, comme dans les tampons d'indicateurs.

Comment faire ?

 
Andrey Sokolov #:

Salutations, pourriez-vous me conseiller sur un robot, mt5.

J'ai besoin que les indices dans le tableau coïncident avec la valeur du décalage par rapport à la barre actuelle, comme dans les tampons d'indicateurs.

Comment faire ?

ArraySetAsSeries

 
Vitaly Muzichenko #:

ArraySetAsSeries

Merci. Est-ce que cela fonctionne non seulement dans les indicateurs mais aussi dans les robots ?

 
Andrey Sokolov #:

Merci. Est-ce que cela fonctionne non seulement dans les indicateurs, mais aussi dans les robots ?

Je ne connais pas votre problème, mais ça retourne le tableau

 
Vitaly Muzichenko #:

Je ne connais pas votre problème, mais ça retourne le tableau

Nous avons besoin d'index dans le tableau pour coïncider avec la valeur du décalage par rapport à la barre actuelle, comme dans lestampons d'indicateurs.

Vous avez besoin que les valeurs de l'indice correspondent aux chandeliers après l'apparition de nouveaux chandeliers, comme dans les indicateurs.

 
Andrey Sokolov #:

Nous avons besoin d'index dans le tableau pour coïncider avec la valeur du décalage par rapport à la barre actuelle, comme dans lestampons d'indicateurs.

Vous devez faire correspondre les valeurs d'index aux chandeliers après l'apparition de nouveaux chandeliers, comme dans les indicateurs.

Essayez, ça devrait marcher

 
Vitaly Muzichenko #:

Essayez, ça devrait marcher.

Ça ne marche pas comme ça. J'écris 300 dans l'index 0, quand un nouveau chandelier apparaît il devrait être 300 dans l'index 1, mais non.

#property strict

int bars;
double arr[];

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   bool series = ArraySetAsSeries(arr, true);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[0] = 300;

   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        int res = ArrayResize(arr, bars);
   }
   
   Comment(TimeCurrent(), "  ", bars, "  ", arr[0], "  ", arr[1], "  ", arr[2], "  " , arr[3]);
}//+------------------------------------------------------------------+

Je peux écrire moi-même un "déplacement" de l'ensemble du tableau dans la boucle à de nouvelles bougies, mais le langage pour travailler avec des graphiques, probablement, il ya quelque chose de standard.

 
Andrey Sokolov #:

ça ne marche pas comme ça. J'écris 300 dans l'indice 0, quand une nouvelle bougie apparaît, cela devrait être 300 dans l'indice 1, mais ce n'est pas le cas.

Je peux écrire moi-même le "déplacement" de l'ensemble du tableau dans la boucle aux nouvelles bougies, mais dans le langage pour travailler avec des graphiques, probablement, il y a quelque chose de standard.

Il se retourne, mais ça ne sert à rien.

#property strict

int bars;
double arr[]={};

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[res-1] = 300;
   ArraySetAsSeries(arr, true);
   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
static int res;
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        res = ArrayResize(arr, bars);
   }
   
   Print(res, "  ", arr[0], "  ", arr[1], "  ", arr[2]);
}//+------------------------------------------------------------------+

Il doit être rempli d'une autre manière

 
Andrey Sokolov #:

ça ne marche pas comme ça. J'écris 300 dans l'indice 0, quand une nouvelle bougie apparaît, cela devrait être 300 dans l'indice 1, mais ce n'est pas le cas.

Je peux écrire moi-même le "déplacement" de l'ensemble du tableau dans la boucle aux nouvelles bougies, mais dans le langage pour travailler avec des graphiques, probablement, il y a quelque chose de standard.

Oui, il y en a un standard... Ajouter au tableau et enlever du tableau. Le tableau doit être dynamique. Regardez dans la documentation pour plus de détails, je ne me souviens pas comment ils sont écrits...