0
Views
0
Downloads
0
Favorites
iPriceGrid
//+------------------------------------------------------------------+
//| iPriceGrid.mq4 |
//| Copyright © 2011, komposter |
//| http://www.komposter.me |
//+------------------------------------------------------------------+
#property copyright "çàäóìùèê sever11, à øåô-ïîâàð Copyright © 2010, komposter"
#property link "http://www.komposter.me"
//äëÿ ïîñòðîåíèÿ öåíîâûõ óðîâíåé .
// íåì ðåàëèçîâàë âîçìîæíîñòü îòðèñîâêè 5-òè ðàçëè÷íûõ óðîâíåé. Äëÿ êàæäîãî çàäàåòñÿ ñâîé øàã è ðàññòîÿíèÿ äî âåðõíåãî/íèæíåãî ôèëüòðà. Ðàññòîÿíèÿ íóæíî çàäàâàòü â ïóíêòàõ äëÿ 4-çíàêà, èíäèêàòîð àâòîìàòè÷åñêè àäàïòèðóåò çíà÷åíèÿ äëÿ 5-òè, 3-õ è 2-õ çíà÷íûõ êîòèðîâîê.
//Ïî íàñòðîéêàì:
//GX_Label - ïîäïèñü, êîòîðàÿ áóäåò íàêëàäûâàòüñÿ íà ñîîòâåòñòâóþùèé óðîâåíü (æåëàòåëüíî óêàçûâàòü íå ñëèøêîì äëèííóþ, òàê êàê åñòü îãðàíè÷åíèÿ íà êîëè÷åñòâî îòîáðàæàåìûõ ñèìâîëîâ);
//GX_Step - øàã ïîñòðîåíèÿ ëèíèé óðîâíåé (5000 äëÿ Y1, 2000 äëÿ Q1 è ò.ä.);
//GX_Upper - êîëè÷åñòâî ïóíêòîâ íà êîòîðîå áóäåò ñìåùåí âåðõíèé ôèëüòð îò öåíû óðîâíÿ (ââåðõ);
//GX_Lower - êîëè÷åñòâî ïóíêòîâ íà êîòîðîå áóäåò ñìåùåí íèæíèé ôèëüòð îò öåíû óðîâíÿ (âíèç).
//Òàêèì îáðàçîì äëÿ íàñòðîåê: G1_Label = "Y1", G1_Step = 5000, G1_Upper = 310, G1_Lower = 190 áóäóò ïîñòðîåíû ëèíèè ÷åðåç êàæäûå 5000 ïóíêòîâ ñ ïîäïèñüþ "Y1", íèæíèé ôèëüòð áóäåò óñòàíîâëåí íà 190 ïóíêòîâ íèæå, à âåðõíèé íà 310 ïóíêòîâ âûøå óðîâíÿ (äëÿ öåíû 1.5000 ýòî áóäåò 1.4810 è 1.5310 ñîîòâåòñòâåííî).
#property indicator_chart_window
extern string Grid_1 = "-------Grid-1-Settings-------";
extern bool G1_Draw = true; // ãîä
extern string G1_Label = "Y1";
extern int G1_Step = 5000;
extern int G1_Upper = 310;
extern int G1_Lower = 190;
extern string Grid_2 = "-------Grid-2-Settings-------";
extern bool G2_Draw = true; // êâàðòàë
extern string G2_Label = "Q1";
extern int G2_Step = 2000;
extern int G2_Upper = 130;
extern int G2_Lower = 20;
extern string Grid_3 = "-------Grid-3-Settings-------";
extern bool G3_Draw = true;
extern string G3_Label = "MN1";
extern int G3_Step = 1000;
extern int G3_Upper = 130;
extern int G3_Lower = 20;
extern string Grid_4 = "-------Grid-4-Settings-------";
extern bool G4_Draw = true;
extern string G4_Label = "W1";
extern int G4_Step = 500;
extern int G4_Upper = 31;
extern int G4_Lower = 19;
extern string Grid_5 = "-------Grid-5-Settings-------";
extern bool G5_Draw = true;
extern string G5_Label = "D1";
extern int G5_Step = 100;
extern int G5_Upper = 31;
extern int G5_Lower = 19;
extern string Grid_6 = "-------Grid-6-Settings-------";
extern bool G6_Draw = true;
extern string G6_Label = "H4";
extern int G6_Step = 500;
extern int G6_Upper = 31;
extern int G6_Lower = 19;
extern string Grid_7 = "-------Grid-7-Settings-------";
extern bool G7_Draw = true;
extern string G7_Label = "H1";
extern int G7_Step = 100;
extern int G7_Upper = 31;
extern int G7_Lower = 19;
extern string Draw_Settings = "-------Draw-Settings-------";
extern int Style = STYLE_DOT;
extern color SColor = Yellow;
extern color UColor = Red;
extern color LColor = Gray;
int D5 = 1.0;
string prefix = "#$@_";
string pref_a = "@$#_";
double pre_win_max = 0;
int init()
{
if ( Digits == 5 || Digits == 3 ) { D5 *= 10.0; }
return(0);
}
int deinit()
{
obj_delete();
return(0);
}
int start()
{
if ( pre_win_max != WindowPriceMax() )
{
pre_win_max = WindowPriceMax();
obj_delete();
if ( G7_Draw ) { DrawLines( G7_Label, G7_Step, G7_Upper, G7_Lower ); }
if ( G6_Draw ) { DrawLines( G6_Label, G6_Step, G6_Upper, G6_Lower ); }
if ( G5_Draw ) { DrawLines( G5_Label, G5_Step, G5_Upper, G5_Lower ); }
if ( G4_Draw ) { DrawLines( G4_Label, G4_Step, G4_Upper, G4_Lower ); }
if ( G3_Draw ) { DrawLines( G3_Label, G3_Step, G3_Upper, G3_Lower ); }
if ( G2_Draw ) { DrawLines( G2_Label, G2_Step, G2_Upper, G2_Lower ); }
if ( G1_Draw ) { DrawLines( G1_Label, G1_Step, G1_Upper, G1_Lower ); }
}
return(0);
}
void DrawLines( string text, int step, int up, int dn )
{
double win_max = WindowPriceMax();
double win_min = WindowPriceMin();
double level = 0.0;
string name = "";
string success = "";
string txt = "";
while( level <= win_max )
{
txt = text;
if ( level < win_min ) { level += step*D5*Point; continue; }
name = prefix + DoubleToStr(level, Digits);
if ( ObjectFind(name) < 0 ) { ObjectCreate ( name, OBJ_HLINE, 0, 0, level ); }
else { txt = text + ", " + ObjectDescription(name); }
ObjectSet ( name, OBJPROP_TIME1, 0 );
ObjectSet ( name, OBJPROP_PRICE1, level );
ObjectSet ( name, OBJPROP_COLOR, SColor );
ObjectSet ( name, OBJPROP_STYLE, Style );
ObjectSetText ( name, txt, 0 );
name = pref_a + DoubleToStr(level + up*D5*Point, Digits) + "_up";
txt = text;
if ( ObjectFind(name) < 0 ) { ObjectCreate ( name, OBJ_HLINE, 0, 0, level + up*D5*Point ); }
else { txt = text + ", " + ObjectDescription(name); }
ObjectSet ( name, OBJPROP_COLOR, UColor );
ObjectSet ( name, OBJPROP_STYLE, Style );
ObjectSetText ( name, txt, 0 );
name = pref_a + DoubleToStr(level - up*D5*Point, Digits) + "_dn";
txt = text;
if ( ObjectFind(name) < 0 ) { ObjectCreate ( name, OBJ_HLINE, 0, 0, level - up*D5*Point ); }
else { txt = text + ", " + ObjectDescription(name); }
ObjectSet ( name, OBJPROP_COLOR, LColor );
ObjectSet ( name, OBJPROP_STYLE, Style );
ObjectSetText ( name, txt, 0 );
level += step*D5*Point;
}
WindowRedraw();
}
void obj_delete()
{
int total = ObjectsTotal() - 1;
string name = "";
for ( int i = total; i >= 0; i -- )
{
name = ObjectName(i);
if ( ObjectFind(name) < 0 ) { continue; }
if ( StringFind( name, prefix ) >= 0 || StringFind( name, pref_a ) >= 0 ) { ObjectDelete(name); }
}
WindowRedraw();
}
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
---