//+------------------------------------------------------------------+
//|                                           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);
  }
//+------------------------------------------------------------------+