Author: Copyright � 2006, Alex Sidd (Executer)
ExCandles
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
ExCandles
//+------------------------------------------------------------------+
//|                                                    ExCandles.mq4 |
//|                           Copyright © 2006, Alex Sidd (Executer) |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Alex Sidd (Executer)"
#property link      "mailto:work_st@mail.ru"
//----
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1  Black
//---- input parameters
int ExPeriod = 10;
//---- buffers
double CCodeBuffer[];
//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
   IndicatorBuffers(1);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexBuffer(0, CCodeBuffer);
   SetIndexDrawBegin(0, ExPeriod);
   short_name = "ExCandles";
   IndicatorShortName(short_name);
   SetIndexLabel(0, short_name);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| deinitialization function                                        |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll(0, OBJ_ARROW); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsViselnik(int i1, int i2)
  {
   if((Open[i1] - Close[i1] > 0) && 
      ((High[i1] - Open[i1])*100 / (Open[i1] - Close[i1] + 0.0000001) < 15) && 
      ((Close[i1] - Low[i1])*100 / (Open[i1] - Close[i1] + 0.0000001) > 200) && 
      (Open[i2] - Close[i2] < 0)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsHummer(int i1, int i2)
  {
   if((Open[i1] - Close[i1] < 0) &&
      ((High[i1] - Close[i1])*100 / (Close[i1] - Open[i1] + 0.0000001) > 200) && 
      ((Open[i1] - Low[i1])*100 / (Close[i1] - Open[i1] + 0.0000001) < 15) && 
      (Open[i2] - Close[i2] > 0)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsBear(int i1, int i2, int i3)
  {
   if((Open[i2] - Close[i2] > 0) &&
      (Open[i2] >= Close[i3]) && 
      (Close[i2] <= Open[i3]) && 
      (Open[i3] - Close[i3] < 0) && 
      ((Open[i2] - Close[i2]) / (Close[i3] - Open[i3] + 0.0000001) > 1.5)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsBull(int i1, int i2, int i3)
  {
   if((Open[i2] - Close[i2] < 0) && 
      (Open[i3] - Close[i3] > 0) && 
      (Close[i2] >= Open[i3]) && 
      (Open[i2] <= Close[i3]) && 
      ((Close[i2] - Open[i2]) / (Open[i3] - Close[i3] + 0.0000001) > 1.5)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Zavesa_black(int i1, int i2)
  {
   if((Open[i1] - Close[i1] > 0) &&
      (Open[i2] - Close[i2] < 0) && 
      ((Close[i2] - Open[i2]) / (High[i2] - Low[i2]) > 0.6) && 
      (Open[i1] > High[i2]) && 
      (Close[i1] < (Open[i2] + (Close[i2] - Open[i2])/2))) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Prosvet(int i1, int i2, int i3)
  {
   if((Open[i1] - Close[i1] < 0) &&
      (Open[i2] - Close[i2] > 0) && 
      ((Open[i2] - Close[i2]) / (High[i2] - Low[i2]) > 0.6) && 
      (Open[i1] < Low[i2]) && 
      (Close[i1] > (Close[i2] + (Open[i2] - Close[i2]) / 2))) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool morning_star(int i1, int i2, int i3)
  {
   if((Open[i3] - Close[i3] > 0) && 
      (Close[i2] - Open[i2] > 0) && 
      (Close[i1] - Open[i1] > 0) && 
      (Close[i2] < Close[i3]) && 
      (Open[i1] > Close[i2]) && 
      (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / 
      (Open[i3] - Close[i3] + 0.0000001)) < 0.1) && 
      ((Open[i3] - Close[i3]) / (High[i3] - Low[i3]) > 0.8) && 
      ((Close[i2] - Open[i2]) / (High[i2] - Low[i2]) < 0.3) && 
      (Close[i1] - Open[i1]) / (High[i1] - Low[i1]) > 0.8) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool evening_star(int i1, int i2, int i3)
  {
   if((Open[i3] - Close[i3] < 0) && 
      (Close[i2] - Open[i2] < 0) && 
      (Close[i1] - Open[i1] < 0) && 
      (Close[i2] > Close[i3]) && 
      (Open[i1] < Close[i2]) && 
      (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / 
      (Close[i3] - Open[i3] + 0.0000001)) < 0.1) && 
      ((Close[i3] - Open[i3]) / (High[i3] - Low[i3]) > 0.8) && 
      ((Open[i2] - Close[i2]) / (High[i2] - Low[i2]) < 0.3) && 
      ((Open[i1] - Close[i1]) / (High[i1] - Low[i1]) > 0.8)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsEveningDodgiStar(int i1, int i2, int i3)
  {
   if((Open[i3] - Close[i3] < 0) && 
      (Close[i2] - Open[i2] == 0) && 
      (Close[i1] - Open[i1] < 0) && 
      (Close[i2] >= Close[i3]) && 
      (Open[i1] <= Close[i2]) && 
      (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / 
      (Open[i3] - Close[i3] + 0.0000001)) < 0.1)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsMorningDodgiStar(int i1, int i2, int i3)
  {
   if((Open[i3] - Close[i3] > 0) && 
      (Close[i2] - Open[i2] == 0) && 
      (Close[i1] - Open[i1] > 0) && 
      (Close[i2] <= Close[i3]) && 
      (Open[i1] >= Close[i2]) && 
      (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / 
      (Open[i3] - Close[i3] + 0.0000001)) < 0.1)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//| Executer Candles Indicator                                       |
//+------------------------------------------------------------------+
int start()
  {
   int    i, counted_bars = IndicatorCounted();
   double negative = 0, positive = 0;
//----
   if(Bars <= ExPeriod) 
       return(0);
   if(counted_bars < 1)
       for(i = 1; i <= ExPeriod; i++) 
           CCodeBuffer[Bars-i] = 0.0;
//----
   i = Bars - ExPeriod - 1;
   if(counted_bars >= ExPeriod) 
       i = Bars - counted_bars - 1;
   while(i >= 0)
     {
       if(IsViselnik(i, i + 1) == true)
         {
           ObjectCreate("Âèñåëüíèê" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point);
           ObjectSet("Âèñåëüíèê" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
           ObjectSet("Âèñåëüíèê" + i, OBJPROP_COLOR, Red);
           CCodeBuffer[i] = 1;
         }
       if(IsHummer(i, i + 1) == true)
         {
           ObjectCreate("Ìîëîò" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point);
           ObjectSet("Ìîëîò" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
           ObjectSet("Ìîëîò" + i, OBJPROP_COLOR, Blue);
           CCodeBuffer[i] = 2;
         }
       if(IsBear(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Ìåäâåæüå ïîãëîùåíèå" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point);
           ObjectSet("Ìåäâåæüå ïîãëîùåíèå" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
           ObjectSet("Ìåäâåæüå ïîãëîùåíèå" + i, OBJPROP_COLOR, Red);
           CCodeBuffer[i] = 3;
         }
       if(IsBull(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Áû÷üå ïîãëîùåíèå" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point);
           ObjectSet("Áû÷üå ïîãëîùåíèå" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
           ObjectSet("Áû÷üå ïîãëîùåíèå" + i, OBJPROP_COLOR, Blue);
           CCodeBuffer[i] = 4;
         }
       if(Zavesa_black(i, i + 1) == true)
         {
           ObjectCreate("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJ_ARROW, 0, Time[i], 
                        High[i] + 20*Point);
           ObjectSet("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
           ObjectSet("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJPROP_COLOR, Red);
           CCodeBuffer[i] = 5;
         }
       if(Prosvet(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Ïðîñâåò â îáëàêàõ" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point);
           ObjectSet("Ïðîñâåò â îáëàêàõ" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
           ObjectSet("Ïðîñâåò â îáëàêàõ" + i, OBJPROP_COLOR, Blue);
           CCodeBuffer[i] = 6;
         }
       if(evening_star(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Âå÷åðíÿÿ çâåçäà" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point);
           ObjectSet("Âå÷åðíÿÿ çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
           ObjectSet("Âå÷åðíÿÿ çâåçäà" + i, OBJPROP_COLOR, Red);
           CCodeBuffer[i] = 7;
         }
       if(morning_star(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Óòðåííÿÿ çâåçäà" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point);
           ObjectSet("Óòðåííÿÿ çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
           ObjectSet("Óòðåííÿÿ çâåçäà" + i, OBJPROP_COLOR, Blue);
           CCodeBuffer[i] = 8;
         }
       if(IsEveningDodgiStar(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point);
           ObjectSet("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
           ObjectSet("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJPROP_COLOR, Red);
           CCodeBuffer[i] = 9;
         }
       if(IsMorningDodgiStar(i - 1, i, i + 1) == true)
         {
           ObjectCreate("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point);
           ObjectSet("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
           ObjectSet("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJPROP_COLOR, Blue);
           CCodeBuffer[i] = 10;
         }
       i--;
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+

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