Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 250

 
Crosswert:


Ha ha... Voici un mensonge...

Le problème s'est avéré être dans la fonction OpenOrders(). J'ai complètement oublié de supprimer le contrôle de l'ouverture des ordres sur une rupture de bougie (barre) :

if (Volume[0] > 1) return;

Donc, sur quelle TF le Conseiller Expert testait, il ouvrait des ordres sur ces minutes...

Stupide en général, sur un coup dur...

Merci...

Cela arrive)))) Heureux d'avoir été utile))))
 
Crosswert:


if (Volume[0] > 1) return;


N'utilisez pas ce type de vérification pour détecter l'ouverture d'une nouvelle barre, cela ne fonctionnera pas bien dans le compte, seulement dans le testeur. Vous devez vérifier soit par le temps de la barre, soit par le nombre de barres sur le graphique.

 
Crosswert:


Ha ha... Voici un mensonge...

Le problème s'est avéré être dans la fonction OpenOrders(). J'ai complètement oublié de supprimer le contrôle de l'ouverture des ordres sur une rupture de bougie (barre) :

if (Volume[0] > 1) return;

Donc, sur quelle TF le Conseiller Expert testait, il ouvrait des ordres sur ces minutes...

Stupide en général, sur un coup dur...

Merci...

C'est mieux comme ça(https://www.mql5.com/ru/forum/138609/page482):
bool CheckOpenM15() // Функция возвращает истину при появлении нового бара на М15 (Использовать только в советние)
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
paladin80:
C'est mieux comme ça(https://www.mql5.com/ru/forum/138609/page482):

Mieux encore, passez le nom du TF souhaité à la fonction
 
artmedia70:
Mieux encore, passez le nom du TF souhaité dans la fonction

Ce n'est qu'un exemple.
 
paladin80:
C'est mieux comme ça(https://www.mql5.com/ru/forum/138609/page482):


Vous savez, avec / PrevTime / j'ai essayé quelque chose une fois, mais ça n'a jamais marché. Je suppose que je n'ai pas pu mettre ce code au bon endroit.

Avec / if (Volume[0] > 1) return ; / tout est beaucoup plus simple. Ici, comme je le crois, tout fonctionne pour le TF sélectionné. Je ne sais pas si cela fonctionne sur une démo mais je n'ai pas remarqué d'erreurs, de bugs et autres détails lors de l'ouverture des commandes.

Mais il y a longtemps que je n'ai pas utilisé le contrôle de l'ouverture des ordres sur une nouvelle barre. Nous avons réussi à construire la fonction de contrôle des positions ouvertes. Avec les ordres d'ouverture à un moment donné, nous n'avons pas besoin de contrôle de barre en tant que tel.

Le code est juste vieux. Apparemment, j'ai oublié les limitations et je l'ai inséré sans ménagement et j'ai continué à l'utiliser...

 

Pouvez-vous me dire comment obtenir la valeur du prix des niveaux de Fibonacci ?

Selon la condition, une fois que le prix a franchi les niveaux de Fibonacci spécifiés, une transaction d'achat ou de vente est ouverte.

Un objet Fibonacci est dessiné par un Expert Advisor en utilisant la fonction de Kim : https://www.mql5.com/ru/forum/107476/page107#606564.

Il est dessiné en douceur, sans aucun problème. Mais alors comment connaître la valeur du prix du niveau spécifié ?

Cette fonction ne semble pas fonctionner :

OBJPROP_FIRSTLEVEL+n 210+n int Obtient/définit la valeur de niveau de l'objet Fibonacci d'indicen. L'indice n peut être compris entre 0 et (nombre de niveaux -1), mais ne peut dépasser 31.


Est-ce possible ? Ou bien, devons-nous calculer les prix pour chaque niveau séparément à partir de OBJPROP_PRICE1 et OBJPROP_PRICE2 ?

C'est absurde. J'ai passé la moitié de la nuit à me creuser les méninges... Bien sûr, la nuit n'est probablement pas le meilleur moment pour chercher des solutions.

Aidez-nous, bonnes gens, s'il vous plaît !

 
Lazarechek:

Pouvez-vous me dire comment obtenir la valeur du prix des niveaux de Fibonacci ?

Selon la condition, une fois que le prix a franchi les niveaux de Fibonacci spécifiés, une transaction d'achat ou de vente est ouverte.

Un objet Fibonacci est dessiné par un Expert Advisor en utilisant la fonction de Kim : https://www.mql5.com/ru/forum/107476/page107#606564.

Il est dessiné en douceur, sans aucun problème. Mais alors comment connaître la valeur du prix du niveau spécifié ?

Cette fonction ne semble pas correspondre :

OBJPROP_FIRSTLEVEL+n 210+n int Obtient/définit la valeur de niveau de l'objet Fibonacci d'indicen. L'indice n peut être compris entre 0 et (nombre de niveaux -1), mais ne peut pas dépasser 31.


Est-ce possible ? Ou bien, devons-nous calculer les prix pour chaque niveau séparément à partir de OBJPROP_PRICE1 et OBJPROP_PRICE2 ?

C'est absurde. J'ai passé la moitié de la nuit à me creuser les méninges... Bien sûr, la nuit n'est probablement pas le meilleur moment pour chercher des solutions.

Au secours, braves gens !

Il y avait déjà une question similaire :

Je veux obtenir le prix à un niveau Fibo de 23,6%.
double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1) ; Celui-ci donne 0.236, c'est-à-dire pas le prix, mais le niveau.
Pouvez-vous me dire comment obtenir le prix du niveau. Merci !

Et elle a également reçu une réponse :

Juste deux opérations arithmétiques. Multiplication (0,236 multiplié par la différence entre les prix du niveau zéro et du niveau un), puis addition (le résultat de la multiplication est ajouté au prix du niveau zéro).

 
J'ai écrit un indicateur, je l'ai exécuté, tout s'est figé et le message - attendre la mise à jour (pas de cycles sans fin). Je redémarre le mt le résultat est le même. Il est clair que je peux supprimer ces indicateurs avant le lancement et ensuite les insérer, mais à chaque fois pour résoudre le problème de cette façon ce n'est pas une option. Peut-être y a-t-il une clé pour démarrer depuis la ligne de commande pour démarrer dans l'interface par défaut ?
 
artmedia70:

Une question similaire a déjà été posée :

Je veux obtenir le prix au niveau du Fibo de 23,6 %.
double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1) ; Celui-ci donne 0.236, c'est-à-dire pas le prix mais le niveau.
Pouvez-vous me dire comment obtenir le prix du niveau. Merci !

Et la réponse a été donnée aussi :

Juste deux opérations arithmétiques. Multiplication (0,236 multiplié par la différence entre les prix du niveau zéro et du niveau un), puis addition (le résultat de la multiplication est ajouté au prix du niveau zéro).




Merci beaucoup !) C'est ce que je pensais en principe)


"0,236 multiplié par la différence entre les prix du niveau zéro et du premier niveau" - seulement il serait probablement plus correct de dire "entre les prix du niveau zéro et du dernier niveau".