Author: ��� ����� �. aka KimIV
Miscellaneous
Implements a curve of type %1Uses files from the file systemIt writes information to file
2 Views
0 Downloads
0 Favorites
i-Spread3
//+----------------------------------------------------------------------------+
//|                                                              i-Spread.mq4  |
//|                                                                            |
//|                                                    Êèì Èãîðü Â. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_width1 1
#property indicator_color2 Green
#property indicator_width2 1
#property indicator_color3 Blue
#property indicator_width3 1

//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà ----------------------------------------+
extern bool   WriteInFile = False;       // Çàïèñûâàòü â ôàéë
extern string FileName    = "";          // Èìÿ ôàéëà

//------- Ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà ------------------------------------+
double maxH1,maxH4,maxD1,prevSpread;
double minH1,minH4,minD1;
int    prevH1,prevH4,prevD1;

//------- Áóôåðû èíäèêàòîðà ---------------------------------------------------+
double buf0[],buf1[],buf2[];
//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ÏÐÅÄÎÏÐÅÄÅ˨ÍÍÛÅ ÔÓÍÊÖÈÈ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  Custom indicator initialization function                                  |
//+----------------------------------------------------------------------------+
void init() 
  {
   IndicatorDigits(2);

   SetIndexBuffer(0,buf0);
   SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexLabel(0,"Max");

   SetIndexBuffer(1,buf1);
   SetIndexEmptyValue(1,EMPTY_VALUE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexLabel(1,"Current");

   SetIndexBuffer(2,buf2);
   SetIndexEmptyValue(2,EMPTY_VALUE);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexLabel(2,"Min");
  }
//+----------------------------------------------------------------------------+
//|  Custom indicator iteration function                                       |
//+----------------------------------------------------------------------------+
void start() 
  {
   double sp=MarketInfo(Symbol(),MODE_SPREAD);
   string st;

   buf1[0]=sp;
   if(buf0[0]==EMPTY_VALUE) buf0[0]=sp;
   if(sp > buf0[0]) buf0[0]=sp;
   if(sp < buf2[0]) buf2[0]=sp;

   if(prevH1<iTime(NULL,PERIOD_H1,0)) { maxH1=sp; minH1=sp; }
   prevH1=iTime(NULL,PERIOD_H1,0);
   if(maxH1<sp) maxH1=sp;
   if(minH1>sp) minH1=sp;

   if(prevH4<iTime(NULL,PERIOD_H4,0)) { maxH4=sp; minH4=sp; }
   prevH4=iTime(NULL,PERIOD_H4,0);
   if(maxH4<sp) maxH4=sp;
   if(minH4>sp) minH4=sp;

   if(prevD1<iTime(NULL,PERIOD_D1,0)) { maxD1=sp; minD1=sp; }
   prevD1=iTime(NULL,PERIOD_D1,0);
   if(maxD1<sp) maxD1=sp;
   if(minD1>sp) minD1=sp;

   st=StringConcatenate("Ìàêñèìóì çà ïîñëåäíèé H1 = ",DoubleToStr(maxH1,2),"\n"
                        ,"Ìàêñèìóì çà ïîñëåäíèé H4 = ",DoubleToStr(maxH4,2),"\n"
                        ,"Ìàêñèìóì çà ïîñëåäíèé D1 = ",DoubleToStr(maxD1,2),"\n"
                        ,"Òåêóùèé ñïðýä = ",DoubleToStr(sp,2),"\n"
                        ,"Ìèíèìóì çà ïîñëåäíèé D1 = ",DoubleToStr(minD1,2),"\n"
                        ,"Ìèíèìóì çà ïîñëåäíèé H4 = ",DoubleToStr(minH4,2),"\n"
                        ,"Ìèíèìóì çà ïîñëåäíèé H1 = ",DoubleToStr(minH1,2),"\n"
                        );
   Comment(st);

   if(WriteInFile) 
     {
      if(prevSpread!=sp) 
        {
         if(StringLen(FileName)==0) FileName="spr_"+StringLower(Symbol())+"_"+GetNameTF()+".csv";
         st=StringConcatenate(TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),
                              ";",DoubleToStr(sp,2));
         WritingLineInFile(FileName,st);
        }
     }
   prevSpread=sp;
  }
//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ÏÎËÜÇÎÂÀÒÅËÜÑÊÈÅ ÔÓÍÊÖÈÈ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà                             |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    TimeFrame - òàéìôðåéì (êîëè÷åñòâî ñåêóíä)      (0 - òåêóùèé ÒÔ)         |
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) 
  {
   if(TimeFrame==0) TimeFrame=Period();
   switch(TimeFrame) 
     {
      case PERIOD_M1:  return("M1");
      case PERIOD_M5:  return("M5");
      case PERIOD_M15: return("M15");
      case PERIOD_M30: return("M30");
      case PERIOD_H1:  return("H1");
      case PERIOD_H4:  return("H4");
      case PERIOD_D1:  return("Daily");
      case PERIOD_W1:  return("Weekly");
      case PERIOD_MN1: return("Monthly");
      default:         return("Unknown Period");
     }
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå                            |
//+----------------------------------------------------------------------------+
string StringLower(string s) 
  {
   int c,i,k=StringLen(s),n;
   for(i=0; i<k; i++) 
     {
      n=0;
      c=StringGetChar(s, i);
      if(c>64 && c<91) n=c+32;     // A-Z -> a-z
      if(c>191 && c<224) n=c+32;   // À-ß -> à-ÿ
      if(c==168) n=184;            //  ¨  ->  ¸
      if(n>0) s=StringSetChar(s,i,n);
     }
   return(s);
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//+----------------------------------------------------------------------------+
//|  Îïèñàíèå : Çàïèñü ñòðîêè â ôàéë                                           |
//|  Ïàðàìåòðû:                                                                |
//|    FileName - èìÿ ôàéëà                                                    |
//|    text     - ñòðîêà                                                       |
//+----------------------------------------------------------------------------+
void WritingLineInFile(string FileName,string text) 
  {
   int file_handle=FileOpen(FileName,FILE_READ|FILE_WRITE," ");

   if(file_handle>0) 
     {
      FileSeek(file_handle,0,SEEK_END);
      FileWrite(file_handle,text);
      FileClose(file_handle);
     }
  }
//+----------------------------------------------------------------------------+

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 ---