Author: KONDOR
Miscellaneous
Uses files from the file systemIt reads information from a fileIt issuies visual alerts to the screen
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---