Predictive_Price_FPI





//+------------------------------------------------------------------+
//|                                              Price Predictor.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"



string pairs[14][3]={
"EURJPY","EURAUD","AUDJPY",//1 d
"EURJPY","EURCHF","CHFJPY",//6 h, inv
"EURJPY","EURGBP","GBPJPY",//12 inv
"EURJPY","EURUSD","USDJPY",//14
"AUDJPY","AUDUSD","USDJPY",//2 d
"EURUSD","EURAUD","AUDUSD",//3 d
"EURUSD","EURGBP","GBPUSD",//13
"USDJPY","USDCHF","CHFJPY",//8 
"GBPJPY","GBPCHF","CHFJPY",//7 inv
"GBPJPY","GBPUSD","USDJPY",//14
"EURCAD","EURUSD","USDCAD",//9 inv
"EURCHF","EURGBP","GBPCHF",//10 inv
"EURCHF","EURUSD","USDCHF",//11 inv
"GBPCHF","GBPUSD","USDCHF",//15
};

int itn;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   start();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(true){
      RefreshRates();
      main();
      itn++;
      Sleep(100);
   }
//----
   return(0);
  }
  
  
//+------------------------------------------------------------------+

void main(){
   color col[]={Yellow,Orange,Pink,YellowGreen,Purple,Red};
   int match[];int c;
   for(int i=0;i<14;i++){
      for(int y=0;y<3;y++){
         if(pairs[i][y]==Symbol()){
            c++;
            ArrayResize(match,c);
            match[c-1]=i;
         }
      }
   }
   c=0;
   
   int size=ArraySize(match);
   /*for(i=0;i<size;i++){
      Comment("ring found ",match[i],"\n\n",
      pairs[match[i]][0],"  ",
      pairs[match[i]][1],"  ",
      pairs[match[i]][2],"  ");
      Sleep(2000);
   }
      */
   Comment("\nMatches = ",size,"\nIterations = ",itn);
   for(i=0;i<size;i++){
      double level=0;
      double pr1=(MarketInfo(pairs[match[i]][0],MODE_BID) + MarketInfo(pairs[match[i]][0],MODE_ASK)) / 2;
      double pr2=(MarketInfo(pairs[match[i]][1],MODE_BID) + MarketInfo(pairs[match[i]][1],MODE_ASK)) / 2;
      double pr3=(MarketInfo(pairs[match[i]][2],MODE_BID) + MarketInfo(pairs[match[i]][2],MODE_ASK)) / 2;
      pr1=1/pr1;
      for(y=0;y<3;y++){
         if(Symbol()==pairs[match[i]][y]){
            c++;
            if(y==0){
            level=1/(pr2*pr3);
            level=1/level;
            break;
            }
            if(y==1){
            level=1/(pr1*pr3);
            break;
            }
            if(y==2){
            level=1/(pr1*pr2);
            break;
            }
         }
      }
      //level=NormalizeDouble(level,Digits);
      //level+=i*Point;
      string name=Symbol()+DoubleToStr(i,0);
      drawLine(level,name,col[i],1);
   }
}
      
      
      
void drawLine(double lvl,string name, color Col,int type){
   if(ObjectFind(name) != 0){
      ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl);
      if(type == 1)
         ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
      else
         ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
      ObjectSet(name, OBJPROP_COLOR, Col);
      ObjectSet(name,OBJPROP_WIDTH,1);
   }else{
      ObjectDelete(name);
      ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl);
      if(type == 1)
         ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
      else
         ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
      ObjectSet(name, OBJPROP_COLOR, Col);        
      ObjectSet(name,OBJPROP_WIDTH,1);
   }
}
      
         



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: