Miscellaneous
0
Views
0
Downloads
0
Favorites
Anecdote_v1
//+------------------------------------------------------------------+
//| TimeLines.mq4 |
//| Denis Orlov |
//| http://denis-or-love.narod.ru |
/*
Àâòîìàòè÷åñêàÿ ðàçëèíîâêà ãðàôèêà ïî âðåìåíè, òàéìåð è ÀÍÅÊÄÎÒ!!!.
ôàéë Anecdote.txt ñëåäóåò ñîõðàíèòü â ïàïêå experts\files â äèðåêòîðèè âàøåãî òåðìèíàëà.
Íàïðèìåð : Ñ:\Program Files\ Broco Trader (èëè ÷òî òàì ó Âàñ :-) \experts\files
Ñàì èäèêàòîð ñëåäóåò ïîìåñòèòü â ïàïêó experts\indicators.
Ïîäðîáíî:
http://codebase.mql4.com/ru/6166
Automatic marking of the chart by the time and the timer.
In detail:
http://codebase.mql4.com/6095
***
Âñå ìîè èíäèêàòîðû:
http://codebase.mql4.com/ru/author/denis_orlov
***
ÏÎËÜÇÓÉÒÅÑÜ È ÏÐÎÖÂÅÒÀÉÒÅ!
***
All my indicators:
http://codebase.mql4.com/author/denis_orlov
***
USE AND PROSPER!
*/
//+------------------------------------------------------------------+
#property copyright "Denis Orlov"
#property link "http://denis-or-love.narod.ru"
#include <stdlib.mqh>//for ErrorDescription
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Green
double Smile[];
#define Pr "TimeLines "
extern string FileName = "Anecdote.txt";
extern int period=15;
extern bool ShowAnecdotes=True;
extern bool ShowSmiles=True;
extern bool ShowLines=True;
extern color LineColor=Blue;
extern int LineWidth=1;
extern int LineStyle=2;
extern int History=100;
extern bool Back=true;//Ðèñîâàòü êàê ôîí
int per;
string Arr[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
/*if(period<=Period()|| period<5)
Alert(
"Èíäèêàòîð TimeLines íå áóäåò ðàáîòàòü íà ýòîì ÒÔ"+"\n"+
"ñî çíà÷åíèåì \"period\"="+period+"\n"+
"Èçìåíèòå ýòî çíà÷åíèå, ïîæàëóéñòà."+"\n"+
"Indicator TimeLines will not work on this TF"+"\n"+
"with the value of the \"period\"="+period+"\n"+
"Change this value, please.");*/
if(ShowAnecdotes)
{
int fname=FileOpen(FileName, FILE_BIN|FILE_READ);
if (fname>0)
{
string str; ArrayResize( Arr, 0) ;
while (!FileIsEnding(fname))
{
str=GetStringFromFile(fname);
while( StringFind( str, "\t")>-1 && StringLen(str)>1)
str=StringReplace(str, "\t", "\n");
if(StringLen(str)<5) continue;
int Size=ArraySize(Arr);
ArrayResize( Arr, Size+1) ;
Arr[Size]=str;
}
// Alert(Size+1);
}
else
{
int err=GetLastError();
Comment("Îøèáêà îòêðûòèÿ ôàéëà \""+FileName+"\"\n"+
"Error of opening file ",err,": ",ErrorDescription(err));
}
} //if(ShowAnecdotes)
IndicatorShortName( "Anecdote "+PeriodToStr(period));
SetIndexBuffer(0,Smile);
SetIndexStyle( 0, DRAW_ARROW, STYLE_DOT, 2);
SetIndexArrow(0, 74);
SetIndexLabel(0, "Smile Time "+PeriodToStr(period));
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Delete_My_Obj(Pr+PeriodToStr(period));
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if(period<=Period()|| period<5) return(0);
int Counted_bars=IndicatorCounted();
if(Counted_bars>0)
{
if (per == Time[0]) return;
per = Time[0];
CheckAndDraw(Time[0]);
return;
}
int i=Bars-Counted_bars-1; // Èíäåêñ ïåðâîãî íåïîñ÷èòàííîãî
if (History>0&&i>History-1) // Åñëè ìíîãî áàðîâ òî ..
i=History-1;
while(i>=0) // Öèêë ïî íåïîñ÷èòàííûì áàðàì
{
CheckAndDraw(Time[i]);
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
void CheckAndDraw(datetime t)
{
int TM=TimeMinute(t), TH=TimeHour(t) ;
bool draw=false;
if(period==5)
{
if( TM==0 || TM==5 ||TM==10 ||TM==15 ||TM==20||TM==25 ||TM==30
||TM==35 ||TM==40 ||TM==45||TM==50||TM==55)
draw=true;
}
if(period==15)
{
if( TM==0 || TM==15 ||TM==30 ||TM==45)
draw=true;
}
if(period==30)
{
if( TM==0 || TM==30)
draw=true;
}
if(period==60)
{
if( TM==0)
draw=true;
}
if(period==240)
{
if(TM==0 && (TH==0 ||TH==4||TH==8||TH==12||TH==16||TH==20||TH==24) )
draw=true;
}
if(period==1440)
{
if(TH==0 && TM==0)
draw=true;
}
if(period==10080)
{
if(TH==0 && TM==0 && TimeDayOfWeek(t)==1 )
draw=true;
}
if(period==43200)
{
if(TH==0 && TM==0 && TimeDay(t)==1 )
draw=true;
}
string LName=Pr+PeriodToStr(period)+" "+TimeToStr(t,TIME_DATE|TIME_MINUTES);
if(ShowLines && draw && ObjectFind(LName)<0)
{
ObjectCreate( LName,OBJ_VLINE,0,t,0);
ObjectSet( LName, OBJPROP_COLOR , LineColor);
ObjectSet( LName, OBJPROP_WIDTH , LineWidth);
if(Back==true)ObjectSet( LName, OBJPROP_BACK, Back);
if(LineWidth<2)
ObjectSet( LName, OBJPROP_STYLE , LineStyle);
// ObjectSetText( LName, DoubleToStr(TM,0));
}
int nt=t+period*60;
LName=Pr+PeriodToStr(period)+" "+TimeToStr(nt,TIME_DATE|TIME_MINUTES);
if(ShowAnecdotes && draw && Time[0]==t && ObjectFind(LName)<0)
{
MathSrand(TimeLocal());
int i=MathRand();
while( i>ArraySize(Arr)-1)
i=MathRand();
//Comment("Àíåêäîò ¹"+Arr[i]);
Alert("Smile Time "+PeriodToStr(period)+": "+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+" ! Àíåêäîò ¹"+Arr[i]);
if(ShowSmiles) Smile[0]=High[1]+(High[1]-Low[1])*3;
}
if(ShowLines && draw && ObjectFind(LName)<0)
{
ObjectCreate( LName,OBJ_VLINE,0,nt,0);
ObjectSet( LName, OBJPROP_COLOR , LineColor);
ObjectSet( LName, OBJPROP_WIDTH , LineWidth);
if(Back==true)ObjectSet( LName, OBJPROP_BACK, Back);
if(LineWidth<2)
ObjectSet( LName, OBJPROP_STYLE , LineStyle);
// ObjectSetText( LName, DoubleToStr(TM,0));
}
}
//----------------------
void Delete_My_Obj(string Prefix)
{//Alert(ObjectsTotal());
for(int k=ObjectsTotal()-1; k>=0; k--) // Ïî êîëè÷åñòâó âñåõ îáúåêòîâ
{
string Obj_Name=ObjectName(k); // Çàïðàøèâàåì èìÿ îáúåêòà
string Head=StringSubstr(Obj_Name,0,StringLen(Prefix));// Èçâëåêàåì ïåðâûå ñèì
if (Head==Prefix)// Íàéäåí îáúåêò, ..
{
ObjectDelete(Obj_Name);
//Alert(Head+";"+Prefix);
}
}
}
//-------------------------------
string PeriodToStr(int Per)
{
switch(Per) // Ðàñ÷¸ò äëÿ..
{ // .. ðàçëè÷íûõ ÒÔ
case 1: return("M1"); break;// Òàéìôðåéì Ì1
case 5: return("M5"); break;// Òàéìôðåéì Ì5
case 15: return("M15"); break;// Òàéìôðåéì Ì15
case 30: return("M30"); break;// Òàéìôðåéì Ì30
case 60: return("H1"); break;// Òàéìôðåéì H1
case 240: return("H4"); break;// Òàéìôðåéì H4
case 1440: return("D1"); break;// Òàéìôðåéì D1
case 10080: return("W1"); break;// Òàéìôðåéì W1
case 43200: return("ÌN"); break;// Òàéìôðåéì ÌN
}
}
///-----------------------------
//+----------------------------------------------------------------------------+
//| ×èòàåò ñòðîêîâûé áëîê èç ôàéëà äî çíàêà ïåðåíîñà êàðåòêè #13#10 |
//| Ïàðàìåòðû: |
//| fh - îïèñàòåëü îòêðûòîãî ðàíåå ôàéëà |
//| |
//+----------------------------------------------------------------------------+
string GetStringFromFile(int& fh)
{
string str="", s;
while (!FileIsEnding(fh))
{
s=FileReadString(fh, 1);
int Ch=StringGetChar(s, 0);
if (Ch!=13 && Ch!=10) str=str+s;
else return(str);
}
return(str);
}
string StringReplace(string text, string oldstr, string newstr)
{
int pos=StringFind(text, oldstr);
if(pos>-1)
{
string str=StringSubstr(text, 0, pos)+newstr+StringSubstr(text, pos+StringLen(oldstr));
return(str);
}
return(text);
}
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
---