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
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
MQL4 Ajouter un indicateur au graphique depuis l'EA
Alain Verleyen, 2016.02.13 11:39
Bonjour tout le monde
le code ci-dessus fonctionne dans un Expert ,comment utiliser des codes ci-dessus dans un Indicateur ?
s'il vous plaît aidez.
Est-il possible dans MT4 de supprimer l'indicateur du graphique en utilisant l'EA ? Un certain code peut être écrit dans la fonction OnDenit().
Supprime un indicateur avec un nom spécifié de la fenêtre graphique spécifiée. La commande est ajoutée à la file d'attente des messages du graphique et n'est exécutée qu'après le traitement de toutes les commandes précédentes.
boolChartIndicatorDelete(
longchart_id,// id du graphique
intsub_window,// numéro de la sous-fenêtre
const stringindicator_shortname// nom court de l'indicateur
) ;
Paramètres
chart_id
[in] ID du graphique. 0 indique le graphique actuel.
sub_window
[in] Numéro de la sous-fenêtre du graphique. 0 désigne la sous-fenêtre du graphique principal.
const indicator_shortname
[Le nom court de l'indicateur qui est défini dans lapropriété INDICATOR_SHORTNAME avec la fonctionIndicatorSetString(). Pour obtenir le nom court d'un indicateur, utilisez la fonctionChartIndicatorName().
Valeur de retour
Renvoie true si la commande a été ajoutée à la file d'attente du graphique, sinon false. Pour obtenir desdétails sur les erreurs, utilisez la fonctionGetLastError().
Bonjour à tous,
Je voudrais remercier Georgiy Liashchenko, et je voudrais partager ma version améliorée de son code qui ajoute l'indicateur directement dans le graphique avecAutomaticallyAcceptDefaults (quand il est sur "true").
J'espère que cela aidera certaines personnes qui ont besoin d'insérer des indicateurs à partir de l'expert.
Note : Cela fonctionne pour les indicateurs personnalisés, sinon changez le nom de la fenêtre.
Note2 : N'utilisez pas d'indicateurs avec plus de 15 caractères (avant le ".ex4").
Bonjour, j'ai obtenu ceci
Impossible d'appeler 'user32.dll::RegisterWindowMessageW', 'user32.dll' n'est pas chargé.
Quelqu'un peut-il m'aider ?
Je n'ai pas ce problème (avec le code que j'ai posté).
Vérifiez que hWnd est différent de 0.
Vous pouvez également essayer d'augmenter la valeur de sleep à 50 ou 100.
Cher Alain ,
J'ai utilisé votre code pour ajouter un indicateur à tous les graphiques ouverts, mais il n'a été ajouté qu'au graphique sur lequel je lance l'EA.
Voici le code, pouvez-vous s'il vous plaît modifier votre code pour ajouter le même indicateur à tous les graphiques ouverts ?
Merci de m'aider.
BTW (je l'ai essayé comme EA et aussi comme script, les deux ont ajouté l'indicateur à un seul graphique) :)
Salutations,
#Importation de "user32.dll".
int RegisterWindowMessageW(string MessageName) ;
int PostMessageW(int hwnd,int msg,int wparam,uchar &Name[]) ;
#import
#define INDICATOR_NAME "CCI_FILTER6C" (nom de l'indicateur)
int NOS ;
string suffix="" ;
string symbol[30] ;
long chartid[30] ;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int OnStart()
{
NOS=10 ;
suffixe="c" ;
symbol[0] = "AUDCAD" + suffixe ;
symbol[1] = "AUDCHF" + suffixe ;
symbol[2] = "AUDJPY" + suffixe ;
symbole[3] = "AUDNZD" + suffixe ;
symbol[4] = "AUDUSD" + suffixe ;
symbol[5] = "CADJPY" + suffixe ;
symbole[6] = "CHFJPY" + suffixe ;
symbol[7] = "EURAUD" + suffixe ;
symbole[8] = "EURCAD" + suffixe ;
symbole[9] = "EURCHF" + suffixe ;
for(int is=0;is<NOS;is++)
{
int hWnd=WindowHandle(symbol[is],PERIOD_M30) ;
StartCustomIndicator(hWnd,INDICATOR_NAME) ;
}
return(0) ;
}
void StartCustomIndicator(int hWnd,string IndicatorName,bool AutomaticallyAcceptDefaults=true)
{
uchar nom2[] ;
StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName)) ;
int MessageNumber=RegisterWindowMessageW("MetaTrader4_Internal_Message") ;
int r=PostMessageW(hWnd,MessageNumber,15,name2) ;
Sleep(100) ;
}
Bonjour, je n'arrive pas à charger 2 indicateurs à partir d'un EA en utilisant le même code.
Je cherche aussi ceci - quelqu'un a-t-il trouvé comment ajouter plusieurs indicateurs à partir du même EA ?
Je veux ajouter 2https://docs.mql4.com/indicators/ima à partir du même EA.
merci