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

 
leonerd:

Mettez votre nez dans un code simple qui calcule l'angle du mouvement des prix. L'image ci-dessous le montre.


Cela dépend de la mesure de x(pixels, barres ou temps) et de y(pixels ou prix).
Et cela dépend de la tâche à accomplir : mesurer l'angle sur le graphique actuel avec l'échelle (largeur des barres en pixels) et le délai actuels ? Ou pour mesurer l'angle de façon à ce qu'il reste le même pour n'importe quelle TF et échelle ?
Des tâches et des systèmes de coordonnées différents - des solutions différentes.
 
leonerd:

Mettez votre nez dans un code simple qui calcule l'angle du mouvement des prix. L'image ci-dessous le montre.


Eh bien, tu peux le calculer avec une tangente. Et tu n'as pas besoin de l'angle lui-même, tu as juste besoin de connaître la tangente.

 
Alexey Viktorov:

Et vous n'avez pas vraiment besoin d'un angle en soi, vous avez juste besoin d'une tangente.

Exactement ! Et notre tangente s'appelle : la vitesse.

Dans cet exemple, le prix a traversé 1884 points en 39 bougies d'une heure. La vitesse totale de cette onde est : 1884/(39/24) = 1159 pips par jour.

double interval=double(iBarShift(symbol,frame,start_time)-iBarShift(symbol,frame,finish_time)*PeriodSeconds(frame)/86400;
int distance=MathAbs(finish_price-start_price);
int speed=interval>0?(distance/interval):0;
Et nous n'avons pas besoin d'un angle, pourquoi avons-nous besoin d'un angle ? Lorsque nous commencerons à étirer ou à aplatir le graphique, à quoi ressemblera alors l'angle ? Les angles peuvent être mesurés lorsque les axes x et y ont les mêmes unités. Par exemple, si vous prenez un cahier avec des carrés, tracez une ligne le long des diagonales de ces carrés, vous obtiendrez 45 degrés. Et ce qui est en haut et ce qui est à droite sont des centimètres. Et ici, à quoi correspond un point de prix ? Une heure, un jour ? Ce ne sont pas des valeurs comparables.
 
Aleksei Stepanenko:

Exactement ! Et notre tangente s'appelle : la vitesse.

Dans cet exemple, le prix a franchi 1 884 points en 39 bougies d'une heure. La vitesse totale de cette vague est : 1884/(39/24) = 1159 pips par jour.

Et nous n'avons pas besoin d'un angle, pourquoi avons-nous besoin d'un angle ? Lorsque nous commencerons à étirer ou à aplatir le graphique, à quoi ressemblera alors l'angle ? Les angles peuvent être mesurés lorsque les axes x et y ont les mêmes unités. Par exemple, si vous prenez un cahier avec des carrés, tracez une ligne le long des diagonales de ces carrés, vous obtiendrez 45 degrés. Et ce qui est en haut et ce qui est à droite sont des centimètres. Et ici, à quoi correspond un point de prix ? Une heure, un jour ?Ce sont des valeurs incomparables.

Pourquoi devons-nous les comparer ? Les kilomètres et le temps ne sont pas non plus comparables, mais cela ne nous empêche pas de compter la vitesse en kilomètres/heure.

Si votre tangente est la vitesse, elle sera la vitesse par unité de temps de la période du graphique. Si le prix a bougé de 1884 pips en 39 heures, ce sera 48 pips par heure. Il n'est pas nécessaire de le convertir en jours.

Mais vous pouvez également calculer l'"accélération" comme un rapport entre la vitesse actuelle et la vitesse de la barre précédente. Et en recueillant plusieurs de ces valeurs, on peut déterminer l'accélération moyenne.

 
Aleksei Stepanenko:

Et ici, qu'est-ce qu'un point de prix égal ? Une heure, un jour ? Les valeurs ne sont pas comparables.

Eh bien, la distance se mesure aussi en années-lumière. Ce n'est donc pas un problème.
Introduisons une vitesse constante. Par exemple, 1 _Point pour une barre de 1 minute et amener le système de coordonnées à un prix sur les deux axes .

Les angles seront alors les mêmes sur n'importe quelle période.

L'essentiel est de calculer correctement le nombre de barres minutes entrex1et x2.

Dans ce système, un angle de 45 degrés signifie que le prix varie de N*tg(45) =N pips en N minutes et un angle de 30 degrés signifie que le prix varie de N*tg(30)=N*0,57735 pips en N minutes.
Il est préférable d'utiliser des barres de minutes plutôt que de temps, car il existe des trous de temps sous la forme de week-ends, de faible volatilité, etc.
 

Je suis d'accord à 100%, car le chandelier peut être étiré à la fois horizontalement et verticalement. Et il devrait y avoir une norme pour déterminer l'angle (largeur du chandelier en pixels et nombre de points dans un pixel).

Puis-je poser une question hors sujet ?

Comment convertir correctement les données en double afin que le compilateur ne jure pas (une perte de données due à une conversion incorrecte est possible) ?

double A = Time[1] ;

Merci d'avance !

 
Alexey Viktorov:

Si vous avez 1884 pips en 39 heures, la vitesse est de 48 pips par heure. Et il n'est pas du tout nécessaire de convertir cela en jours.

Oui, c'est mon hypothèse. Puisque j'ai rendu la vitesse int (c'est-à-dire des pips entiers), j'ai pensé utiliser une période plus grande, de sorte que les fractions de pip de vitesse n'aient pas trop d'importance et puissent être écartées. J'ai donc obtenu des points par jour. Eh bien, cela correspond à l'horloge biologique humaine. Fatigué, dormi, levé le matin : "Quelle était la vitesse hier ? Il semble cohérent, c'est donc la norme que je me suis fixée. Et puis, bien sûr, c'est une question de convenance personnelle.


Nikolai Semko:

Eh bien, la distance se mesure aussi en années-lumière. Ce n'est donc pas un problème.
Introduisons une vitesse constante. Par exemple, 1 _Point pour une barre de 1 minute et amener le système de coordonnées à un prix sur les deux axes .

Oui, on obtient à nouveau la vitesse, mais en unités : points par minute. En ce qui concerne les week-ends et les trous, j'ai pris le chemin suivant : ce qui est bougies sur le graphique est l'intervalle de temps, et ce qui est absent (jours/heures) n'est pas là. En effet, si nous prenons en compte les week-ends et que le prix reste inchangé à ce moment-là, la vitesse diminuera sensiblement sans aucune raison. Mais encore une fois, c'est à chacun de voir :)


Roni Iron:

Comment convertir correctement les données en double, afin que le compilateur ne jure pas (une perte de données due à une conversion incorrecte est possible).

double A = (double)Time[1];

Pourquoi stocker les données en double ? Si vous stockez différents types de variables dans le même tableau, et que vous les amenez ici et là, envisagez de remplacer le tableau habituel par un tableau de structure :


struct My
   {
   datetime time;
   double price;  
   } my[];

int finish=0;
ArrayResize(my,finish+1);
my[finish].time=Time[1];
my[finish].price=Close[1];
 

Merci beaucoup !

Les structures fonctionnent-elles uniquement dans mql 5 ou déjà dans mql 4 ?

 
Oui, ils fonctionnent en quatre, c'est très pratique pour écrire avec eux, clairement.
 
Roni Iron:

Merci beaucoup !

Les structures fonctionnent-elles uniquement dans mql 5 ou déjà dans mql 4 ?

Non seulement les structures travaillent, mais aussi le syndicat.

Raison: