Author: Copyright 2016, cmillion@narod.ru
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
MA_Signal
//+------------------------------------------------------------------+
//|                                                    MA Signal.mq4 |
//|                                Copyright 2016, cmillion@narod.ru |
//|                                               http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, cmillion@narod.ru"
#property link      "http://cmillion.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 5
#property  indicator_color1  clrBlue
#property  indicator_color2  clrAqua
#property  indicator_color3  clrGreen
#property  indicator_color4  clrBlue
#property  indicator_color5  clrRed
#property description "ñòðåëêà ïðè ïåðåñå÷åíèè 2õ ñðåäíèõ, ïðè óñëîâèè ÷òî 3ÿ ñðåäíÿÿ ðàñòåò/ïàäàåò è íàõîäèòñÿ íàä/ïîä ïåðåñåêàþùèìèñÿ ñðåäíèìè."
#property description "ëîíã: 5 ÌÀ ïåðåñåêàåò ñíèçó 20 ÌÀ, à 50 ÌÀ â ïåðèîä ñ ò-1 íà ò âûðîñëà â âåëè÷èíå.  òîæå âðåìÿ 5 ÌÀ è 20 ÌÀ íàõîäÿòñÿ âûøå 50 ÌÀ (ïîêàçàòåëü òðåíäà). "
//+------------------------------------------------------------------+
extern int                 MA_1              = 5;           //ïìðèîä 1 ÌÀ
extern int                 shift_1           = 0;           //Ñäâèã 1 ÌÀ îòíîñèòåëüíî öåíîâîãî ãðàôèêà.
input ENUM_MA_METHOD       method_1          = MODE_SMMA;   //Ìåòîäû ñêîëüçÿùèõ 1 ÌÀ
input ENUM_APPLIED_PRICE   applied_price_1   = PRICE_OPEN;  //Èñïîëüçóåìàÿ öåíà 1 ÌÀ.

extern int                 MA_2              = 20;
extern int                 shift_2           = 0;           //Ñäâèã 2 ÌÀ îòíîñèòåëüíî öåíîâîãî ãðàôèêà.
input ENUM_MA_METHOD       method_2          = MODE_SMMA;   //Ìåòîäû ñêîëüçÿùèõ 2 ÌÀ
input ENUM_APPLIED_PRICE   applied_price_2   = PRICE_OPEN;  //Èñïîëüçóåìàÿ öåíà 2 ÌÀ.

extern int                 MA_3              = 50;
extern int                 shift_3           = 0;           //Ñäâèã 3 ÌÀ îòíîñèòåëüíî öåíîâîãî ãðàôèêà.
input ENUM_MA_METHOD       method_3          = MODE_SMMA;   //Ìåòîäû ñêîëüçÿùèõ 3 ÌÀ
input ENUM_APPLIED_PRICE   applied_price_3   = PRICE_OPEN;  //Èñïîëüçóåìàÿ öåíà 3 ÌÀ.

double     MA1[];
double     MA2[];
double     MA3[];
double     SignalBufferRed[];
double     SignalBufferBlue[];
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexStyle(3,DRAW_ARROW,0,2);
   SetIndexArrow(3,233);
   SetIndexStyle(4,DRAW_ARROW,0,2);
   SetIndexArrow(4,234);

   SetIndexBuffer(0,MA1);
   SetIndexBuffer(1,MA2);
   SetIndexBuffer(2,MA3);
   SetIndexBuffer(3,SignalBufferBlue);
   SetIndexBuffer(4,SignalBufferRed);

   IndicatorShortName(StringConcatenate("MA (",MA_1,",",MA_2,",",MA_3,")"));
   SetIndexLabel(0,"MA_1");
   SetIndexLabel(1,"MA_2");
   SetIndexLabel(2,"MA_3");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
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[])
  {
   int i,limit;

   limit=rates_total-prev_calculated-1;
   if(rates_total<1) return(0);
   for(i=0; i<limit; i++)
   {
      MA1[i]=iMA(NULL,0,MA_1,shift_1,method_1,applied_price_1,i);
      MA2[i]=iMA(NULL,0,MA_2,shift_2,method_2,applied_price_2,i);
      MA3[i]=iMA(NULL,0,MA_3,shift_3,method_3,applied_price_3,i);
   }
   
   for(i=0; i<limit; i++)
   {
      if (MA1[i+1]<MA2[i+1] && MA1[i]>MA2[i] && MA2[i]>MA3[i] && MA3[i]>MA3[i+1]) SignalBufferBlue[i]=open[i];
      if (MA1[i+1]>MA2[i+1] && MA1[i]<MA2[i] && MA2[i]<MA3[i] && MA3[i]<MA3[i+1]) SignalBufferRed[i]=open[i];
   }

   return(rates_total);
  }
//+------------------------------------------------------------------+

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