[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 398

 
PapaYozh:

Nous devons normaliser le prix.

Papa ! Merci beaucoup..... et encore une petite question....

Je veux ouvrir un ordre seulement si

1. La distance entre le prix d'ouverture de la bougie N 30 et le maximum de la bougie N 1 est supérieure à 150 p.


2. L'heure d'ouverture d'une bougieN 30 est égale à - N'IMPORTE QUELLE HEURE, N'IMPORTE QUELLE DATE, mais la valeur de MINUTES DOIT ÊTRE de 15 ( c'est-à-dire0:15;1:15 ;....23:15)

si ((High[1]-Open[30])> 1500*Point) && ( ??????????????????)

//ouverture de la commande

Je voulais créer la deuxième condition en utilisant la fonction Time [30], mais cette fonction renvoie des valeurs non seulement en minutes mais aussi en heures, jours et années.

pour la bougie dont j'ai besoin. La fonction Minute( ) ne me convient pas non plus, car elle ne renvoie la valeur des minutes que pour le chandelier zéro.

Veuillez me conseiller sur la meilleure façon de coder ce point.



 
solnce600:

Papa ! Merci beaucoup..... et encore une petite question....

Je veux ouvrir un ordre seulement si

1. La distance entre le prix d'ouverture de la bougie N 30 et le maximum de la bougie N 1 est supérieure à 150 p.


2. L'heure d'ouverture d'une bougie N 30 est égale à - N'IMPORTE QUELLE HEURE, N'IMPORTE QUELLE DATE, mais la valeur de MINUTES DOIT ÊTRE de 15 ( c'est-à-dire0:15;1:15 ;....23:15)

si ((High[1]-Open[30])> 1500*Point) && ( ??????????????????)

//ouverture de la commande

Je voulais créer la deuxième condition en utilisant la fonction Time [30], mais cette fonction renvoie des valeurs non seulement en minutes mais aussi en heures, jours et années.

pour la bougie dont j'ai besoin. La fonction Minute( ) ne me convient pas non plus, car elle ne renvoie la valeur des minutes que pour le chandelier zéro.

Veuillez me conseiller sur la manière de mieux le coder.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh:

Nous devons normaliser le prix.

Normalisé. Il ne s'ouvre toujours pas...

Bien que l'autre code s'ouvre sans normalisation....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
 
solnce600:

Normalisé. Il ne s'ouvre toujours pas...

Bien que d'autres codes s'ouvrent sans normalisation....

Utilisez Print() et voyez quelle condition échoue.
 
Bon après-midi à tous. Veuillez jeter un coup d'œil à cet indicateur. Est-il possible de le faire fonctionner correctement ?
Lorsque le prix se déplace vers le bas, il y a déjà une ligne bleue en plus de la ligne rouge (les lignes rouges sont ajoutées, voir les pièces jointes). Puis la tendance change, et ici tout est correct - seulement le bleu.

merci d'avance


/* Décompilé supprimé /*


 
solnce600:

Papa ! Merci beaucoup..... et encore une petite question....

Je veux ouvrir un ordre seulement si

1. La distance entre le prix d'ouverture de la bougie N 30 et le maximum de la bougie N 1 est supérieure à 150 p.


2. L'heure d'ouverture d'une bougie N 30 est égale à - N'IMPORTE QUELLE HEURE, N'IMPORTE QUELLE DATE, mais la valeur de MINUTES DOIT ÊTRE de 15 ( c'est-à-dire0:15;1:15 ;....23:15)

si ((High[1]-Open[30])> 1500*Point) && ( ??????????????????)

//ouverture de la commande

Je voulais créer la deuxième condition en utilisant la fonction Time [30], mais cette fonction renvoie des valeurs non seulement en minutes mais aussi en heures, jours et années.

pour la bougie dont j'ai besoin. La fonction Minute( ) ne me convient pas non plus, car elle ne renvoie la valeur des minutes que pour la bougie zéro.

Veuillez me dire quelle est la meilleure façon de coder ce point.

Pour fixer (inclure dans les calculs) le temps à partir du début (de TOUTE bougie), il est pratique d 'utiliser iBarShift (Symbol(), 1, point d'oscillation). Et le point d'oscillation est le début de la mesure de la période qui est suivie. Dans votre cas :

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Après avoir jeté un coup d'œil à un morceau de votre code, je peux dire que vous ne pensez pas du tout à ce que vous écrivez. Essayez d'y réfléchir (extrait) :

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Après avoir jeté un coup d'œil à un morceau de votre code, je peux dire que vous ne pensez pas du tout à ce que vous écrivez. Essayez d'y réfléchir (fragment) :

...


Merci pour votre réponse, désolé d'avoir envoyé votre code sans commentaires.

Ce que vous pensez n'avoir aucun sens a un sens, et ça marche.

si(Bid==Prix) // si l'heure est égale à l'heure d'ouverture de la bougie.un nouveau chandelier est formé

if((Minute( ) ==45)&&(Minute( ) <50)) // si la valeur de la minute à l'ouverture d'une nouvelle bougie est comprise entre 45 et 50(le truc, c'est que certaines bougies s'ouvrent à 45 min, et pas exactement à 45 min. J'utilise donc &&(Minute( ) <50) pour éviter de rater des bougies qui s'ouvrent à 45 min. mais qui s'ouvrent en fait 1,2,3,4 min. plus tard).

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point, "jfh",123 ) ;

}

retour ;

L'ordre s'ouvre donc au début de chaque bougie de 15 ou 5 ou 1 minute, qui techniquement s'ouvre à 45 minutes (+ 4 minutes maximum, c'est-à-dire avec un délai).
 
solnce600:

J'essaie de te faire comprendre un petit point. Un point très IMPORTANT: "ce que vous vouliez prescrire" et "ce que vous avez prescrit" sont des choses complètement DIFFÉRENTES ! Si dans l'état :

if((Minute( ) ==45)&&(Minute( ) <50))

Minute() == 46, alors la condition générale ne fonctionne PAS ! !! Que dites-vous de ça ?

if ((Minute() >= 45) && (Minute() < 50))

? ?? :-[

 
TarasBY:

J'essaie de te faire comprendre un petit point. Un point très IMPORTANT: "ce que vous vouliez prescrire" et "ce que vous avez prescrit" sont des choses complètement DIFFÉRENTES ! Si dans l'état :

Minute() == 46, alors la condition générale ne fonctionne PAS ! !! Que dites-vous de ça ?

? ?? :-[

Merci pour la réponse, j'ai vérifié et c'est effectivement le cas.

J'avais l'habitude.

> =

Mais j'ai dû supprimer accidentellement > , ou oublier de l'insérer lors de l'édition du code, et c'est maintenant par hasard que j'ai remarqué les changements en rapport avec la discussion d'un autre problème.

En effet, >= ouvre toutes les bougies de 45 à 49, et == seulement 45.

Je ne comprends pas seulement pourquoi vous pensez que si Minute() == 46,(probablement vous vouliez dire 45) alors la condition GÉNÉRALE ne fonctionne pas !!!

Peut-être que je ne comprends pas bien ce que vous entendez par condition GÉNÉRALE, mais dans le code if((Minute( ) ==45)&&(Minute( ) <50))

seules les bougies ayant un temps d'ouverture de 45 minutes exactement sont ouvertes.

Car si la condition ne fonctionnait pas, les commandes ne s'ouvriraient pas ? ???????.

int start()                                                                                                                     
{                                                                                                                       
                                                                                                                        
 double Price=iOpen (Symbol (),0,0);                                                                                                                            
код код код 
//===============================================================
if(Bid==Price)
if((Minute( ) ==45)&&(Minute( ) <50))
int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point,"jfh",123 );        
                                                                                        
}                                                                                                                       
return;


Merci encore.