Miscellaneous
0
Views
0
Downloads
0
Favorites
MorningFlat_v1
//+------------------------------------------------------------------+
//| MorningFlat.mq4 |
//| Scriptong |
//| |
//+------------------------------------------------------------------+
#property copyright "Scriptong"
#property link ""
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Turquoise
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 Silver
extern int StartHour=0;
extern int EndHour=8;
extern double TargetLevel=161.8;
extern color UpColor = Turquoise;
extern color DnColor = Red;
extern color TargetUpColor = Gold;
extern color TargetDnColor = Silver;
//---- buffers
double Up[];
double Down[];
double TargetUp[];
double TargetDn[];
bool Activate=False;
datetime LastDay;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if(Period()>PERIOD_H1)
{
Comment("Èíäèêàòîð ðàáîòàåò íà òàéìôðåéìàõ ìåíüøå H4!");
return(0);
}
if(StartHour<0 || EndHour<0 || StartHour>23 || EndHour>23 || StartHour>=EndHour)
{
Comment("Çíà÷åíèÿ StartHour è EndHour äîëæíû ëåæàòü â äèàïàçîíå îò 0 äî 24 è StartHour < EndHour.");
return(0);
}
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Up);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Down);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,TargetUp);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,TargetDn);
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
SetIndexEmptyValue(2, 0.0);
SetIndexEmptyValue(3, 0.0);
Activate=True;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
// Óäàëåíèå îáúåêòîâ-öåíîâûõ ìåòîê
for(int i=ObjectsTotal()-1; i>=0; i--)
{
string Name=ObjectName(i);
if(StringSubstr(Name,0,3)=="Lab")
ObjectDelete(Name);
}
Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Öåíîâàÿ ìåòêà ñî çíà÷åíèåì óðîâíÿ |
//+------------------------------------------------------------------+
void DrawLabel(datetime TimeL,double Price,bool Upper,color Col,int Code)
{
if(Upper)
string Name="Lab"+DoubleToStr(TimeL,0)+"U";
else
Name="Lab"+DoubleToStr(TimeL,0)+"D";
if(ObjectCreate(Name,OBJ_ARROW,0,TimeL,Price))
{
ObjectSet(Name,OBJPROP_ARROWCODE,Code);
ObjectSet(Name,OBJPROP_COLOR,Col);
}
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
if(!Activate) return(0);
LastDay=0;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit--;
for(int i=limit; i>=0; i--)
if(TimeHour(Time[i])>=EndHour)
{
datetime BeginDay=iTime(Symbol(),PERIOD_D1,iBarShift(Symbol(),PERIOD_D1,Time[i])); // Ðàñ÷åò âðåìåíè íà÷àëà ñóòîê
datetime NextDay=BeginDay+86400; // Ðàñ÷åò âðåìåíè íà÷àëà ñëåäóþùèõ ñóòîê
if(LastDay>=BeginDay) continue; // Åñëè â ýòîò äåíü óæå ðèñîâàëè óðîâíè, òî ïðîäîëæàåì îñíîâíîé öèêë
int StartBar = iBarShift(Symbol(),0, BeginDay+StartHour*3600); // Áàð, ñîîòâåòñâóþùèé íà÷àëó ñóòîê ïëþñ ñìåùåíèå â ÷àñàõ
int FinishBar = iBarShift(Symbol(), 0, BeginDay+EndHour*3600)+1; // Áàð, ñîîòâåòñòâóþùèé ïîñëåäíåìó áàðó "óòðåííåãî ôëýòà"
if(StartBar>-1 && FinishBar>-1)
{
int ind1=iLowest(Symbol(),0,MODE_LOW,StartBar-FinishBar+1,FinishBar);
int ind2=iHighest(Symbol(),0,MODE_HIGH,StartBar-FinishBar+1,FinishBar);
if(ind1>-1 && ind2>-1)
{
double LowV=Low[ind1]; // Íèæíÿÿ ãðàíèöà
double HighV=High[ind2]; // Âåðõíÿÿ ãðàíèöà
double TargetU = (HighV-LowV)*(TargetLevel-100)/100+HighV;
double TargetD = LowV-(HighV-LowV)*(TargetLevel-100)/100;
// Êàíàë "óòðåííåãî ôëýòà"
//Print("limit=",limit," StartBar=",StartBar," FinishBar=",FinishBar);
for(int j=StartBar; j>=FinishBar; j--)
{
Up[j]=HighV;
Down[j]=LowV;
}
// -----------------------
// Îæèäàåìûå öåëè ïðè ïðîáîå ôëýòà
for(j=FinishBar; j>=0; j--)
{
if(Time[j]<NextDay)
{
TargetUp[j] = TargetU;
TargetDn[j] = TargetD;
}
else break;
}
// -------------------
DrawLabel(Time[iBarShift(Symbol(), 0, BeginDay)], HighV, True, UpColor, 5); // Ðèñóåì âåðõíþþ öåíîâóþ ìåòêó êàíàëà
DrawLabel(Time[iBarShift(Symbol(), 0, BeginDay)], LowV, False, DnColor, 5); // Ðèñóåì íèæíþþ öåíîâóþ ìåòêó êàíàëà
DrawLabel(Time[FinishBar],TargetU,True,TargetUpColor,5); // Ðèñóåì âåðõíþþ öåíîâóþ ìåòêó öåëè
DrawLabel(Time[FinishBar],TargetD,False,TargetDnColor,5); // Ðèñóåì íèæíþþ öåíîâóþ ìåòêó öåëè
LastDay=BeginDay; // Îòìå÷àåì, ÷òî â ýòîò äåíü óðîâíè óæå áûëè íàðèñîâàíû
}
}
}
WindowRedraw();
//----
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
---