[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 175

 
alsu:

Expliquer le concept de "limité à 0 bar".
En d'autres termes, je dois tracer une ligne (pas un rayon) à travers 2 fractales, mais elle doit se terminer sur 0 barre.
 
beginner:
En d'autres termes, je dois tracer une ligne (pas un rayon) à travers 2 fractales, mais elle doit se terminer sur 0 barre

.

L'algorithme est le suivant :

1. Soit les coordonnées de la fractale (i1 ; p1) et (i2 ; p2), où i1<i2 (c'est-à-dire que la première fractale est plus proche de la barre 0 que la deuxième).

2. Equation de la droite passant par ces fractales p = (p1-p2)/(i1-i2) * i + (p2*i1 - p1*i2)/(i1-i2)

3. Par conséquent, nous devons tracer un segment avec les coordonnées d'extrémité suivantes : (0 ; (p2*i1 - p1*i2)/(i1-i2)) et (i2;p2)

4. ObjectCreate(...)

5. ? ??

6. Profit ! !!

 
Vinin:

Cela devrait fonctionner sur le premier tick du nouveau jour.

Merci pour la réponse ! C'est vrai, cela n'a jamais fonctionné jusqu'à ce que j'insère au début du début de l'indicateur.

if(Hour() == 0 && Minute() == 0 && Secondes() == 0) { DeleteObject() etc.

}

if(Hour() >= 0 && Minute() >= 0 && Seconds() >= 1) { code indicateur ...

Récemment, cela ne fonctionne pas non plus avec celui-ci ! Je ne sais pas quoi faire. Que pouvez-vous nous conseiller ? Merci !

J'ai juste réussi à l'écrire maintenant, je travaille pour gagner ma vie samedi.

 
hoz:


Oui Boris, c'est très bien, d'ailleurs ! Merci beaucoup. C'est ce que je voulais. Je me suis tordu... Je me suis tordu... Je n'ai pas bien compris. Je n'ai pas beaucoup d'expérience, et mon cerveau ne pense pas comme un pro. C'est un peu une impasse, n'est-ce pas ? :(

Je ne voulais pas demander tout de suite, mais je devais le faire. Parce que je n'ai pas pu faire l'affaire moi-même.

Je suis heureux que cela vous ait été utile ! Moi-même, comme vous, j'ai commencé il ya 2 ans, mais depuis l'enfance, je suis habitué à toujours venir à tout sur leur propre, parce que la connaissance des conseils ne peut pas former un système. Et je ne demande que lorsque c'est absolument nécessaire, lorsque j'ai déjà tout fait, regardé partout et que je ne l'ai pas obtenu. Beaucoup de nouveaux arrivants ici veulent souder rapidement et pomper de la pâte. L'expérience leur apprendra. Je vous ai déjà dit qu'il vaut mieux faire quelque chose de simple, qui est clair pour vous, que quelque chose de compliqué, que vous ne comprenez pas, et qu'il vaut mieux éviter de telles situations jusqu'à ce que vous arriviez au fond des choses. Le code peut être réalisé de différentes manières, mais la logique doit être aussi claire que deux pour vous. C'est pourquoi j'évite d'utiliser ce que je ne comprends pas encore. Le code est votre outil, que vous devez connaître et maîtriser parfaitement, afin de pouvoir le modifier facilement en temps voulu. Je vous souhaite de réussir !
 
hoz:

Maintenant je comprends. Merci. Je cherchais... il n'y avait pas de point de référence. Maintenant, c'est 0.


Hmm. Eh bien, par exemple, l'indice est passé à 1. Regardons ce morceau de code :

immédiatement à l'arrivée, ce sera :cnt = 0, i = index + g_center - 1 = 1(valeur de l'index) +2(valeur deg_center) - 1 = 2

Mais selon la condition de la boucle, elle continuera jusqu'à ce que i soit égal à 0. Comment cela va-t-il se passer ?

La condition stipule que si i a une valeur comprise entre 2(si index = 1), et i >= 0 etcnt a une valeur comprise entre 0, etcnt < g_center, alors les conditions imbriquées sont remplies.

Il s'avère que si la variable ici est 1, nous n'aurons qu'une seule itération dans la boucle, n'est-ce pas ?


La boucle se termine lorsque la condition écrite à la deuxième place de l'opérateur for() n'est plus satisfaite, c'est-à-dire, dans ce cas, lorsque i devient inférieur à 0, ou lorsque cnt devient supérieur ou égal à g_center. Les deux variables ont des valeurs initiales attribuées avant la boucle et changent pendant son exécution : la variable i comme résultat de i-- (la troisième partie de l'instruction for, elle est exécutée chaque fois que la boucle atteint le crochet fermant }) et la variable cnt comme résultat de cnt++.
 

Salut.

J'essaie d'exporter au format html mes transactions depuis mon compte de démonstration. (Alpari, dernière version). J'appuie sur enregistrer comme rapport, une fenêtre de sélection de dossier s'ouvre, j'appuie sur enregistrer, rien ne se passe. Est-ce la même chose pour les comptes de démonstration ? Une dernière chose, mon MT4 est installé sur mon bureau. Est-ce important ?

 
borilunad:
Qui sait, est-il possible en faisant des variables globales Hour(), Minute() et Seconds(), de contrôler le changement de l'indicateur DailyPivotPoints aux nouveaux niveaux PP et autres lignes de l'EA à minuit (0.00) ? J'avais l'habitude de le faire directement dans l'indicateur avec Hour(), Minute(), Seconds(), et cela fonctionnait sans devoir compiler chaque nuit. Mais récemment, il a cessé de se modifier, peut-être à cause du changement de l'image ? Merci !


:) Pourquoi ne pas l'implémenter comme une nouvelle fonction de la barre? Vous avez besoin qu'il recalcule une fois par jour, c'est-à-dire en partant de 0.00 heure. Nous le faisons donc simplement. Au départ, bien sûr :

if (lastBarTime == время с ТФ Д1)
    return(0);
// что-то тут ещё
// что-то тут ещё
// что-то тут ещё
if (lastBarTime != время с ТФ Д1)
{
    пересчитывает уровни пивотов...
    lastBarTime = время с ТФ Д1;
}
Je pense que c'est la manière la plus correcte, même si elle est primitive !
 
alsu:

La boucle se termine lorsque la condition écrite à la deuxième place de l'opérateur for() n'est plus satisfaite, c'est-à-dire, dans ce cas, lorsque i devient inférieur à 0 ou lorsque cnt devient supérieur ou égal à g_center.


Mais ce n'est pas l'un ou l'autre, c'est ET. Il y a un signe &&.

Je comprends tout ça. Mais le point ici est le suivant :

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

La variableindex en général par code a la valeur Bar - IndicatorCounted()

C'est-à-dire qu'il est de 1 sur la barre actuelle et de 2 sur la nouvelle.

Il entre dans la fonction IsUpFractal() avec la valeur 1 ou 1 si la barre n'est pas encore nouvelle, n'est-ce pas ?

Ainsi, la variable i aura une valeur fixe puisque l'indice du paramètre d'entrée est également fixe. La boucle s'interrompra donc toujours après la première itération. Quel est l'intérêt de la boucle alors ?

 

Pouvez-vous me dire pourquoi il ne s'affiche pas...

double IN[111];
double PERI=33;
double KRIT;
int z;      
ArraySetAsSeries(IN,true);

   for(z=0; z<=PERI; z++)  {
IN[z]=     iClose(Symbol1.Name,0,iBarShift(Symbol1.Name,0,Time[z],false)); }

   for(z=0; z<=PERI; z++)  {
KRIT=IN[z]-iMAOnArray(IN,0,PERI,0,MODE_SMA,iBarShift(IN,0,Time[z],false)); }

Print(KRIT);
return;
 
hoz:


:) Pourquoi ne pas l'implémenter comme une nouvelle fonction de la barre ? Vous avez besoin qu'il recalcule une fois par jour, c'est-à-dire en partant de 0.00 heure. Nous le faisons donc simplement. Au début, bien sûr :

À mon avis, c'est la bonne méthode, même si elle est primitive !
Vinin, ton homonyme, m'a dit qu'il devrait changer par lui-même, mais il ne l'a jamais fait, seulement avec la compilation. Merci pour l'idée d'utiliser le contrôle des barres ! Mettez une variante sur un tableau, votre variante sur l'autre. Je verrai ce qui marche demain.