//+------------------------------------------------------------------+ //| 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: