Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Speed_MA_V2
//+------------------------------------------------------------------+
//| Speed_MA_V2/2.mq4 |
//|×òî íîâîãî: |
//| V2/2 îò 12.03.2010 äîáàâëåíî: |
//| - íàñòðîéêà ïåðèîäà óñðåäíåíèÿ ñóììû, îòîáðàæàåòñÿ |
//| äîïîëíèòåëüíîé ëèíèåé |
//| V2/1 îò 11.03.2010 äîáàâëåíî: |
//| - âîçìîæíîñòü îòêëþ÷åíèÿ âèçóàëèçàöèè ëèíèé |
//| V2 îò 09.03.2010 äîáàâëåíî: |
//| - íàñòðîéêà ìåòîäà óñðåäíåíèÿ ÌÀ è òî÷êè áàðà äëÿ ðàñ÷¸òà, |
//| - îòîáðàæåíèå çíà÷åíèé ñêîðîñòåé â îêíå èíäèêàòîðà. |
//| - âîçìîæíîñòü ïîçèöèîíèðîâàíèÿ îòîáðàæàåìîé èíôîðìàöèè ïî îñè X.|
//| - îïðåäåëÿòü ó÷àñòîê ïîèñêà ìàêñèìàëüíîãî çíà÷åíèÿ |
//| valenok2003@mail.ru |
//| ICQ 365919666 |
//| Ïèøó íà çàêàç, öåíà äîãîâîðíàÿ.|
//| http://www.mebel-for-you.com |
//+------------------------------------------------------------------+
//Îïðåäåëÿåò ñêîðîñòè MA â ïðîöåíòàõ Âû÷èñëÿåò èõ ñóììàðíîå çíà÷åíèå.
//Çà 100% ïðèíèìàåòñÿ ìàêñèìàëüíîå èçìåíåíèå MA ìåæäó äâóìÿ ñîñåäíèìè áàðàìè
//íàéäåííîå íà ó÷àñòêå ãðàôèêà äëèííîé â 500 áàð.
#property copyright "valenok2003@mail.ru"
#property link "http://www.mebel-for-you.com"
#property indicator_separate_window
//#property indicator_minimum -150
//#property indicator_maximum 150
#property indicator_buffers 6 // Êîëè÷åñòâî áóôåðîâ
#property indicator_color1 Red
#property indicator_color2 Gray
#property indicator_color3 Yellow
#property indicator_color4 LimeGreen
#property indicator_color5 DodgerBlue
#property indicator_color6 Gray
extern int Period_MA5 = 5;
extern int Period_MA15 = 15;
extern int Period_MA60 = 60;
extern string MA_method = "SMA";
extern string MA_price = "CLOSE";
extern int Period_Average = 5;
extern int tf = 0;
extern string Rem_0 = "-ïåðèîä óñðåäíåíèÿ ñóììû-";
extern string Rem_1 = "-âèäèìîñòü êðèâûõ-";
extern bool Viz_05 = true;
extern bool Viz_15 = true;
extern bool Viz_60 = true;
extern bool Viz_Sum = true;
extern bool Viz_Average = true;
extern string Rem_2 = "Ó÷àñòîê ïîèñêà ìàêñèìóìà (áàð)";
extern int search_Max = 500;
extern string Rem_3 = "--Ñìåù. òåêñòà ïî îñè Õ--";
extern int shift_txt = 920;
int method;
int price;
// öâåò íàçâàíèÿ äîëæåí ñîîòâåòñòâîâàòü öâåòó êðèâîé
extern color Color_Txt_Comment = Gray,
Color_Txt_MA5 = Yellow,
Color_Txt_MA15 = LimeGreen,
Color_Txt_MA60 = DodgerBlue,
Color_Txt_Sum = Gray,
Color_Txt_Average = Red,
Color_Txt_UP = Lime,
Color_Txt_DOWN = Red;
color color_txt;
//---- buffers
double Sum_Average[],
Sum_Speed[],
Speed_MA5[],
Speed_MA15[],
Speed_MA60[],
Nul_Line[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- name for indicator window
string name_window="Speed_MA_V2";
IndicatorShortName(name_window);
//---- indicators - ïðåäóñìîòðåíà âîçìîæíîñòü îòêëþ÷åíèÿ ëèíèé
if(Viz_Average == true) SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); else SetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(0,Sum_Average);
if(Viz_Sum == true) SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); else SetIndexStyle(1,DRAW_NONE);
SetIndexBuffer(1,Sum_Speed);
if(Viz_05 == true) SetIndexStyle(2,DRAW_LINE); else SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,Speed_MA5);
if(Viz_15 == true) SetIndexStyle(3,DRAW_LINE); else SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3,Speed_MA15);
if(Viz_60 == true) SetIndexStyle(4,DRAW_LINE); else SetIndexStyle(4,DRAW_NONE);
SetIndexBuffer(4,Speed_MA60);
SetIndexStyle(5,DRAW_LINE);
SetIndexBuffer(5,Nul_Line);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int X;
int met = 0;
if(MA_method == "SMA") { method = MODE_SMA; met = 1;}
if(MA_method == "EMA") { method = MODE_EMA; met = 1;}
if(MA_method == "SMMA"){ method = MODE_SMMA; met = 1;}
if(MA_method == "LWMA"){ method = MODE_LWMA; met = 1;}
if(met == 0)
{
Alert("Ñîîáùåíèå îò èíäèêàòîðà 00_Speed_MA:",
"\nÇíà÷åíèå ", MA_method," îøèáî÷íî. Óñòàíîâëåíî çíà÷åíèå ïî óìîë÷àíèþ - SMA",
"\nÂåðíûå çíà÷åíèÿ - SMA, EMA, SMMA, LWMA" );
method = MODE_SMA; MA_method = "SMA";
}
int prc = 0;
if(MA_price == "CLOSE"){ price = PRICE_CLOSE; prc = 1;}
if(MA_price == "OPEN") { price = PRICE_OPEN; prc = 1;}
if(MA_price == "HIGH") { price = PRICE_HIGH; prc = 1;}
if(MA_price == "LOW") { price = PRICE_LOW; prc = 1;}
if(MA_price == "MED") { price = PRICE_MEDIAN; prc = 1;}
if(MA_price == "TYP") { price = PRICE_TYPICAL; prc = 1;}
if(MA_price == "WEI") { price = PRICE_WEIGHTED; prc = 1;}
if(prc == 0)
{
Alert("Ñîîáùåíèå îò èíäèêàòîðà 00_Speed_MA:",
"\nÇíà÷åíèå ", MA_price," îøèáî÷íî. Óñòàíîâëåíî çíà÷åíèå ïî óìîë÷àíèþ - CLOSE",
"\nÂåðíûå çíà÷åíèÿ - CLOSE, OPEN, HIGH, LOW, MED, TYP,WEI");
price = PRICE_CLOSE; MA_price = "CLOSE";
}
//- ÈÙÅÌ ÌÀÊÑÈÌÀËÜÍÎÅ ÈÇÌÅÍÅÍÈÅ _Ì_À ÇÀ 1 ÁÀÐ ------------------------
//--- (ïðèíèìàåì ýòî çíà÷åíèå çà 100 ïðîöåíòîâ)-----------------------
int i;
double MA_0,
MA_1,
Dif_MA5 = 0,
Max_MA5 = 0,
Dif_MA15 = 0,
Max_MA15 = 0,
Dif_MA60 = 0,
Max_MA60 = 0;
i = 0;
while(i < search_Max)
{
// Äëÿ MA5
MA_0 = iMA(NULL,tf,Period_MA5,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA5,0,method,price,i+1);
Dif_MA5 = MA_0 - MA_1;
if(Max_MA5 < Dif_MA5) Max_MA5 = Dif_MA5;
// Äëÿ MA15
MA_0 = iMA(NULL,tf,Period_MA15,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA15,0,method,price,i+1);
Dif_MA15 = MA_0 - MA_1;
if(Max_MA15 < Dif_MA15) Max_MA15 = Dif_MA15;
// Äëÿ MA60
MA_0 = iMA(NULL,tf,Period_MA60,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA60,0,method,price,i+1);
Dif_MA60 = MA_0 - MA_1;
if(Max_MA60 < Dif_MA60) Max_MA60 = Dif_MA60;
i++; // Ðàñ÷¸ò èíäåêñà ñëåäóþùåãî áàðà
}
//--------------------------------------------------------------------
//-------------ñòðîèì êðèâûå èçìåíåíèÿ ñêîðîñòè ÌÀ â ïðîöåíòàõ--------
int Counted_bars=IndicatorCounted(); // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ
i=Bars-Counted_bars-1; // Èíäåêñ ïåðâîãî íåïîñ÷èòàííîãî
while(i>=0)
{
// Äëÿ MA5
MA_0 = iMA(NULL,tf,Period_MA5,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA5,0,method,price,i+1);
Speed_MA5[i] = ((MA_0 - MA_1)/(0.01*Max_MA5));
//Äëÿ MA15
MA_0 = iMA(NULL,tf,Period_MA15,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA15,0,method,price,i+1);
Speed_MA15[i] = ((MA_0 - MA_1)/(0.01*Max_MA15));
//Äëÿ MA60
MA_0 = iMA(NULL,tf,Period_MA60,0,method,price,i);
MA_1 = iMA(NULL,tf,Period_MA60,0,method,price,i+1);
Speed_MA60[i] = ((MA_0 - MA_1)/(0.01*Max_MA60));
// Äëÿ ñóììû áûñòðîé è ìåäëåííîé ÌÀ
Sum_Speed[i] = (Speed_MA5[i] + Speed_MA15[i] + Speed_MA60[i])/3;
// óñðåäíÿåì ñóììó
double Tmp_Sum = 0;
for(int n=0; n < Period_Average; n++)
{
Tmp_Sum = Tmp_Sum + Sum_Speed[i+n];
}
Sum_Average[i] = Tmp_Sum/Period_Average;
// Íóëåâàÿ ëèíèÿ
Nul_Line[i] = 0;
i--; // Ðàñ÷¸ò èíäåêñà ñëåäóþùåãî áàðà
}
color_txt = Color_Txt_Comment;
ObjectCreate("Label", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Label",MA_method+" "+MA_price,7, "Verdana", color_txt);
ObjectSet("Label", OBJPROP_CORNER, 0);
ObjectSet("Label", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Label", OBJPROP_YDISTANCE, 5);
color_txt = Color_Txt_MA5;
ObjectCreate("Speed_MA5", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA5","MA"+Period_MA5,7, "Verdana", color_txt);
ObjectSet("Speed_MA5", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA5", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA5", OBJPROP_YDISTANCE, 20);
if(Speed_MA5[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA5[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA5_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA5_value"," = "+DoubleToStr(Speed_MA5[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA5_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA5_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA5_value", OBJPROP_YDISTANCE, 20);
color_txt = Color_Txt_MA15;
ObjectCreate("Speed_MA15", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA15","MA"+Period_MA15,7, "Verdana", color_txt);
ObjectSet("Speed_MA15", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA15", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA15", OBJPROP_YDISTANCE, 35);
if(Speed_MA15[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA15[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA15_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA15_value"," = "+DoubleToStr(Speed_MA15[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA15_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA15_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA15_value", OBJPROP_YDISTANCE, 35);
color_txt = Color_Txt_MA60;
ObjectCreate("Speed_MA60", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA60","MA"+Period_MA60,7, "Verdana", color_txt);
ObjectSet("Speed_MA60", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA60", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA60", OBJPROP_YDISTANCE, 50);
if(Speed_MA60[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA60[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA60_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Speed_MA60_value"," = "+DoubleToStr(Speed_MA60[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA60_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA60_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA60_value", OBJPROP_YDISTANCE, 50);
color_txt = Color_Txt_Sum; // öâåò íàçâàíèÿ ñîîòâåòñòâóåò öâåòó êðèâîé
ObjectCreate("Sum_Speed", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Sum_Speed","Sum",7, "Verdana", color_txt);
ObjectSet("Sum_Speed", OBJPROP_CORNER, 0);
ObjectSet("Sum_Speed", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Sum_Speed", OBJPROP_YDISTANCE, 65);
if(Sum_Speed[0]>0)color_txt = Color_Txt_UP;
if(Sum_Speed[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Sum_Speed_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Sum_Speed_value"," = "+DoubleToStr(Sum_Speed[0],2),7, "Verdana", color_txt);
ObjectSet("Sum_Speed_value", OBJPROP_CORNER, 0);
ObjectSet("Sum_Speed_value", OBJPROP_XDISTANCE, X);
ObjectSet("Sum_Speed_value", OBJPROP_YDISTANCE, 65);
color_txt = Color_Txt_Average; // öâåò íàçâàíèÿ ñîîòâåòñòâóåò öâåòó êðèâîé
ObjectCreate("Sum_Average", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Sum_Average","Sum_Average",7, "Verdana", color_txt);
ObjectSet("Sum_Average", OBJPROP_CORNER, 0);
ObjectSet("Sum_Average", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Sum_Average", OBJPROP_YDISTANCE, 80);
if(Sum_Average[0]>0)color_txt = Color_Txt_UP;
if(Sum_Average[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 20;
ObjectCreate("Sum_Average_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Sum_Average_value",DoubleToStr(Sum_Average[0],2),7, "Verdana", color_txt);
ObjectSet("Sum_Average_value", OBJPROP_CORNER, 0);
ObjectSet("Sum_Average_value", OBJPROP_XDISTANCE, X);
ObjectSet("Sum_Average_value", OBJPROP_YDISTANCE, 95);
color_txt = Color_Txt_Comment;
ObjectCreate("Period_Average", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Period_Average","Period_Average",7, "Verdana", color_txt);
ObjectSet("Period_Average", OBJPROP_CORNER, 0);
ObjectSet("Period_Average", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Period_Average", OBJPROP_YDISTANCE, 110);
X = shift_txt + 40;
ObjectCreate("Period_Average_value", OBJ_LABEL, WindowFind("Speed_MA_V2"), 0, 0);
ObjectSetText("Period_Average_value",DoubleToStr(Period_Average,0),7, "Verdana", color_txt);
ObjectSet("Period_Average_value", OBJPROP_CORNER, 0);
ObjectSet("Period_Average_value", OBJPROP_XDISTANCE, X);
ObjectSet("Period_Average_value", OBJPROP_YDISTANCE, 125);
//----
return(0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---