Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Cross_v2
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_level1 1
#property indicator_color1 White
#property indicator_color2 Red
#property indicator_color3 Teal
#property indicator_color4 Yellow
#property indicator_color5 Blue
#property indicator_color6 Gold
#property indicator_color7 Lime
#property indicator_color8 Green
extern int       per=24;
extern int      calc=48;
extern int     cross=1;
double aud[];
double cad[];
double chf[];
double eur[];
double gbp[];
double jpy[];
double nzd[];
double usd[];
static string sy[28]=
  {
   "AUDCAD","AUDCHF","EURAUD","GBPAUD","AUDJPY","AUDNZD","AUDUSD",
   "CADCHF","EURCAD","GBPCAD","CADJPY","NZDCAD","USDCAD","EURCHF",
   "GBPCHF","CHFJPY","NZDCHF","USDCHF","EURGBP","EURJPY","EURNZD",
   "EURUSD","GBPJPY","GBPNZD","GBPUSD","NZDJPY","USDJPY","NZDUSD"
  };
double Ma[][28];
double Cross[][8];
bool warning=false;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(8);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,aud);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,cad);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,chf);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,eur);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,gbp);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,jpy);
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,nzd);
   SetIndexStyle(7,DRAW_LINE);
   SetIndexBuffer(7,usd);
   SetIndexLabel(0,"AUD");
   SetIndexLabel(1,"CAD");
   SetIndexLabel(2,"CHF");
   SetIndexLabel(3,"EUR");
   SetIndexLabel(4,"GBP");
   SetIndexLabel(5,"JPY");
   SetIndexLabel(6,"NZD");
   SetIndexLabel(7,"USD");
   IndicatorShortName("Index("+(string)per+","+(string)calc+","+(string)cross+")");
   int    element_count1=ArrayResize(Ma, MathMax(calc+1,cross+1));
   int    element_count2=ArrayResize(Cross, MathMax(calc+1,cross+1));
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   for(int i=0; i<MathMax(calc+1,cross+1); i++)
      for(int j=0;j<28;j++)
        {
         Ma[i][j]=iMA(sy[j],0,per,0,3,1,i);
         if(Ma[i][j]==0)
           {
            Print("Zero value for iMA(",sy[j],"). Check in Market Watch. Calculation stopped.");
            if(!warning)
              {
               Alert("Zero value for iMA(",sy[j],"). Check in Market Watch. Calculation stopped.");
               warning=true;
              }
            return(-1);
           }
         
        }
   for(i=0;i<MathMax(calc+1,cross+1);i++)
     {
      //Print("Ma[i][2]=",Ma[i][2]);
      //Print("Ma[i][3]=",Ma[i][3]);
      Cross[i][0]=Ma[i][0]*Ma[i][1]*(Ma[i][4]/100)*Ma[i][5]*Ma[i][6]/(Ma[i][2]*Ma[i][3]);
      Cross[i][1]=Ma[i][7]*(Ma[i][10]/100)/(Ma[i][0]*Ma[i][8]*Ma[i][9]*Ma[i][11]*Ma[i][12]);
      Cross[i][2]=(Ma[i][15]/100)/(Ma[i][1]*Ma[i][7]*Ma[i][13]*Ma[i][14]*Ma[i][16]*Ma[i][17]);
      Cross[i][3]=Ma[i][2]*Ma[i][8]*Ma[i][13]*Ma[i][18]*(Ma[i][19]/100)*Ma[i][20]*Ma[i][21];
      Cross[i][4]=Ma[i][3]*Ma[i][9]*Ma[i][14]*(Ma[i][22]/100)*Ma[i][23]*Ma[i][24]/Ma[i][18];
      Cross[i][5]=(100/Ma[i][4])*(100/Ma[i][10])*(100/Ma[i][15])*(100/Ma[i][19])*(100/Ma[i][22])*(100/Ma[i][25])*(100/Ma[i][26]);
      Cross[i][6]=Ma[i][11]*Ma[i][16]*(Ma[i][25]/100)*Ma[i][27]/(Ma[i][5]*Ma[i][20]*Ma[i][23]);
      Cross[i][7]=Ma[i][12]*Ma[i][17]*(Ma[i][26]/100)/(Ma[i][6]*Ma[i][21]*Ma[i][24]*Ma[i][27]);
     }
   for(i=0;i<calc;i++)
     {
      aud[i]=Cross[i][0]/Cross[cross][0];
      cad[i]=Cross[i][1]/Cross[cross][1];
      chf[i]=Cross[i][2]/Cross[cross][2];
      eur[i]=Cross[i][3]/Cross[cross][3];
      gbp[i]=Cross[i][4]/Cross[cross][4];
      jpy[i]=Cross[i][5]/Cross[cross][5];
      nzd[i]=Cross[i][6]/Cross[cross][6];
      usd[i]=Cross[i][7]/Cross[cross][7];
     }
   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---