!xMeter_EURvsUSD





//+------------------------------------------------------------------+
//|                                             !xMeter_EURvsUSD.mq4 |
//|                                        Copyright © 2007, FerruFx |
//|                                                                  |
//|                   Price Meter System™ ©GPL by Rlinac (TSD-forum) |
//|           2007/05/16 Modified by Robert Hill (IBFX mini Account) |
//|                                                                  |
//+------------------------------------------------------------------+

//---- Trade parameters
extern string    Trade_parameters = "=== Trade parameters ===";
extern double    Lot              =         1.0;  // Lot size
extern double    TakeProfit       =         70.0;  // Profit for the order opened
extern double    TrailingStop     =         30.0;  // Pips to trail the StopLoss
extern double    StopLoss         =         50.0;  // StopLoss
extern int       Slippage         =            3;  // Slippage
extern double    HighLevel        =          5.0;  // Level to reach for 1st condition become true
extern double    LowLevel         =          3.0;  // Level to not exceed for 2nd condition become true
extern int       MaxSpread        =          5.0;  // Maximum Spread allowed for trading

//---- Lot size management
extern string    Lot_size_management = "=== Lot size management ===";
extern string    AccountType_is   =    " 0=normal,1=mini,2=micro";
extern int       AccountType      =          0;
extern bool      ManagedLotSize   =        false;  // If true, lot size based on the free margin
extern double    Risk             =          1.0;  // Risk to protect the equity
extern int       MaxLot           =         10.0;  // Maximum lot size

//---- Only for IBFX mini account
extern string    IBFX_mini_account= "=== Only for IBFX mini account ===";
extern bool AccountIsIBFXmini     = false;

//---- !xMeter indicator settings
#define ARRSIZE  12                     // number of pairs !!!DON'T CHANGE THIS NUMBER!!!
#define PAIRSIZE 7                      // number of currencies !!!DON'T CHANGE THIS NUMBER!!!
#define TABSIZE  10                     // scale of currency's power !!!DON'T CHANGE THIS NUMBER!!!
#define ORDER    2                      // available type of order !!!DON'T CHANGE THIS NUMBER!!!
// Currency pair
#define EURUSD 0
#define GBPUSD 1
#define AUDUSD 2
#define USDJPY 3
#define USDCHF 4
#define USDCAD 5
#define EURJPY 6
#define EURGBP 7
#define EURCHF 8
#define EURAUD 9
#define GBPJPY 10
#define GBPCHF 11
// Currency
#define USD 0
#define EUR 1
#define GBP 2
#define CHF 3
#define CAD 4
#define AUD 5
#define JPY 6

string aPair[ARRSIZE]   = {"EURUSDm","GBPUSDm","AUDUSDm","USDJPYm","USDCHFm","USDCADm",
                           "EURJPYm","EURGBPm","EURCHFm","EURAUDm","GBPJPYm","GBPCHFm"};
string aMajor[PAIRSIZE] = {"USD","EUR","GBP","CHF","CAD","AUD","JPY"};
string aOrder[ORDER]    = {"BUY ","SELL "};

double aMeter[PAIRSIZE];
double aHigh[ARRSIZE];
double aLow[ARRSIZE];
double aBid[ARRSIZE];
//double aAsk[ARRSIZE];
double aRatio[ARRSIZE];
double aRange[ARRSIZE];
double aLookup[ARRSIZE];
double aStrength[ARRSIZE];
double point;
int    index;
string mySymbol;

double   sl, tp, lot;
int      MagicNumber, cnt, ticket, total;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") { MagicNumber = 426801; }
   if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") { MagicNumber = 426802; }
   if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") { MagicNumber = 426803; }
   if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") { MagicNumber = 426804; }
   if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") { MagicNumber = 426805; }
   if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") { MagicNumber = 426806; }
   if (Symbol() == "EURCADm" || Symbol() == "EURCAD") { MagicNumber = 426807; }
   if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") { MagicNumber = 426808; }
   if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") { MagicNumber = 426809; }
   if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") { MagicNumber = 426810; }
   if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") { MagicNumber = 426811; }
   if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") { MagicNumber = 426812; }
   if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") { MagicNumber = 426813; }
   if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") { MagicNumber = 426814; }
   if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") { MagicNumber = 426815; }
   if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") { MagicNumber = 426816; }
   if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") { MagicNumber = 426817; }
   if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") { MagicNumber = 426818; }
   if (Symbol() == "USDCADm" || Symbol() == "USDCAD") { MagicNumber = 426819; }
   if (MagicNumber == 0) { MagicNumber = 426899; }
   
   int   err,lastError;
   initGraph();
   Sleep(10000);
/*   while (true)                                                             // infinite loop for main program
      {
      if (IsConnected()) start();
      if (!IsConnected()) objectBlank();
      WindowRedraw();
      Sleep(1000);                                                          // give your PC a breath
      }
      
*/   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll(0,OBJ_LABEL);
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

//---- !xMeter calculation
     
   for (index = 0; index < ARRSIZE; index++)    // initialize all pairs required value 
      {
      RefreshRates();   // refresh all currency's
      if (AccountIsIBFXmini) mySymbol = aPair[index];
      else mySymbol = StringSubstr(aPair[index],0,6);
      //--- point calculation
      if (mySymbol == "USDJPY" || mySymbol == "EURJPY" || mySymbol == "GBPJPY") { point = 0.01; }
      else { point = 0.0001; }
      
      //--- grade table for currency's power
      int aTable[TABSIZE]  = {0,3,10,25,40,50,60,75,90,97};
      if      (aRatio[index]*100 <= aTable[0]) aLookup[index]   = 0;
      else if (aRatio[index]*100 < aTable[1])  aLookup[index]   = 0;
      else if (aRatio[index]*100 < aTable[2])  aLookup[index]   = 1;
      else if (aRatio[index]*100 < aTable[3])  aLookup[index]   = 2;
      else if (aRatio[index]*100 < aTable[4])  aLookup[index]   = 3;
      else if (aRatio[index]*100 < aTable[5])  aLookup[index]   = 4;
      else if (aRatio[index]*100 < aTable[6])  aLookup[index]   = 5;
      else if (aRatio[index]*100 < aTable[7])  aLookup[index]   = 6;
      else if (aRatio[index]*100 < aTable[8])  aLookup[index]   = 7;
      else if (aRatio[index]*100 < aTable[9])  aLookup[index]   = 8;
      else                                     aLookup[index]   = 9;
      //---

      //aHigh[index]     = MarketInfo(mySymbol,MODE_HIGH);                // set a high today
      aHigh[index]     = iHigh(mySymbol,1440,0);
 //Print(aHigh[index]);
      //aLow[index]      = MarketInfo(mySymbol,MODE_LOW);                 // set a low today
      aLow[index]      = iLow(mySymbol,1440,0);
 //Print(aLow[index]);      
      //aBid[index]      = MarketInfo(mySymbol,MODE_BID);                 // set a last bid
      aBid[index]      = iClose(mySymbol,1440,0);
 //Print(aBid[index]);      
      //aAsk[index]      = MarketInfo(mySymbol,MODE_ASK);                 // set a last ask
      
      aRange[index]    = MathMax((aHigh[index]-aLow[index])/point,1);       // calculate range today
      aRatio[index]    = (aBid[index]-aLow[index])/aRange[index]/point;     // calculate pair ratio
      aStrength[index] = 9-aLookup[index];                                  // set a pair strengh
      }   //---- for

   //---- calculate all currencies meter         
   aMeter[USD] = NormalizeDouble((aLookup[USDJPY]+aLookup[USDCHF]+aLookup[USDCAD]+aStrength[EURUSD]+aStrength[GBPUSD]+aStrength[AUDUSD])/6,1);
   aMeter[EUR] = NormalizeDouble((aLookup[EURUSD]+aLookup[EURJPY]+aLookup[EURGBP]+aLookup[EURCHF]+aLookup[EURAUD])/5,1);
   aMeter[GBP] = NormalizeDouble((aLookup[GBPUSD]+aLookup[GBPJPY]+aLookup[GBPCHF]+aStrength[EURGBP])/4,1);
   aMeter[CHF] = NormalizeDouble((aStrength[USDCHF]+aStrength[EURCHF]+aStrength[GBPCHF])/3,1);
   aMeter[CAD] = NormalizeDouble((aStrength[USDCAD]),1);
   aMeter[AUD] = NormalizeDouble((aLookup[AUDUSD]+aStrength[EURAUD])/2,1);
   aMeter[JPY] = NormalizeDouble((aStrength[USDJPY]+aStrength[EURJPY]+aStrength[GBPJPY])/3,1);
        
   //---- display the results     
   objectBlank();   
   paintUSD(aMeter[USD]);
   paintEUR(aMeter[EUR]);
   /*
   paintGBP(aMeter[GBP]);
   paintCHF(aMeter[CHF]);
   paintCAD(aMeter[CAD]);
   paintAUD(aMeter[AUD]);
   paintJPY(aMeter[JPY]);
   paintLine();
   */
   
   double eur = aMeter[EUR];
   double usd = aMeter[USD];
   
//---- Test the variables

   /*
   ObjectCreate("EUR1", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("EUR1",DoubleToStr(eur,1),7, "Verdana", Lime);
   ObjectSet("EUR1", OBJPROP_CORNER, 1);
   ObjectSet("EUR1", OBJPROP_XDISTANCE, 200);
   ObjectSet("EUR1", OBJPROP_YDISTANCE, 50);
   
   ObjectCreate("USD1", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("USD1",DoubleToStr(usd,1),7, "Verdana", Red);
   ObjectSet("USD1", OBJPROP_CORNER, 1);
   ObjectSet("USD1", OBJPROP_XDISTANCE, 200);
   ObjectSet("USD1", OBJPROP_YDISTANCE, 70);
   */
   
//---- GO TRADING

//---- Check if order opened

   total = OrdersTotal();
   int j, orders;
   for(j=0;j<total;j++)
   {
    OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
    if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) orders++; //---- an order is opened with
   }                                                                             //---- same symbol, same magic number
   
   if ( orders < 1 )    //---- we can go trading
   {

//---- Lot size calculation

  if (AccountType==0)
   {
	 if (ManagedLotSize) { lot=NormalizeDouble(AccountBalance()*Risk/10000,1); }
	 else { lot=Lot; }
   } 
   
   if (AccountType==1)
   {  // then is mini
    if (ManagedLotSize) { lot=NormalizeDouble((AccountBalance()*Risk/10000)/10,1); }
	 else { lot=Lot; }
   }
   
   if (AccountType==2)
   {
    if (ManagedLotSize) { lot=NormalizeDouble((AccountBalance()*Risk/10000)/100,1); }
    else { lot=Lot; }
   }

   if (lot<0.01) lot=0.01;
   if (lot>10) lot=10; 
////////////////////////////////////////////////////////////////////////////////////////////////// 
    
//---- Display the spread and EUR/USD's values

    /*
    Comment("\n"+"Current spread: "+spread
           ,"\n"+"EUR value: "+DoubleToStr(eur,1)
           ,"\n"+"USD value: "+DoubleToStr(usd,1));
    */
int spread = MarketInfo(Symbol(),MODE_SPREAD);    
//---- Check for long position
   
    if ( eur >= HighLevel && usd <= LowLevel && spread <= MaxSpread )
    {
     if (TakeProfit==0) { tp=0; }
     else { tp=Ask+TakeProfit*Point; }
     if (StopLoss==0) { sl=0; }
     else { sl=Ask-StopLoss*Point; }
     ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,0,0,"!xMeter EURvsUSD",MagicNumber,0,Lime);
     if( ticket > 0 )
     {
      if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      {
       Print("BUY order opened : ",OrderOpenPrice()); 
       Sleep(1000);
       {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Coral); Alert("EUR buy: ",Period(),"",sl,"",tp,"");
       return(0);
       }
      }
     }
     else
     {
      Print("Error opening BUY order : ",GetLastError()); 
     }
     return(0); 
    }

//---- Check for short position

    if ( usd >= HighLevel && eur <= LowLevel && spread <= MaxSpread ) 
    {
     if (TakeProfit==0) { tp=0; }
     else { tp=Bid-TakeProfit*Point; }
     if (StopLoss==0) { sl=0; }
     else { sl=Bid+StopLoss*Point; }
     ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage,0,0,"!xMeter EURvsUSD",MagicNumber,0,Red);
     if(ticket>0)
     {
      if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      {
       Print("SELL order opened : ",OrderOpenPrice());
       Sleep(1000);
       {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Coral); Alert("EUR sell: ",Period(),"",sl,"",tp,""); 
       return(0);
       }
      }
     }
     else
     {
      Print("Error opening SELL order : ",GetLastError());
     } 
     return(0); 
    }
    return(0);
     
   }
    
   
//---- Check for exit

   total=OrdersTotal();
   for(cnt=0;cnt<total;cnt++)
   {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)
    {
     if(OrderType()==OP_BUY)   //---- long position
     {
            
//---- Trailing stop long

      if(TrailingStop>0)  
      {                 
       if(Bid-OrderOpenPrice()>Point*TrailingStop)
       {
        if(OrderStopLoss()<Bid-Point*TrailingStop)
        {
         OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Lime); Alert("EUR mod: ",Period(),"");
         return(0);
        }
       }
      }
     }
     else //---- short position
     {
     
//---- Trailing stop short
            
      if(TrailingStop>0)  
      {                 
       if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
       {
        if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
        {
         OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); Alert("EUR mod: ",Period(),"");
         return(0);
        }
       }
      }
     }      //---- else
    }       //---- if(OrderType()<=OP_SELL &&
   }        //---- for
   
   return(0);
   
  }         //---- int start()


//---- Display the !xMeter's values

void initGraph()
  {
   ObjectsDeleteAll(0,OBJ_LABEL);

   objectCreate("usd_1",30,38);
   objectCreate("usd_2",30,30);
   objectCreate("usd_3",30,22);
   objectCreate("usd_4",30,14);
   objectCreate("usd_5",30,7);
   objectCreate("usd",32,5,"USD",7,"Arial Narrow",SkyBlue);
   objectCreate("usdp",34,16,DoubleToStr(9,1),8,"Arial Narrow",Silver);
   
   objectCreate("eur_1",10,38);
   objectCreate("eur_2",10,30);
   objectCreate("eur_3",10,22);
   objectCreate("eur_4",10,14);
   objectCreate("eur_5",10,7);
   objectCreate("eur",12,5,"EUR",7,"Arial Narrow",SkyBlue);
   objectCreate("eurp",14,16,DoubleToStr(9,1),8,"Arial Narrow",Silver);
/*
   objectCreate("gbp_1",90,43);
   objectCreate("gbp_2",90,35);
   objectCreate("gbp_3",90,27);
   objectCreate("gbp_4",90,19);
   objectCreate("gbp_5",90,11);
   objectCreate("gbp",92,12,"GBP",7,"Arial Narrow",SkyBlue);
   objectCreate("gbpp",94,21,DoubleToStr(9,1),8,"Arial Narrow",Silver);
   
   objectCreate("chf_1",70,43);
   objectCreate("chf_2",70,35);
   objectCreate("chf_3",70,27);
   objectCreate("chf_4",70,19);
   objectCreate("chf_5",70,11);
   objectCreate("chf",72,12,"CHF",7,"Arial Narrow",SkyBlue);
   objectCreate("chfp",74,21,DoubleToStr(9,1),8,"Arial Narrow",Silver);

   objectCreate("cad_1",50,43);
   objectCreate("cad_2",50,35);   
   objectCreate("cad_3",50,27);
   objectCreate("cad_4",50,19);
   objectCreate("cad_5",50,11);
   objectCreate("cad",52,12,"CAD",7,"Arial Narrow",SkyBlue);
   objectCreate("cadp",54,21,DoubleToStr(9,1),8,"Arial Narrow",Silver);
   
   objectCreate("aud_1",30,43);
   objectCreate("aud_2",30,35);
   objectCreate("aud_3",30,27);
   objectCreate("aud_4",30,19);
   objectCreate("aud_5",30,11);
   objectCreate("aud",32,12,"AUD",7,"Arial Narrow",SkyBlue);
   objectCreate("audp",34,21,DoubleToStr(9,1),8,"Arial Narrow",Silver);

   objectCreate("jpy_1",10,43);
   objectCreate("jpy_2",10,35);
   objectCreate("jpy_3",10,27);
   objectCreate("jpy_4",10,19);
   objectCreate("jpy_5",10,11);
   objectCreate("jpy",13,12,"JPY",7,"Arial Narrow",SkyBlue);
   objectCreate("jpyp",14,21,DoubleToStr(9,1),8,"Arial Narrow",Silver);
   
   objectCreate("line",10,6,"-----------------------------------",10,"Arial",DimGray);  
   objectCreate("line1",10,27,"-----------------------------------",10,"Arial",DimGray);  
   objectCreate("line2",10,69,"-----------------------------------",10,"Arial",DimGray);
   objectCreate("sign",11,1,"»»» Price Meter System™ ©GPL «««",8,"Arial Narrow",DimGray);
*/   
   WindowRedraw();
  }
//+------------------------------------------------------------------+
void objectCreate(string name,int x,int y,string text="-",int size=42,
                  string font="Arial",color colour=CLR_NONE)
  {
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSet(name,OBJPROP_CORNER,3);
   ObjectSet(name,OBJPROP_COLOR,colour);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetText(name,text,size,font,colour);
  }

void objectBlank()
  {
   ObjectSet("usd_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usd_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usd_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usd_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usd_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usd",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("usdp",OBJPROP_COLOR,CLR_NONE);

   ObjectSet("eur_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eur_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eur_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eur_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eur_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eur",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("eurp",OBJPROP_COLOR,CLR_NONE);
/*
   ObjectSet("gbp_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbp_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbp_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbp_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbp_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbp",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("gbpp",OBJPROP_COLOR,CLR_NONE);

   ObjectSet("chf_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chf_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chf_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chf_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chf_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chf",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("chfp",OBJPROP_COLOR,CLR_NONE);

   ObjectSet("cad_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cad_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cad_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cad_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cad_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cad",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("cadp",OBJPROP_COLOR,CLR_NONE);

   ObjectSet("aud_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("aud_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("aud_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("aud_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("aud_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("aud",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("audp",OBJPROP_COLOR,CLR_NONE);

   ObjectSet("jpy_1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpy_2",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpy_3",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpy_4",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpy_5",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpy",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("jpyp",OBJPROP_COLOR,CLR_NONE);
   
   ObjectSet("line1",OBJPROP_COLOR,CLR_NONE);
   ObjectSet("line2",OBJPROP_COLOR,CLR_NONE); 
*/
  }
  
void paintUSD(double value)
  {
   if (value > 0) ObjectSet("usd_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("usd_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("usd_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("usd_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("usd_1",OBJPROP_COLOR,Lime);
   ObjectSet("usd",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("usdp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }

void paintEUR(double value)
  {
   if (value > 0) ObjectSet("eur_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("eur_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("eur_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("eur_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("eur_1",OBJPROP_COLOR,Lime);
   ObjectSet("eur",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("eurp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }
/*
void paintGBP(double value)
  {
   if (value > 0) ObjectSet("gbp_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("gbp_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("gbp_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("gbp_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("gbp_1",OBJPROP_COLOR,Lime);
   ObjectSet("gbp",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("gbpp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }

void paintCHF(double value)
  {
   if (value > 0) ObjectSet("chf_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("chf_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("chf_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("chf_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("chf_1",OBJPROP_COLOR,Lime);
   ObjectSet("chf",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("chfp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }

void paintCAD(double value)
  {
   if (value > 0) ObjectSet("cad_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("cad_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("cad_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("cad_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("cad_1",OBJPROP_COLOR,Lime);
   ObjectSet("cad",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("cadp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }

void paintAUD(double value)
  {
   if (value > 0) ObjectSet("aud_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("aud_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("aud_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("aud_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("aud_1",OBJPROP_COLOR,Lime);
   ObjectSet("aud",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("audp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }

void paintJPY(double value)
  {
   if (value > 0) ObjectSet("jpy_5",OBJPROP_COLOR,Red);
   if (value > 2) ObjectSet("jpy_4",OBJPROP_COLOR,Orange);
   if (value > 4) ObjectSet("jpy_3",OBJPROP_COLOR,Gold);   
   if (value > 6) ObjectSet("jpy_2",OBJPROP_COLOR,YellowGreen);
   if (value > 7) ObjectSet("jpy_1",OBJPROP_COLOR,Lime);
   ObjectSet("jpy",OBJPROP_COLOR,SkyBlue);
   ObjectSetText("jpyp",DoubleToStr(value,1),8,"Arial Narrow",Silver);
  }
  
void paintLine()
  {
   ObjectSet("line1",OBJPROP_COLOR,DimGray);
   ObjectSet("line2",OBJPROP_COLOR,DimGray);
  }
*/  





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar

Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy

Other Features:

It issuies visual alerts to the screen

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for !xMeter_EURvsUSD


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: