Miscellaneous
0
Views
0
Downloads
0
Favorites
ZODIAK
//+------------------------------------------------------------------+
//| ZODIAK.mq4 |
//| KONDOR |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "KONDOR"
#property link "http://www.metaquotes.net"
//#property indicator_chart_window
color ck[12]={DarkBlue,MediumBlue,DarkTurquoise,Aquamarine,White,Yellow,Gold,Orange,DarkOrange,OrangeRed,DeepPink,Violet};
int n,i,x,z;
datetime datTime[];
string vhodit[];
string coment[];
datetime Time_[][11];
string com[][11];
int b[11]; // íîìåð áàðà ïî ïîðÿäêó äëÿ êàæäîé ïëàíåòû
int d[11];
int bt[][11];// èíäåêñ áàðà äëÿ êàæäîãî ñîáûòèÿ
int T1[6000][11], T2[6000][11];
string M[];
string FileName="zodiak.csv";
double av[11];
string planets[11]={"ëóíà","ìåðêóðèé","âåíåðà","ñîëíöå","ìàðñ","þïèòåð","ñàòóðí","óðàí","ïëóòîí","íåïòóí","õèðîí"};
string znak[12]={"ðûáû","îâåí","òåëåö","áëèçíåöû","ðàê","ëåâ","äåâà","âåñû","ñêîðïèîí","ñòðåëåö","êîçåðîã","âîäîëåé"};
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
int FileHandle=FileOpen(FileName,FILE_CSV|FILE_READ,";");
if(FileHandle<0)Comment("ÎØÈÁÊÀ ",GetLastError());
if(FileHandle>0)
{
int Z=0;
while(!FileIsEnding(FileHandle))
{
M[Z]=FileReadString(FileHandle); Z++;
}
}
FileClose(FileHandle);
//-------------------------------------------------------
int Total=(Z-1)/3.0;
ArrayResize(datTime,Total);
ArrayResize(vhodit,Total);
ArrayResize(coment,Total);
n=0;
FileHandle=FileOpen(FileName,FILE_CSV|FILE_READ,";");
if(FileHandle<0)Comment("ÎØÈÁÊÀ ",GetLastError());
if(FileHandle>0)
{
while(!FileIsEnding(FileHandle))
{
datTime[n]=StrToTime(FileReadString(FileHandle));
vhodit [n]=FileReadString(FileHandle);
coment [n]=FileReadString(FileHandle);
n++;
}
}
FileClose(FileHandle);
//--------------------------------- îïðåäåëÿåì ðàçìåð ìàññèâîâ -----------------------
ArrayInitialize(b,-1);
for(i=0;i<Total;i++){
if(datTime[i]<=Time[Bars-1]) continue;
if(datTime[i]>=Time[0]) continue;
for(int z=0;z<11;z++) {
if(StringFind(coment[i],planets[z])>=0 ) { b[z]++; d[z]=b[z];}
}
}
for( z=0;z<11;z++){
ArrayResize(com, 6000);
ArrayResize(Time_,6000);
ArrayResize(bt, 6000);
}
//================================= çàïîëíÿåì ìàññèâû =================================
ArrayInitialize(b,-1);
for(i=0;i<Total;i++){
if(datTime[i]<=Time[Bars-1]) continue;
if(datTime[i]>=Time[0]) continue;
for( z=0;z<11;z++) {
if(StringFind(coment[i],planets[z])>=0 ){
b[z]++;
com [b[z]][z] = coment [i];
Time_[b[z]][z] = datTime[i];
bt [b[z]][z] = bar_(Time_[b[z]][z]);
if(bt[b[z]][z]==-1) bt [b[z]][z]=bt[b[z]-1][z];
}
}
}
for(z=0;z<11;z++) {
for(i=0;i<=d[z];i++) {
T1[i][z]=bt[i ][z];
T2[i][z]=bt[i-1][z];
if(i==0) T2[i][z]=0;
}
}
//-------------- âû÷èñëÿåì ãîðèçîíòàëüíûé óðîâåíü íà ãðàôèêå äëÿ êàæäîé ïëàíåòû -------
Create_Line(0);
if(ObjectFind("Line")>=0) {
datetime Time_k=ObjectGet("Line",OBJPROP_TIME1);
for( i=0;i<Bars;i++) {if(Time[i]==Time_k)int k=i; } // íàøëè âåðòèêàëüíóþ ëèíèþ
}
int history=k+1000;
if(history>Bars)history=Bars;
ArrayInitialize(av,0);
double max=-1000000, min=1000000;
for( i=k;i<=history;i++){
if(High[i]>max)max=High[i];
if(Low [i]<min)min=Low [i];
}
for(i=0;i<11;i++) {
av[i]=NormalizeDouble((max-min)/11*i+min,Digits);
double delta=NormalizeDouble((max-min)/11,Digits);
}
//------------------------------ ðèñóåì ïðÿìîóãîëüíèêè ---------------------------------
for(z=0;z<11;z++) {
Alert(planets[z]," = ",d[z]);
for( x=0;x<=d[z];x++) {
ObjectDelete (com[x][z]+x);
Create_Rest(com[x][z]+x, T1[x][z], T2[x][z], av[z], delta, col(com[x][z]));
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
int bar_(datetime dt){ // âû÷èñëÿåò íîìåð áàðà
int res=-1;
for(int a=0;a<Bars;a++){
if(dt>=Time[a] && dt<=Time[a]+Period()*60) { res=a;break;}
}
return(res); }
//-----------------------------------
color col(string cm) { // ô-öèÿ îïðåäåëÿåò öâåò ïðÿìîóãîëüíèêà â çàâèñèìðñòè îò çíàêà
color c;
for(i=0;i<12;i++) {
if(StringFind(cm,znak[i])>=0 ) {c=ck[i];break;}
}
return(c); }
//----------------------------------
void Create_Line(int n){
if(ObjectFind("Line")<0) {
ObjectCreate("Line",OBJ_VLINE,0,Time[n],Close[n]);
ObjectSet("Line",OBJPROP_COLOR,DeepPink);
ObjectSet("Line",OBJPROP_WIDTH,2);
WindowRedraw();
}
}
//---------------------------------
void Create_Rest(string name,int T1,int T2, double midl,double d,color c) {
ObjectCreate (name, OBJ_RECTANGLE, 0, Time[T1], midl, Time[T2], midl+d);
ObjectSet (name, OBJPROP_COLOR, c);
}
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
---