[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 719
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Mais pour une raison quelconque, je me retrouve avec une erreur EURUSD, : zero divide - cette erreur semble dire qu'il y a un 0 dans la variable quelque part, probablement pendant une opération de type division. Est-ce que j'essaie de l'appliquer correctement ?
Dans le testeur ou sur la démo ?
Dans le testeur, le point sur les autres symboles sera de 0.
Messieurs, aidez-moi à résoudre ce problème, s'il peut être résolu dans ces conditions !
Il existe, par exemple, un tel Expert Advisor (son PATTERN, pour être exact), car le principe lui-même est intéressant.
Alors, voilà :
extern double Lot = 0.1 ;
extern int TP = 100 ;
extern int SL = 100 ;
extern int ХХХ = 100 ; //comme différentesvariables
extern int ХХХ = 100; //comme différentesvariables
extern int ХХХ = 100 ; //comme des variables différentes.
// quelles commandes sont autorisées ? :
extern int LET = 3 ; // 1 - uniquement vente, 2 - uniquement achat, 3 - les deux types d'ordre
int start()
//calculer les indicateurs:
int KUDA ;
L'INDICATEUR ET SES CONDITIONS DE TRAVAIL SONT INSÉRÉS
// Vérifier les conditions de détermination de la direction de l'ordre en fonction des données de l'indicateur :
if ( ХХХХХХХХХХХХХХХХХ ) // condition d'indicateur pour sal
KUDA = 1 ; // cela signifie que nous allons vendre.
if ( ХХХХХХХХХХХХХХХХХХХ) // indicateur de condition d'achat
KUDA = 2 ; // cela signifie que nous allons acheter.
// passer des commandes :
if(OrdersTotal()>0) return (0) ; // permet à l'EA de fonctionner avec un seul ordre passé.
QUEL CODE INSÉRER ICI, POUR QUE LORSQU'UN DEALER FERME UNE VENTE, SOIT AUTORISÉ À PLACER UNIQUEMENT UN ORDRE D'ACHAT,
et quand un perdant ferme un achat, il est seulement autorisé à placer une vente?
ET AINSI DE SUITE ET AINSI DE SUITE ! !!
{
if (LET == 1 || LET == 3) // selon la variable ne fonctionne que pour la vente (ignore l'achat) ou les deux.
if (KUDA == 1 && ticketsell < 1) // set sell
{
VOICI LE CODE POUR PLACER DES ORDRES DE VENTE
}
if (LET == 2 || LET == 3) // selon la variable ne fonctionne que pour l'achat (la vente ne tient pas compte) ou les deux types d'ordre
if (KUDA == 2 && ticketbuy < 1) // exposer acheter
{
VOICI LE CODE POUR PASSER DES ORDRES D'ACHAT
}
}
retour(0) ;
}
Merci !
Donc, dans l'ordre.
Si vous ne voulez que les dernières données, alors pourquoi sauvegarder les données précédentes ? ("préécriture" se produit avec une combinaison des modes FILE_READ|FILE_WRITE).
Il est donc plus logique d'utiliser le mode FILE_CSV|FILE_WRITE, où les enregistrements précédents sont supprimés avant l'écriture de nouvelles données.
Commencez à écrire les 4 variables dans le fichier.
L'essentiel est de se souvenir de l'ordre dans lequel les variables sont écrites, car c'est dans cet ordre que nous les lirons.
Commencez à lire les données dans les variables à partir du fichier.
En utilisant la fonction FileReadNumber(), nous lisons en séquence, numéro par numéro, dans l'ordre où nous l'avons écrit.
C'est tout ce qu'il y a à faire, rien de compliqué :)
Aidez-moi à résoudre ce problème par voie programmatique :
1. d'abord, nous trouvons la première fractale vers le haut - c'est simple et clair ;
2. il faut ensuite trouver une fractale plus élevée que la première - ce qui est déjà un problème :(
Ok, si c'est la fractale précédente. Mais si c'est celui d'avant ? Ou il y a trois ou quatre fractales ?
Comment créer une fonction permettant de rechercher de telles fractales ?
Je joins une photo, au cas où.
réessayer
Aidez-moi à résoudre ce problème par voie programmatique :
1. d'abord, nous trouvons la première fractale vers le haut - c'est simple et clair ;
2. il faut ensuite trouver une fractale plus élevée que la première - ce qui est déjà un problème :(
Ok, si c'est la fractale précédente. Mais si c'est celui d'avant ? Ou il y a trois ou quatre fractales ?
Comment créer une fonction permettant de rechercher de telles fractales ?
Je joins une photo, au cas où.
Et s'il n'y a pas de telle fractale du tout...
Et s'il n'y a pas de telle fractale du tout...
Aidez-moi à résoudre ce problème par voie programmatique :
1. d'abord, nous trouvons la première fractale vers le haut - c'est simple et clair ;
2. il faut ensuite trouver une fractale plus élevée que la première trouvée - c'est déjà un problème :(
Ok, si c'est la fractale précédente. Mais si c'est celui d'avant ? Ou trois ou quatre fractales auparavant ?
Comment formuler la recherche de telles fractales comme une fonction ?
Juste au cas où, je joins une photo...
Si elle ne peut pas être trouvée dans la boucle - alors vous devez attendre qu'une nouvelle fractale apparaisse (au lieu de la première fractale mémorisée). Dès que la nouvelle fractale apparaît, nous recherchons à nouveau la deuxième fractale nécessaire dans la boucle (il s'agira très probablement de la première fractale mémorisée au tout début). Nous trouvons ainsi deux fractales nécessaires et évitons la situation évoquée à juste titre par Victor dans le message ci-dessus. Bien qu'il soit théoriquement possible que la deuxième fractale ne soit jamais formée... Une apocalypse par exemple... :)
Ainsi, si, par exemple, il n'y a pas de fractale à 300 barres, nous attendons qu'une nouvelle fractale apparaisse avant de reprendre la recherche