//+------------------------------------------------------------------+ //| JuiceExpertEssai01.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern int Lots = 1; extern int TakeProfit = 10; extern int StopLoss = 15; int ticket; //---- indicator parameters extern bool DoAlerts = false; extern int AlertFromPips = 8; extern int Periyod=7; extern int thresholdLevel=8; extern int sosoLevel = 4; extern bool JuiceLevelsVisible = true; extern int JuiceStartPips = 4; extern int JuiceStepPips = 4; extern int JuiceLevelsNumber = 3; extern color JuiceLevelColor = Silver; double thresholdLevelPoint; double sosoLevelPoint; //---- indicator buffers double GoodJuice[]; double BadJuice[]; double SoSoJuice[]; double currentJuiceLevel; double Juice; double iCustom(NULL,0,"JuiceLevelsAlertNew",16,3,0); //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Juice > AlertFromPips && Period() == 5) { if (Open[0]<Close[0]) { // Les conditions d'entrées ACHAT ont été testées // Si elles sont conformes, on passe un ordre d'achat // la fonction OrderSend() permets l'envoi de l'ordre // Sa synthaxe est la suivante: // OrderSend(paire de devises, type d'ordre d'achat, nb de lots, prix d'execution, slippage, stoploss, take profit, commentaire, n° magique, expiration, couleur de la flêche sur le graphe) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"AchatJuice",16384,0,Green); // Si le passage d'ordre a réussi, la valeur ticket a été updatée avec le n° du ticket if(ticket>0) { // On sélectionne l'ordre ouvert et on envoi un message de confirmation dans la plateforme if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre d ACHAT exécuté à : ",OrderOpenPrice()); } // sinon, le passage d'ordre est donc infructeux, on envoi le message d'erreur dans la plateforme else Print("Erreur à la création de l ordre ACHAT : ",GetLastError()); return(0); } else // la fonction OrderSend() permets l'envoi de l'ordre // Sa synthaxe est la suivante: // OrderSend(paire de devises, type d'ordre d'achat, nb de lots, prix d'execution, slippage, stoploss, take profit, commentaire, n° magique, expiration, couleur de la flêche sur le graphe) ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"VenteJuice",16384,0,Red); // Si le passage d'ordre a réussi, la valeur ticket a été updatée avec le n° du ticket if(ticket>0) { // On sélectionne l'ordre ouvert et on envoi un message de confirmation dans la plateforme if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } // sinon, le passage d'ordre est donc infructeux, on envoi le message d'erreur dans la plateforme else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } // On sort ici de la boucle //---- done return(0); //---- //---- return(0); //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
JuiceLevelsAlertNew
Order Management characteristics:
It automatically opens orders when conditions are reached
Other Features: