[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 133

 
russcand:
Pouvez-vous me dire comment écrire :
Le prix a traversé la ligne horizontale vers le haut....
Et comment décrire cette ligne ?
Si la valeur de l'indicateur de la première barre est supérieure à la valeur de la ligne horizontale, ET que la valeur de l'indicateur de la deuxième barre est inférieure à la valeur de la ligne horizontale, alors la ligne de l'indicateur a franchi la ligne horizontale vers le haut.
La description de la ligne horizontale est un nombre constant, c'est-à-dire sa valeur dans la dimension de la fenêtre de l'indicateur. Plaçons le curseur de la souris dessus et voyons cette valeur.
 
borilunad:

Merci beaucoup pour cette clarification !

Je suis seulement préoccupé par le fait que le testeur simule des barres d'une minute pour des modifications à l'ouverture de chaque barre d'une minute.

Je vais essayer de changer Open[0] en iOpen(NULL,1,0) et ajouter une fonction pour vérifier l'ouverture de la barre d'une minute.

Quelques minutes se sont écoulées, pendant lesquelles j'ai retouché le code et l'ai essayé avec le testeur à M5 en m'assurant que dans ce cas le testeur n'ouvre pas de barres de 1 minute, pourtant prescrites, et ne le modifie que toutes les 5 minutes, ce que je craignais. En mode tous ticks, il est un peu meilleur, car il modifie plus souvent. Mais sur M1 seulement, à l'ouverture de la barre, cela fonctionne de la même manière, à la fois avec Open[0] et avec iOpen(NULL,1,0), ce dont je suis toujours reconnaissant !

Maintenant, je vais toujours utiliser l'iOpen vert, car je vois que je peux me passer de l'Open rouge. Le bénéfice vert est plus agréable que la perte rouge. ( :))

Regardez comment sont écrits les EA en boucle, c'est la norme pour les multi-devises/multi-horaires, car elle élimine le besoin d'attendre un tick sur le graphique où l'EA plane, et vous permet de traiter tous les graphiques nécessaires en temps réel.
 
granit77:
Si la valeur de l'indicateur de la première barre est supérieure à la valeur de la ligne horizontale, ET que la valeur de l'indicateur de la deuxième barre est inférieure à la valeur de la ligne horizontale, alors la ligne de l'indicateur a traversé la ligne horizontale de bas en haut.
La description de la ligne horizontale est un nombre constant, c'est-à-dire sa valeur dans la dimension de la fenêtre de l'indicateur. Plaçons le curseur de la souris dessus et voyons cette valeur.

Merci. Maintenant, j'aimerais m'installer un peu plus.

Disons que ce niveau est franchi. L'indicateur détecte la bonne condition du marché.

Mais le prix peut revenir à l'intérieur de ce niveau.

Je n'ai pas besoin de redéfinir l'état précédemment déterminé.

Il est important pour moi de franchir ce niveau. Les mouvements de va-et-vient du prix ne m'intéressent pas, car c'est le moment du franchissement et de la fixation du niveau prédéfini qui est important.

Donc, ce que vous avez écrit est la situation du moment. Comment faire en sorte que le nouvel état déterminé reste le même lorsque le prix revient.

Notre indicateur comporte des flèches ARROWDN et ARROWUP sur le graphique. Peut-être qu'ils devraient être appliqués d'une manière ou d'une autre.

Par exemple, si la valeur de la barre actuelle est supérieure à un certain indice ET

Il s'agit ici de mettre une condition selon laquelle le prix n' a PAS cassé la ligne vers le haut ( ou ARROWUP n'est pas initié )..., ET le prix n' a PAS cassé la ligne vers le bas ( ou ARROWDN n'est pas initié ).

alors.... est déterminé par l'état d'untel ou d'untel.

L'indicateur a une autre expression

( ObjectFind(NameInd+timestartpr+"CurExt_ARROWDN")!=-1) - ce type d'information indique la répartition de la ligne "CurExt_ARROWDN" vers le bas.

Comment puis-je indiquer par la même expression qu'il n'y a pas de panne ?

 
russcand:

Merci. Et maintenant, je voudrais décider encore un peu.

Disons que ce niveau est franchi. L'indicateur définit la condition de marché requise.

Mais le prix pourrait repasser à l'intérieur de ce niveau.

Et je dois m'assurer que l'état précédemment défini n'est pas redéfini.

Ce qui est important pour moi, c'est la percée de ce niveau. Le va-et-vient du prix ne m'intéresse pas, car il y a un moment de franchissement et de fixation de la situation qui a déjà été définie.

Donc, ce que vous avez écrit est la situation du moment. Comment faire pour que l'état neuf déterminé reste inchangé lorsque le prix revient ?

Il y a également des flèches ARROWDN et ARROWUP sur l'indicateur (sur le graphique). Peut-être qu'ils devraient être appliqués d'une manière ou d'une autre.

Par exemple, si la valeur de la barre actuelle est supérieure à un certain indice "ET".

Ici, il faut que le prix n'ait pas cassé la ligne vers le haut (ou que la fonction ARROWUP ne soit pas activée)..., ET que le prix n'ait pas cassé la ligne vers le bas (ou que la fonction ARROWDN ne soit pas activée).

alors.... est déterminé par un état tel ou tel.

Il y a une autre expression dans l'indicateur

( ObjectFind(NameInd+timestartpr+"CurExt_ARROWDN")!=-1) - cela signifie que la ligne "CurExt_ARROWDN" est en panne.

Comment puis-je spécifier la même expression, mais qu'il n'y ait pas de rupture ?



static bool BreakDown=false ;

...

car elle sera brisée :

BreakDown=true ;

 
tara:


static bool BreakDown=false ;

...

en cours d'exécution :

BreakDown=true ;

Sanx, pouvez-vous dessiner la formule elle-même ? A partir de ce moment :

static bool BreakDown=false ; // comme il va essayer : BreakDown=true ;
static bool BreakUp=false ;

si ( iTime(Symbol(),0,0) >= CurExt // début du segment

&& (
ObjectFind(NameInd+timestartpr+"CurExt_ARROWUP")!=-1 // se séparer
BreakUp=true ;
||

ObjectFind(NameInd+timestartpr+"CurExt_ARROWDN")!=-1 // en panne

BreakDown=true ;

)

)

Où et comment placer BreakUp=true ; et BreakDown=true ; ou mieux écrire correctement la formule, pliz..... Sinon, il est clair que le bilboquet est dessiné au sommet...

 
Veuillez m'indiquer la méthode de calcul. Prenez par exemple les 10 dernières transactions et comptez par exemple la rentabilité. Comment calculer en ayant un historique de tous les trades (beaucoup plus de 10) que la rentabilité de ces 10 trades était aléatoire/non aléatoire.
 
russcand:

Sanx, puis-je dessiner la formule elle-même ? A partir de ce moment :

static bool BreakDown=false ; // breakDown=true ;
static bool BreakUp=false ;

si ( iTime(Symbol(),0,0) >= CurExt // début du segment

&& (
ObjectFind(NameInd+timestartpr+"CurExt_ARROWUP")!=-1 // break upwards
BreakUp=true ;
||

ObjectFind(NameInd+timestartpr+"CurExt_ARROWDN")!=-1 // décomposition

BreakDown=true ;

)

)

Où et comment placer BreakUp=true ; et BreakDown=true ; ou mieux encore, écrire la formule correctement, pliz..... Parce qu'il est clair que bilibberd est dessiné au sommet...


Désolé, essayez d'abord vos propres conditions :) Au fait, Breakdown est un breakdown. Pas de hausse ou de baisse, juste une panne.
 
Skydiver:
Veuillez m'indiquer la méthode de calcul. Prenez par exemple les 10 dernières transactions et comptez par exemple la rentabilité. Comment calculer en ayant un historique de tous les trades (beaucoup plus de 10) que la rentabilité de ces 10 trades était aléatoire/non aléatoire.

Excusez-moi - mais pourquoi ?
 
tara:

Je suis désolé, pourquoi ?

J'essaie juste de bien comprendre ce https://www.mql5.com/ru/forum/139348. Mais ne me donnez pas de coups de pied dans le dos avec des pensées absurdes et autres. Je pense que "la vérité est là" et peut-être qu'une partie de celle-ci se trouve dans ce fil. Alors je creuse.
 
Après-demain
Raison: