vr---multi-timeframe-ma

Author: Copyright 2013, www.trading-go.ru Project.
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
vr---multi-timeframe-ma
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"
#property description "Èíäèêàòîð îòîáðàæàåò ïîëîæåíèå òåêóùåé öåíû îòíîñèòåëüíî ìóâèíãîâ ðàçíûõ ïåðèîäîâ"
#property strict
#property indicator_chart_window
input int   Right=0;
input int   Down =0;
input color UP=clrLightBlue;
input color EQ=clrLightGreen;
input color DW=clrLightPink;

input int time_1    =1;
input int             Period_1_1=528;
input int             Period_1_2=1440;
input int             Period_1_3=10080;

input int time_2    =5;
input int             Period_2_1=462;
input int             Period_2_2=1260;
input int             Period_2_3=8820;

input int time_3    =15;
input int             Period_3_1=264;
input int             Period_3_2=720;
input int             Period_3_3=5040;

input int time_4    =30;
input int             Period_4_1=132;
input int             Period_4_2=360;
input int             Period_4_3=2520;

input int time_5    =60;
input int             Period_5_1=66;
input int             Period_5_2=180;
input int             Period_5_3=1260;

input int time_6    =240;
input int             Period_6_1=16;
input int             Period_6_2=45;
input int             Period_6_3=315;

input int time_7    =1440;
input int             Period_7_1=3;
input int             Period_7_2=7;
input int             Period_7_3=52;

input int time_8    =10080;
input int             Period_8_1=3;
input int             Period_8_2=7;
input int             Period_8_3=52;

input int time_9    =43200;
input int             Period_9_1=3;
input int             Period_9_2=7;
input int             Period_9_3=52;
//-------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int m1=-2,m2=-2,m3=-2;string tx1="",tx2="",tx3="";
//+------------------------------------------------------------------+
//|      678                                                         |
//+------------------------------------------------------------------+
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[])
  {
   color col1=clrBlack,col2=clrBlack,col3=clrBlack;
   for(int i=0; i<9; i++)
     {
     
     rez(i,m1,m2,m3,tx1,tx2,tx3);
     
      button("time"+(string)i,Right+3,Down+30+18*i,tim(i),30,15,clrLightGreen);
      
      
      
      if(m1==1)col1=UP;
      if(m1==0)col1=EQ;
      if(m1==-1)col1=DW;

      if(m2==1)col2=UP;
      if(m2==0)col2=EQ;
      if(m2==-1)col2=DW;

      if(m3==1)col3=UP;
      if(m3==0)col3=EQ;
      if(m3==-1)col3=DW;

      button("Metka1"+(string)i,Right+40 ,Down+30+18*i,tx1,40,15,col1);
      button("Metka2"+(string)i,Right+85 ,Down+30+18*i,tx2,40,15,col2);
      button("Metka3"+(string)i,Right+130,Down+30+18*i,tx3,40,15,col3);
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
string tim(int typ)
  {
   string txt="";
   switch(typ)
     {
      case 0: txt="M1";break;
      case 1: txt="M5";break;
      case 2: txt="M15";break;
      case 3: txt="M30";break;
      case 4: txt="H1";break;
      case 5: txt="H4";break;
      case 6: txt="D1";break;
      case 7: txt="W1";break;
      case 8: txt="Mn";break;
     }
   return txt;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool button(string name,int x,int y,string text,int widch,int heigt,color colbg=C'230,230,230',color coltx=C'80,80,80',int cor=0)
  {
   string txt1=StringConcatenate(name);
   if(ObjectFind(txt1)==-1)
     {
      ObjectCreate(0,txt1,OBJ_BUTTON,0,0,0);
      ObjectSetInteger(0,txt1,OBJPROP_STATE,false);
     }
   ObjectSetInteger(0,txt1,OBJPROP_CORNER,cor);
   ObjectSetInteger(0,txt1,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,txt1,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,txt1,OBJPROP_XSIZE,widch);
   ObjectSetInteger(0,txt1,OBJPROP_YSIZE,heigt);
   ObjectSetString(0,txt1,OBJPROP_FONT,"Arial");
   ObjectSetString(0,txt1,OBJPROP_TEXT,text);
   ObjectSetInteger(0,txt1,OBJPROP_COLOR,coltx);
   ObjectSetInteger(0,txt1,OBJPROP_BGCOLOR,colbg);
   ObjectSetInteger(0,txt1,OBJPROP_BORDER_COLOR,C'80,80,80');
   ChartRedraw();
   return true;
  }
//+------------------------------------------------------------------+  
void rez(const int typ,int  &ma1,int  &ma2,int  &ma3, string &txt1,string &txt2,string &txt3)
  {
   int itog=-1;
   double price=(Ask+Bid)/2;
   switch(typ)
     {
      case 0:
         if(price>iMA(_Symbol,time_1,Period_1_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_1,Period_1_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_1,Period_1_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_1,Period_1_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_1,Period_1_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_1,Period_1_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_1,Period_1_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_1,Period_1_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_1,Period_1_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_1_1;
         txt2=(string)Period_1_2;
         txt3=(string)Period_1_3;
         break;
      case 1:
         if(price>iMA(_Symbol,time_2,Period_2_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_2,Period_2_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_2,Period_2_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_2,Period_2_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_2,Period_2_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_2,Period_2_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_2,Period_2_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_2,Period_2_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_2,Period_2_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_2_1;
         txt2=(string)Period_2_2;
         txt3=(string)Period_2_3;
         break;
      case 2:
         if(price>iMA(_Symbol,time_3,Period_3_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_3,Period_3_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_3,Period_3_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_3,Period_3_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_3,Period_3_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_3,Period_3_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_3,Period_3_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_3,Period_3_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_3,Period_3_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_3_1;
         txt2=(string)Period_3_2;
         txt3=(string)Period_3_3;
         break;
      case 3:
         if(price>iMA(_Symbol,time_4,Period_4_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_4,Period_4_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_4,Period_4_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_4,Period_4_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_4,Period_4_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_4,Period_4_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_4,Period_4_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_4,Period_4_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_4,Period_4_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_4_1;
         txt2=(string)Period_4_2;
         txt3=(string)Period_4_3;;
         break;
      case 4:
         if(price>iMA(_Symbol,time_5,Period_5_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_5,Period_5_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_5,Period_5_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_5,Period_5_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_5,Period_5_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_5,Period_5_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_5,Period_5_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_5,Period_5_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_5,Period_5_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_5_1;
         txt2=(string)Period_5_2;
         txt3=(string)Period_5_3;         
         break;
      case 5:
         if(price>iMA(_Symbol,time_6,Period_6_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_6,Period_6_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_6,Period_6_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_6,Period_6_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_6,Period_6_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_6,Period_6_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_6,Period_6_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_6,Period_6_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_6,Period_6_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_6_1;
         txt2=(string)Period_6_2;
         txt3=(string)Period_6_3;         
         break;
      case 6:
         if(price>iMA(_Symbol,time_7,Period_7_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_7,Period_7_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_7,Period_7_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_7,Period_7_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_7,Period_7_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_7,Period_7_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_7,Period_7_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_7,Period_7_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_7,Period_7_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_7_1;
         txt2=(string)Period_7_2;
         txt3=(string)Period_7_3;         
         break;
      case 7:
         if(price>iMA(_Symbol,time_8,Period_8_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_8,Period_8_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_8,Period_8_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_8,Period_8_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_8,Period_8_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_8,Period_8_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_8,Period_8_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_8,Period_8_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_8,Period_8_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_8_1;
         txt2=(string)Period_8_2;
         txt3=(string)Period_8_3;         
         break;
      case 8:
         if(price>iMA(_Symbol,time_9,Period_9_1,0,1,0,0))ma1=1;
         if(price==iMA(_Symbol,time_9,Period_9_1,0,1,0,0))ma1=0;
         if(price<iMA(_Symbol,time_9,Period_9_1,0,1,0,0))ma1=-1;

         if(price>iMA(_Symbol,time_9,Period_9_2,0,1,0,0))ma2=1;
         if(price==iMA(_Symbol,time_9,Period_9_2,0,1,0,0))ma2=0;
         if(price<iMA(_Symbol,time_9,Period_9_2,0,1,0,0))ma2=-1;

         if(price>iMA(_Symbol,time_9,Period_9_3,0,1,0,0))ma3=1;
         if(price==iMA(_Symbol,time_9,Period_9_3,0,1,0,0))ma3=0;
         if(price<iMA(_Symbol,time_9,Period_9_3,0,1,0,0))ma3=-1;
         txt1=(string)Period_9_1;
         txt2=(string)Period_9_2;
         txt3=(string)Period_9_3;         
         break;
     }
  }
//+------------------------------------------------------------------+

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