Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Speed_MA
//+------------------------------------------------------------------+
//| Speed_MA_V3.mq4 |
//|×òî íîâîãî: |
//| V3 îò 15.04.2010 äîáàâëåíî: |
//| - âîçìîæíîñòü îòîáðàæåíèÿ ñóììû â âèäå ãèñòîãðàììû |
//| - ïðîâåðêà çíà÷åíèé ïàðàìåòðîâ ÌÀ ââîäèìûõ ïîëüçîâàòåëåì |
//| V2.2 îò 12.03.2010 äîáàâëåíî: |
//| - íàñòðîéêà ïåðèîäà ñãëàæèâàíèÿ ñóììû (îòîáðàæàåòñÿ êðàñíîé |
//| ëèíèåé) |
//| V2.1 îò 11.03.2010 äîáàâëåíî: |
//| - âîçìîæíîñòü îòêëþ÷åíèÿ âèçóàëèçàöèè ëèíèé |
//| V2 îò 09.03.2010 äîáàâëåíî: |
//| - íàñòðîéêà ìåòîäà óñðåäíåíèÿ ÌÀ è òî÷êè áàðà äëÿ ðàñ÷¸òà, |
//| - îòîáðàæåíèå çíà÷åíèé ñêîðîñòåé â îêíå èíäèêàòîðà. |
//| - âîçìîæíîñòü ïîçèöèîíèðîâàíèÿ îòîáðàæàåìîé èíôîðìàöèè ïî îñè X.|
//| - çàäàíèå ó÷àñòêà äëÿ ïîèñêà ìàêñèìàëüíîãî çíà÷åíèÿ |
//| valenok2003@mail.ru |
//| ICQ 365919666 |
//| Ïèøó íà çàêàç, öåíà äîãîâîðíàÿ.|
//| http://mebel-for-you.com/programs |
//+------------------------------------------------------------------+
//Ðèñóåò ñêîðîñòè òð¸õ, çàäàííûõ ïîëüçîâàòåëåì, MA
//â ïðîöåíòàõ îò ìàêñèìàëüíîãî çíà÷åíèÿ ñêîðîñòè çà íåêîòîðûé ïåðèîä âðåìåíè.
//Ðèñóåò èõ ñóììàðíîå çíà÷åíèå ñ âîçìîæíîñòüþ ñãëàæèâàíèÿ.
//Çà 100% ïðèíèìàåòñÿ ìàêñèìàëüíîå èçìåíåíèå MA ìåæäó äâóìÿ ñîñåäíèìè áàðàìè
//íàéäåííîå íà ó÷àñòêå ãðàôèêà äëèííîé â search_Max, ïî óìîë÷àíèþ 500 áàð.
#property copyright "valenok2003@mail.ru"
#property link "http://mebel-for-you.com/programs"
#property indicator_separate_window
//#property indicator_minimum -120
//#property indicator_maximum 120
#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_MA_fast = 5;
extern int Period_MA_med = 15;
extern int Period_MA_slow = 60;
extern int Period_Average_Sum = 15;
#include <Check_MA_Parametrs.mqh>
extern string Rem_1 = "-âèäèìîñòü êðèâûõ-";
extern bool Show_Average = true;
extern bool Show_Sum = false;
extern bool Show_fast = false;
extern bool Show_med = false;
extern bool Show_slow = false;
extern string Rem_2 = "-ïîêàçàòü êàê ãèñòîãðàììó-";
extern bool Show_Histogram = false;
extern string Rem_3 = "Ó÷àñòîê ïîèñêà ìàêñèìóìà (áàð)";
extern int search_Max = 500;
extern string Rem_4 = "--Ñìåù. òåêñòà ïî îñè Õ--";
extern int shift_txt = 920;
// öâåò íàçâàíèÿ äîëæåí ñîîòâåòñòâîâàòü öâåòó êðèâîé
color Color_Txt_Comment = Gray,
Color_Txt_MA_fast = Yellow,
Color_Txt_MA_med = LimeGreen,
Color_Txt_MA_slow = 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_MA_fast[],
Speed_MA_med[],
Speed_MA_slow[],
Nul_Line[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- name for indicator window
string name_window="Speed_MA";
IndicatorShortName(name_window);
//---- indicators - ïðåäóñìîòðåíà âîçìîæíîñòü îòêëþ÷åíèÿ ëèíèé
if(Show_Average == true)
{
if(Show_Histogram == true) SetIndexStyle(0,DRAW_HISTOGRAM);
else SetIndexStyle(0,DRAW_LINE);
}
else SetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(0,Sum_Average);
if(Show_Sum == true) SetIndexStyle(1,DRAW_LINE); else SetIndexStyle(1,DRAW_NONE);
SetIndexBuffer(1,Sum_Speed);
if(Show_fast == true) SetIndexStyle(2,DRAW_LINE); else SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,Speed_MA_fast);
if(Show_med == true) SetIndexStyle(3,DRAW_LINE); else SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3,Speed_MA_med);
if(Show_slow == true) SetIndexStyle(4,DRAW_LINE); else SetIndexStyle(4,DRAW_NONE);
SetIndexBuffer(4,Speed_MA_slow);
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; // ïåðåìåííàÿ äëÿ çàäàíèÿ ïîçèöèè ïî îñè Õ
//ïðîâåðêà óñëîâèé ïîëüçîâàòåëÿ --------------------------------------
Check_MA_Parametrs("Speed MA");
//--------------------------------------------------------------------
//- ÈÙÅÌ ÌÀÊÑÈÌÀËÜÍÎÅ ÈÇÌÅÍÅÍÈÅ _Ì_À ÇÀ 1 ÁÀÐ ------------------------
//--- (ïðèíèìàåì ýòî çíà÷åíèå çà 100 ïðîöåíòîâ)-----------------------
int i;
double MA_0,
MA_1,
Dif_MA_fast = 0,
Max_MA_fast = 0,
Dif_MA_med = 0,
Max_MA_med = 0,
Dif_MA_slow = 0,
Max_MA_slow = 0;
i = 0;
while(i < search_Max)
{
// Äëÿ MA_fast
MA_0 = iMA(NULL,ma_tf,Period_MA_fast,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_fast,0,ma_method,ma_price,i+1);
Dif_MA_fast = MA_0 - MA_1;
if(Max_MA_fast < Dif_MA_fast) Max_MA_fast = Dif_MA_fast;
// Äëÿ MA_med
MA_0 = iMA(NULL,ma_tf,Period_MA_med,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_med,0,ma_method,ma_price,i+1);
Dif_MA_med = MA_0 - MA_1;
if(Max_MA_med < Dif_MA_med) Max_MA_med = Dif_MA_med;
// Äëÿ MA_slow
MA_0 = iMA(NULL,ma_tf,Period_MA_slow,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_slow,0,ma_method,ma_price,i+1);
Dif_MA_slow = MA_0 - MA_1;
if(Max_MA_slow < Dif_MA_slow) Max_MA_slow = Dif_MA_slow;
i++; // Ðàñ÷¸ò èíäåêñà ñëåäóþùåãî áàðà
}
//--------------------------------------------------------------------
//-------------ñòðîèì êðèâûå èçìåíåíèÿ ñêîðîñòè ÌÀ â ïðîöåíòàõ--------
int Counted_bars=IndicatorCounted(); // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ
i=Bars-Counted_bars; // Èíäåêñ ïåðâîãî íåïîñ÷èòàííîãî
if(Counted_bars==0) i-=Period_Average_Sum+1;
while(i>=0)
{
// Äëÿ MA_fast
MA_0 = iMA(NULL,ma_tf,Period_MA_fast,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_fast,0,ma_method,ma_price,i+1);
Speed_MA_fast[i] = ((MA_0 - MA_1)/(0.01*Max_MA_fast));
//Äëÿ MA_med
MA_0 = iMA(NULL,ma_tf,Period_MA_med,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_med,0,ma_method,ma_price,i+1);
Speed_MA_med[i] = ((MA_0 - MA_1)/(0.01*Max_MA_med));
//Äëÿ MA_slow
MA_0 = iMA(NULL,ma_tf,Period_MA_slow,0,ma_method,ma_price,i);
MA_1 = iMA(NULL,ma_tf,Period_MA_slow,0,ma_method,ma_price,i+1);
Speed_MA_slow[i] = ((MA_0 - MA_1)/(0.01*Max_MA_slow));
// Äëÿ ñóììû áûñòðîé è ìåäëåííîé ÌÀ
Sum_Speed[i] = (Speed_MA_fast[i] + Speed_MA_med[i] + Speed_MA_slow[i])/3;
// óñðåäíÿåì ñóììó
double Tmp_Sum = 0;
for(int n=0; n < Period_Average_Sum; n++)
{
Tmp_Sum = Tmp_Sum + Sum_Speed[i+n];
}
Sum_Average[i] = Tmp_Sum/Period_Average_Sum;
// Íóëåâàÿ ëèíèÿ
Nul_Line[i] = 0;
i--; // Ðàñ÷¸ò èíäåêñà ñëåäóþùåãî áàðà
}
color_txt = Color_Txt_Comment;
ObjectCreate("Label", OBJ_LABEL, WindowFind("Speed_MA"), 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_MA_fast;
ObjectCreate("Speed_MA_fast", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_fast","MA"+(string)Period_MA_fast,7, "Verdana", color_txt);
ObjectSet("Speed_MA_fast", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_fast", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA_fast", OBJPROP_YDISTANCE, 20);
if(Speed_MA_fast[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA_fast[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA_fast_value", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_fast_value"," = "+DoubleToStr(Speed_MA_fast[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA_fast_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_fast_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA_fast_value", OBJPROP_YDISTANCE, 20);
color_txt = Color_Txt_MA_med;
ObjectCreate("Speed_MA_med", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_med","MA"+(string)Period_MA_med,7, "Verdana", color_txt);
ObjectSet("Speed_MA_med", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_med", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA_med", OBJPROP_YDISTANCE, 35);
if(Speed_MA_med[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA_med[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA_med_value", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_med_value"," = "+DoubleToStr(Speed_MA_med[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA_med_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_med_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA_med_value", OBJPROP_YDISTANCE, 35);
color_txt = Color_Txt_MA_slow;
ObjectCreate("Speed_MA_slow", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_slow","MA"+(string)Period_MA_slow,7, "Verdana", color_txt);
ObjectSet("Speed_MA_slow", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_slow", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Speed_MA_slow", OBJPROP_YDISTANCE, 50);
if(Speed_MA_slow[0]>0)color_txt = Color_Txt_UP;
if(Speed_MA_slow[0]<0)color_txt = Color_Txt_DOWN;
X = shift_txt + 30;
ObjectCreate("Speed_MA_slow_value", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Speed_MA_slow_value"," = "+DoubleToStr(Speed_MA_slow[0],2),7, "Verdana", color_txt);
ObjectSet("Speed_MA_slow_value", OBJPROP_CORNER, 0);
ObjectSet("Speed_MA_slow_value", OBJPROP_XDISTANCE, X);
ObjectSet("Speed_MA_slow_value", OBJPROP_YDISTANCE, 50);
color_txt = Color_Txt_Sum; // öâåò íàçâàíèÿ ñîîòâåòñòâóåò öâåòó êðèâîé
ObjectCreate("Sum_Speed", OBJ_LABEL, WindowFind("Speed_MA"), 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"), 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"), 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"), 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_Sum", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Period_Average_Sum","Period_Average",7, "Verdana", color_txt);
ObjectSet("Period_Average_Sum", OBJPROP_CORNER, 0);
ObjectSet("Period_Average_Sum", OBJPROP_XDISTANCE, shift_txt);
ObjectSet("Period_Average_Sum", OBJPROP_YDISTANCE, 110);
X = shift_txt + 40;
ObjectCreate("Period_Average_Sum_value", OBJ_LABEL, WindowFind("Speed_MA"), 0, 0);
ObjectSetText("Period_Average_Sum_value",DoubleToStr(Period_Average_Sum,0),7, "Verdana", color_txt);
ObjectSet("Period_Average_Sum_value", OBJPROP_CORNER, 0);
ObjectSet("Period_Average_Sum_value", OBJPROP_XDISTANCE, X);
ObjectSet("Period_Average_Sum_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
---