Author: V.Temchenko Skype:vasily.temchenko
Price Data Components
Series array that contains open prices of each bar
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
USDindex
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2018, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "V.Temchenko Skype:vasily.temchenko"
#property link      "Mailto:tvp.prog.96@gmail.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 clrOrange
#property indicator_color2 clrLime

//=================================
input int  maPeriod        =12;
input string Symbol_1      ="EURUSD";
input double Weight_1      =0.576;
input string Symbol_2      ="USDJPY";
input double Weight_2      =0.136;
input string Symbol_3      ="GBPUSD";
input double Weight_3      =0.119;
input string Symbol_4      ="USDCAD";
input double Weight_4      =0.091;
input string Symbol_5      ="USDSEK";
input double Weight_5      =0.042;
input string Symbol_6      ="USDCHF";
input double Weight_6      =0.036;
input string s="=======================";
input string Symbol_7      ="";
input double Weight_7      =0.001;
input string Symbol_8      ="";
input double Weight_8      =0.001;
input string Symbol_9      ="";
input double Weight_9      =0.001;
input string Symbol_10     ="";
input double Weight_10     =0.001;
input string Symbol_11     ="";
input double Weight_11     =0.001;
input string Symbol_12     ="";
input double Weight_12     =0.001;

//-----------------------------
double Buffer1[];
double Buffer2[];
//-----------
double w1=Weight_1,w2=Weight_2,w3=Weight_3,w4=Weight_4,w5=Weight_5,w6=Weight_6, w7=Weight_7,w8=Weight_8,w9=Weight_9,w10=Weight_10,w11=Weight_11,w12=Weight_12;
double price_1,price_2,price_3,price_4,price_5,price_6, price_7,price_8,price_9,price_10,price_11,price_12;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(2);
   SetIndexBuffer(0,Buffer1);
   SetIndexStyle(0,DRAW_HISTOGRAM,0,1);
   SetIndexBuffer(1,Buffer2);
   SetIndexStyle(1,DRAW_LINE,0,1);
   /*
    double p;
    p=MarketInfo(Symbol_1,MODE_POINT); p=MarketInfo(Symbol_2,MODE_POINT); p=MarketInfo(Symbol_3,MODE_POINT); USDCZK
    p=MarketInfo(Symbol_4,MODE_POINT); p=MarketInfo(Symbol_5,MODE_POINT); p=MarketInfo(Symbol_6,MODE_POINT);
    p=MarketInfo(Symbol_7,MODE_POINT); p=MarketInfo(Symbol_8,MODE_POINT); p=MarketInfo(Symbol_9,MODE_POINT);
    p=MarketInfo(Symbol_10,MODE_POINT); p=MarketInfo(Symbol_11,MODE_POINT); p=MarketInfo(Symbol_12,MODE_POINT);
   */
   if(Symbol_1 !="")
      if(iOpen(Symbol_1,0,1)<=0)
         Print("Error: "+Symbol_1+" - incorrect symbols name or symbol unavailable");
   if(Symbol_2 !="")
      if(iOpen(Symbol_2,0,1)<=0)
         Print("Error: "+Symbol_2+" - incorrect symbols name or symbol unavailable");
   if(Symbol_3 !="")
      if(iOpen(Symbol_3,0,1)<=0)
         Print("Error: "+Symbol_3+" - incorrect symbols name or symbol unavailable");
   if(Symbol_4 !="")
      if(iOpen(Symbol_4,0,1)<=0)
         Print("Error: "+Symbol_4+" - incorrect symbols name or symbol unavailable");
   if(Symbol_5 !="")
      if(iOpen(Symbol_5,0,1)<=0)
         Print("Error: "+Symbol_5+" - incorrect symbols name or symbol unavailable");
   if(Symbol_6 !="")
      if(iOpen(Symbol_6,0,1)<=0)
         Print("Error: "+Symbol_6+" - incorrect symbols name or symbol unavailable");

   if(Symbol_7  !="")
      if(iOpen(Symbol_7,0,1)<=0)
         Print("Error: "+Symbol_7+" - incorrect symbols name or symbol unavailable");
   if(Symbol_8  !="")
      if(iOpen(Symbol_8,0,1)<=0)
         Print("Error: "+Symbol_8+" - incorrect symbols name or symbol unavailable");
   if(Symbol_9  !="")
      if(iOpen(Symbol_9,0,1)<=0)
         Print("Error: "+Symbol_9+" - incorrect symbols name or symbol unavailable");
   if(Symbol_10 !="")
      if(iOpen(Symbol_10,0,1)<=0)
         Print("Error: "+Symbol_10+" - incorrect symbols name or symbol unavailable");
   if(Symbol_11 !="")
      if(iOpen(Symbol_11,0,1)<=0)
         Print("Error: "+Symbol_11+" - incorrect symbols name or symbol unavailable");
   if(Symbol_12 !="")
      if(iOpen(Symbol_12,0,1)<=0)
         Print("Error: "+Symbol_12+" - incorrect symbols name or symbol unavailable");

//---------
   int N;
   N=StringFind(Symbol_1,"USD",0);
   if(N>0)
      w1= -w1;
   N=StringFind(Symbol_2,"USD",0);
   if(N>0)
      w2= -w2;
   N=StringFind(Symbol_3,"USD",0);
   if(N>0)
      w3= -w3;
   N=StringFind(Symbol_4,"USD",0);
   if(N>0)
      w4= -w4;
   N=StringFind(Symbol_5,"USD",0);
   if(N>0)
      w5= -w5;
   N=StringFind(Symbol_6,"USD",0);
   if(N>0)
      w6= -w6;

   N=StringFind(Symbol_7,"USD",0);
   if(N>0)
      w7= -w7;
   N=StringFind(Symbol_8,"USD",0);
   if(N>0)
      w8= -w8;
   N=StringFind(Symbol_9,"USD",0);
   if(N>0)
      w9= -w9;
   N=StringFind(Symbol_10,"USD",0);
   if(N>0)
      w10= -w10;
   N=StringFind(Symbol_11,"USD",0);
   if(N>0)
      w11= -w11;
   N=StringFind(Symbol_12,"USD",0);
   if(N>0)
      w12= -w12;

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<maPeriod-1 || maPeriod<2)
      return(0);
   if(prev_calculated==0)
     {
      ArrayInitialize(Buffer1,0);
      ArrayInitialize(Buffer2,0);
     } //--


   int counted_bars = IndicatorCounted();

   int i=0,  limit=0;
   if(prev_calculated==0)
      limit=Bars-1;
   if(prev_calculated> 0)
      limit=prev_calculated-1; // limit=Bars-counted_bars;
//---------------

   for(i = limit; i >= 0; i--)
     {
      if(Symbol_1 !="")
         price_1=iOpen(Symbol_1,0,i);
      if(Symbol_2 !="")
         price_2=iOpen(Symbol_2,0,i);
      if(Symbol_3 !="")
         price_3=iOpen(Symbol_3,0,i);
      if(Symbol_4 !="")
         price_4=iOpen(Symbol_4,0,i);
      if(Symbol_5 !="")
         price_5=iOpen(Symbol_5,0,i);
      if(Symbol_6 !="")
         price_6=iOpen(Symbol_6,0,i);

      if(Symbol_7  !="")
         price_1=iOpen(Symbol_7,0,i);
      if(Symbol_8  !="")
         price_2=iOpen(Symbol_8,0,i);
      if(Symbol_9  !="")
         price_3=iOpen(Symbol_9,0,i);
      if(Symbol_10 !="")
         price_4=iOpen(Symbol_10,0,i);
      if(Symbol_11 !="")
         price_5=iOpen(Symbol_11,0,i);
      if(Symbol_12 !="")
         price_6=iOpen(Symbol_12,0,i);
      //-----------    w1=1;
      if(price_1 <= 0)
         price_1=1;
      if(price_2 <= 0)
         price_2=1;
      if(price_3 <= 0)
         price_3=1;
      if(price_4 <= 0)
         price_4=1;
      if(price_5 <= 0)
         price_5=1;
      if(price_6 <= 0)
         price_6=1;

      if(price_7 <= 0)
         price_7=1;
      if(price_8 <= 0)
         price_8=1;
      if(price_9 <= 0)
         price_9=1;
      if(price_10 <= 0)
         price_10=1;
      if(price_11 <= 0)
         price_11=1;
      if(price_12 <= 0)
         price_12=1;
      //-----------
      double USDx=50.14348112 *
                  MathPow(price_1, w1) *
                  MathPow(price_2, w2) *
                  MathPow(price_3, w3) *
                  MathPow(price_4, w4) *
                  MathPow(price_5, w5) *
                  MathPow(price_6, w6) *

                  MathPow(price_7,  w7) *
                  MathPow(price_8,  w8) *
                  MathPow(price_9,  w9) *
                  MathPow(price_10, w10)*
                  MathPow(price_11, w11)*
                  MathPow(price_12, w12);

      Buffer1[i] = USDx;
     } //-- for

   for(i = limit; i >= 0; i--)
     {
      double r = iMAOnArray(Buffer1,0,maPeriod,0,MODE_SMA,i) ;
      Buffer2[i]=r;
     } //--

//--- return value of prev_calculated for next call
   return(rates_total);
  } //-- OnCalculate
//+------------------------------------------------------------------+

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 ---