Bonjour à tous
Étant absent toute la journée j'aimerais modifier un expert d'alerte et le mettre sur plusieurs périodes est-il possible ? Et comment faire ?
Par exemple si H1 arrive au niveau 70 du RSI et que en M30 il passe en dessous des 50 au RSI ça m'envoie une notification.
Merci a vous, cela m'aiderait énormément …
- Comment coder ?
- [ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3.
- Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.
D2x:
Bonjour à tous
Bonjour à tous
Étant absent toute la journée j'aimerais modifier un expert d'alerte et le mettre sur plusieurs périodes est-il possible ? Et comment faire ?
Par exemple si H1 arrive au niveau 70 du RSI et que en M30 il passe en dessous des 50 au RSI ça m'envoie une notification.
Merci a vous, cela m'aiderait énormément …
Mais... c'est très facile à implémenter non !?
Voici un exemple de code concret pour t'orienter...
/* Cette fonction utilitaire t'aide à détecter l'arrivée d'une nouvelle bougie. Donc, dès qu'une nouvelle bougie s'ouvre, cette fonction la repère de la manière la plus précise et en temps réel. Ce bout de code constitue la version la plus à la fois propre, professionnelle et incroyablement précise de toutes les propositions de codes disponibles ici sur la plateforme en ce qui concerne les approches pour la détection du tout premier tick et de l'ouverture d'une nouvelle bougie. J'avoue en passant, que ce n'est pas moi qui suis l'auteur de cette petite fonction qui suit, je l'avais aussi trouvée ici même sur le forum. Écrite par un programmeur vraiment pointu. */ // Etape 1 : Variables qui vont stocker la signature évolutive des bougies (selon justement les unités de temps qui t'intéressent...) datetime firsTickM1, firsTickM5, firsTickM30, firsTickH1; // Etape 2 :Fonction de détection de l'arrivée d'une nouvelle bougie inline bool TesterPremierTick(ENUM_TIMEFRAMES tf, datetime &lastBar) { return lastBar != (lastBar = iTime(_Symbol, tf, 0)); } // Etape 3 : Ta fonction d'envoi d'alerte void SendAlert(string message_alerte) { // C'est ici que tu implémentes le type d'alerte que tu aimerais bien recevoir (email, notification push, etc.)... } // Etape 4 : Ta fonction de suivi de tes RSI (M30, H1, etc.) void TesterSignal_Rsi() { ENUM_TIMEFRAMES timeframes [2] = {PERIOD_M30, PERIOD_H1}; int rsi_handles[2], // pour stocker les pointeurs vers le Rsi de chaque unité de temps qu'on suit... size = ArraySize(timeframes); // Le nombre total de timeframes dans notre tableau (2 ici pour ce cas d'espèce...) double rsi_values [2]; // Pour chaque unité de temps, nous allons stocker et suivre juste les deux dernières valeurs de clôture Rsi (et nous intéresser finalement à la toute dernière des deux...) for(int i = 0; i < size; i++) { rsi_handles[i] = iRSI(_Symbol, timeframes[i], 14, PRICE_CLOSE); if(rsi_handles[i] == INVALID_HANDLE) { Alert("Erreur lors de la création du handle RSI pour la période: ", EnumToString(timeframes[i])); return; } if(CopyBuffer(rsi_handles[i], 0, 0, 2, rsi_values) == 2) { double close_rsi = rsi_values[0]; if (timeframes[i] == PERIOD_M30) { if (close_rsi < 50) SendAlert("Signal détecté sur M30 : Rsi inférieur à 50"); } else { if (close_rsi >= 70) SendAlert("Signal détecté sur H1 : Rsi arrive dans la zone 70"); } } else Alert("Erreur lors de la copie du buffer RSI pour la période: ", EnumToString(timeframes[i])); } } // Etape 5 : Fonction native MQL5. C'est donc ici que tout se joue. void OnTick() { /* Puisque dans l'énoncé de ton besoin, tu as parlé des timeframes M30 et H1... À chaque nouveau tick qui arrive, nous vérifions pour savoir est-ce la bougie M30 qui est là présentement est la même qui était là à l'arrivé du tick précédent ou non. Si c'est la même bougie, on ne fait rien. Par contre, si on détecte qu'il s'agit plutôt d'une autre (nouvelle) bougie, eh bien là, on appelle la fonction d'alerte pour vérifier si les conditions sont éventuellement réunies ou non pour l'envoi justement, tu t'en doutes bien, d'une alerte. Et donc, si tu as bien compris le cheminement du raisonnement pour ce cas précis ici, c'est chaque après 30 minutes qu'on sonde tes RSI pour savoir si on devrait t'alerter ou non */ if (TesterPremierTick(PERIOD_M30, firsTickM30)) TesterSignal_Rsi(); }
Voilà ! J'estime que cette petite ébauche peut déjà t'orienter... Merci
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