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
Vérifiez les fonctions de temps dans l'aide de Metatrader, puis essayez quelque chose comme ceci
si (TimeHour(Time[0]) TradeHourStop)
{
Comment("Trading suspendu - en dehors des heures de négociation") ;
return(false) ;
}
où TimeHourStart et stop sont des variables externes que vous définissez. Le return(false) ; quittera la fonction start sans autre traitement.
Bonne chance,
Merci pour cette réponse rapide, Tzuman.
Malheureusement, ma programmation MT4 est limitée à un constructeur d'EA en ligne pour le moment.
Mais c'est exactement ce que je cherchais !
Comment coder la configuration de la couleur du texte et de la taille de la police des commentaires .
Bonjour à tous,
Je travaille sur un EA et je ne suis qu'un programmeur débutant...
Et j'ai une question en général comment coder la taille de la police et la couleur du texte des commentaires et les rendre configurables par l'utilisateur. Quelles variables externes dois-je créer ? Et comment dois-je le programmer ?
Je sais comment utiliser la fonction commentaire, par exemple comme ceci :
if(TextOnScreen == true) Comment("Ce texte apparaît à l'écran ") ;
Mais comment le programmer pour que l'utilisateur puisse changer la taille de la police du texte qui apparaît à l'écran et aussi comment changer la couleur de ce texte en modifiant le paramètre dans les options de l'EA ?
Quelqu'un peut-il m'aider avec quelques lignes de code ? Je vous en serais très reconnaissant.
Merci beaucoup.
Johan
Bonjour à tous,
Je travaille sur un EA et je ne suis qu'un programmeur débutant...
Et j'ai une question en général comment coder la taille de la police et la couleur du texte des commentaires et les rendre configurables par l'utilisateur. Quelles variables externes dois-je créer ? Et comment dois-je le programmer ?
Je sais comment utiliser la fonction commentaire, par exemple comme ceci :
if(TextOnScreen == true) Comment("Ce texte apparaît à l'écran ") ;
Mais comment le programmer pour que l'utilisateur puisse changer la taille de la police du texte qui apparaît à l'écran et aussi comment changer la couleur de ce texte en modifiant le paramètre dans les options de l'EA ?
Quelqu'un peut-il m'aider avec quelques lignes de code ? Je vous en serais très reconnaissant.
Merci beaucoup.
JohanVous devez utiliser des objets graphiques comme par exemple des étiquettes. Comment faire cela - vous pouvez facilement lire dans le manuel.
Bonjour à tous,
Je travaille sur un EA et je ne suis qu'un programmeur débutant...
Et j'ai une question en général comment coder la taille de la police et la couleur du texte des commentaires et les rendre configurables par l'utilisateur. Quelles variables externes dois-je créer ? Et comment dois-je le programmer ?
Je sais comment utiliser la fonction commentaire, par exemple comme ceci :
if(TextOnScreen == true) Comment("Ce texte apparaît à l'écran ") ;
Mais comment le programmer pour que l'utilisateur puisse changer la taille de la police du texte qui apparaît à l'écran et aussi comment changer la couleur de ce texte en modifiant le paramètre dans les options de l'EA ?
Quelqu'un peut-il m'aider avec quelques lignes de code ? Je vous en serais très reconnaissant.
Merci beaucoup.
JohanJohan,
Étudiez l'indicateur ci-joint.
Une partie du code est destinée à l'utilisation d'un modèle.
Je l'ai découvert à la dure lorsque le texte d'une paire est apparu sur le graphique d'une autre paire à cause du modèle.
Si plus de lignes de texte sont nécessaires, vous devriez être capable de le découvrir.
Sinon, postez à nouveau votre message et je vous montrerai un exemple avec plusieurs lignes.
Robert
pourquoi l'ordre de fermeture échoue et comment limiter l'ordre n.o. ?
Je suis un débutant dans MQL4, je viens de tester un EA de moi-même, mais il semble qu'il ne pouvait pas fermer l'ordre, et il ouvrirait un ordre dans chaque barre jusqu'à ce que freemargin devienne 0, puis il forcerait l'arrêt de tous les ordres. Je ne sais pas comment limiter le nombre d'ordres ouverts. Qui peut me dire, merci beaucoup !
Le code est le suivant :
//+------------------------------------------------------------------+
//| Moving Average.mq4 |
//| Copyright ?2005, MetaQuotes Software Corp. |
//| TeamWox Groupware / MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#define MAGICMA 20110309
extern double Lots = 1 ;
extern double MaximumRisk = 0.02 ;
extern double DecreaseFactor = 10 ;
//+------------------------------------------------------------------+
//| Calculer les positions ouvertes |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0 ;
//----
for(int i=0;i<OrdersTotal();i++)
{
si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) achète++ ;
si(OrderType()==OP_SELL) vend++ ;
}
}
//---- retourner le volume des commandes
if(buys>0) return(buys) ;
sinon return(sells) ;
}
//+------------------------------------------------------------------+
//| Calcul de la taille de lot optimale |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots ;
int orders=HistoryTotal() ; // total des ordres historiques
int losses=0 ; // nombre d'ordres avec pertes sans pause
//---- sélectionner la taille du lot
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100.0,1) ;
Print(MarketInfo(Symbol(), MODE_LOTSIZE)) ;
Print(MarketInfo(Symbol(), MODE_MINLOT)) ;
Print(MarketInfo(Symbol(), MODE_LOTSTEP)) ;
Print(MarketInfo(Symbol(), MODE_MAXLOT)) ;
//---- calculer le nombre d'ordres de pertes sans pause
if(FacteurDeDiminution>0)
{
for(int i=ordres-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Erreur dans l'historique !") ; break ; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue ;
//----
si(OrderProfit()>0) break ;
si(OrderProfit()<0) pertes++ ;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1) ;
//C'est une conception technique intelligente, mais les pertes représentent des pertes de profit, et non de l'argent, ce qui peut poser des problèmes.
//modifiez-les comme suit : accountfreemargin()-orderprofit()
}
//---- retourner la taille du lot
si(lot<1) lot=1 ;
return(lot) ;
}
//+------------------------------------------------------------------+
//| Vérifier les conditions d'un ordre ouvert |
//+------------------------------------------------------------------+
void CheckForOpen()
{
double m1,m2,m3,m4,ticket1,ticket2 ;
int res ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0) ;
m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0) ;
m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1) ;
m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1) ;
//---- conditions de vente
si (m1<m3-0.0002)
{
ticket1=OrderSend(Symbol(),OP_SELL,1,Bid,5,Ask+105*Point,0, "Mon ordre #1",MAGICMA,0,Red) ;
retour ;
}
si (m2<m4-0.0001)
{
ticket2=OrderSend(Symbol(),OP_SELL,1,Bid,5,Ask+105*Point,0, "Mon ordre #2",MAGICMA,0,Yellow) ;
retour ;
}
//---- conditions d'achat
si ( m1>m3+0.0002)
{
ticket1=OrderSend(Symbol(),OP_BUY,1,Ask,5,Bid-105*Point,0, "Mon ordre #1",MAGICMA,0,Blue) ;
retour ;
}
si (m2>m4+0.0001)
{
ticket2=OrderSend(Symbol(),OP_BUY,1,Ask,5,Bid-105*Point,0, "Mon ordre #2",MAGICMA,0,Vert) ;
retour ;
}
//----
}
//+------------------------------------------------------------------+
//| Vérifier les conditions d'ordre de fermeture |
//+------------------------------------------------------------------+
void CheckForClose()
{
double m1,m2,m3,m4 ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0) ;
m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0) ;
m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1) ;
m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1) ;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue ;
//---- vérifier le type d'ordre
if(OrderType()==OP_BUY))
{
if(m1<m3+0.0002)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
pause ;
}
si(m2<m4+0.0001)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White) ;
break ;
}
}
si(OrderType()==OP_SELL))
{
if(m1>m3-0.0002)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Tan) ;
break ;
}
si(m2<m4-0.0001)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Salmon) ;
pause ;
}
}
}
//----
}
//+------------------------------------------------------------------+
//| Fonction de démarrage |
//+------------------------------------------------------------------+
void start()
{
//---- vérifier l'historique et les transactions
if(Bars<55 || IsTradeAllowed()==false) return ;
//---- calculer les ordres ouverts par symbole courant
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
sinon CheckForClose() ;
//----
}
//+------------------------------------------------------------------+
Détecter la version de Windows
Est-ce que quelqu'un connaît un moyen facile de savoir quelle version de Windows MT4 fonctionne en utilisant simplement un appel API de Windows.
Quelqu'un peut-il me dire comment faire fonctionner ceci :
#import "kernel32.dll" (en anglais)
int GWINAPI GetVersionEA(_inout LPOSVERSIONINFO lpVersionInfo) ;
#import
Fonction GetVersionEx (Windows)
Merci
Besoin d'aide. Petit ajustement à mon EA CCI Divergence
J'ai un EA CCI Divergence qui utilise un indicateur CCI Divergence personnalisé dans le dossier Indicateurs de MT4 pour déterminer quand placer une transaction.
Ce que je veux faire, c'est utiliser un indicateur de divergence Stochastics personnalisé (que je possède) à la place.
Je ne sais pas comment modifier le code de l'EA pour le diriger vers l'indicateur de divergence stochastique dans le dossier des indicateurs.
Dans les entrées de l'EA je pense que je dois remplacer :
extern int CCI_Period = 10 ;
par
extern int Stoch_K = 5 ;
extern int Stoch_D = 3 ;
extern int Stoch_Slowing = 3 ;
Dans la partie principale du code, j'ai trouvé la zone qui pointe vers l'indicateur CCI Divergence personnalisé dans le dossier Indicateurs :
dUp = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", false, false, false, 0, 2) ;
dDn = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", false, false, false, 1, 2) ;
Je sais que je dois remplacer "CCI_Divergence_Indicator" par "Stochastics_Divergence_Indicator", qui est le nom de l'indicateur de divergence stochastique personnalisé dans le dossier Indicateurs. Et je dois supprimer le CCI_Period et 9.
Mais je ne sais pas comment ajouter le Stoch_K, Stoch_D, et Stoch_Slowing à cette partie du code.
J'ai essayé de les modifier moi-même, mais l'EA ne s'ouvre pas.
Quelqu'un sait-il comment coder cette partie du code pour que l'indicateur de divergence stochastique puisse remplacer l'indicateur de divergence cci ?
J'ai payé un programmeur pour créer l'ea, mais il est très occupé par les projets d'autres clients. Donc, quand il s'agit de changements mineurs / correctifs, il n'a pas le temps de le faire pour moi - du moins pas tout de suite. C'est pourquoi je pose la question ici.
L'indicateur de divergence CCI a beaucoup trop de faux signaux. L'indicateur de divergence Stochastics est bien meilleur. C'est pourquoi je veux faire le changement.
Merci d'avance.
A l'aide s'il vous plaît
J'ai une ligne de code qui m'alertera lorsque le prix d'une barre (que ce soit 1m 5m 189m) bouge de 200 pips DANS UNE BARRE. Mais je n'arrive pas à trouver comment le configurer pour qu'il n'alerte QUE dans une direction spécifique. voici...
if(High[0]-Low[0]>200*Point)PlaySound("Alert.wav") ; //Cela fonctionne bien.
Mais je veux pouvoir faire la distinction entre une hausse de 200 points et une baisse de 200 points. J'ai lu, j'ai demandé dans les forums, j'ai été dans les salles de chat, et je me suis rendu fou pendant 3 jours. J'en ai assez, s'il vous plaît, pour l'amour de Dieu, aidez-moi.
if(High[0]-Low[0]>200*Point && Close[0]<Open[0])PlaySound("Down.wav");[/CODE]
Actually, you should rather look at highs and lows of two last bars and compare close to close, to ensure gaps are included, too:
[CODE]if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]>Close[1])PlaySound("Up.wav");
if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]<Close[1])PlaySound("Down.wav");