0


Без заглядывания в будущее — считает — норм
avatar

poruchik

  • 28 июня 2016, 15:42
+1


//+------------------------------------------------------------------+
//|                                                Master_Candle.mq4 |
//|                                                         Zen_Leow |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Zen_Leow"
#property link      ""

#property indicator_chart_window

extern int MinEngulfCandles = 4;
extern color TopLineColor = clrRed;
extern color BottomLineColor = clrBlue;
extern int LineWidth = 2;
extern bool WaitForCandleClose = true;
extern bool IgnoreWick = true;
extern bool SoundAlert = true;

int IndexOffset = 0;
datetime LastAlertTime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   if (WaitForCandleClose)
   {
      IndexOffset = 0;
   }
   else
   {
      IndexOffset = 1;
   }
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
   int    obj_total=ObjectsTotal();
   string name, topLine, bottomLine;
   topLine = Symbol()+"_"+Period()+"_MasterTop_";
   bottomLine = Symbol()+"_"+Period()+"_MasterBottom_";
   for(int i=obj_total-1; i>=0; i--)
   {
      name=ObjectName(i);
      if (StringFind(name,topLine,0) != -1 || StringFind(name,bottomLine,0) != -1)
      {
         ObjectDelete(name);
      }
   }
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int i;                           // Bar index       
   int Counted_bars;                // Number of counted bars
   //--------------------------------------------------------------------   
   Counted_bars=IndicatorCounted(); // Number of counted bars   
   i=Bars-Counted_bars-1;           // Index of the first uncounted   
   
   // always recount the latest possible location for a master candle to be formed
   if (i == 0)
   {
      i = MinEngulfCandles+1; 
   }
   while(i>MinEngulfCandles-IndexOffset)                      // Loop for uncounted bars     
   {      
      if (isMasterCandle(i))
      {
         DrawLines(i);
         if (i == MinEngulfCandles-IndexOffset+1)
         {
            if (SoundAlert && LastAlertTime < Time[0])
            {
               Alert("Master Candle detected on "+Symbol()+" at candle: "+TimeToStr(Time[i],TIME_DATE|TIME_MINUTES));
               LastAlertTime = Time[0];
            }
         }
      }
      else
      {
         DeleteLines(i);
      }
      i--;
   }
//----
   return(0);
}

bool isMasterCandle(int index)
{
   double CandleTop = High[index];
   double CandleBottom = Low[index];
   
   for (int h = index-1; h >= index - MinEngulfCandles; h--)
   {
      if (IgnoreWick)
      {
         if (Close[h] >= Open[h]) // bull or doji candle
         {
            if (Close[h] > CandleTop || Open[h] < CandleBottom)
            {
               return (false);
            }
         }
         if (Close[h] <= Open[h]) // bear or doji candle
         {
            if (Open[h] > CandleTop || Close[h] < CandleBottom)
            {
               return (false);
            }
         }
      }
      else
      {
         if (High[h] > CandleTop || Low[h] < CandleBottom)
         {
            return (false);
         }
      }
   }
   
   return (true);
}

void DrawLines(int index)
{
   string TopName = Symbol()+"_"+Period()+"_MasterTop_" + Time[index];
   ObjectCreate(TopName, OBJ_TREND, 0, Time[index], High[index], Time[index - MinEngulfCandles], High[index]);
   ObjectSet(TopName, OBJPROP_RAY, false);
   ObjectSet(TopName, OBJPROP_WIDTH, LineWidth);
   ObjectSet(TopName, OBJPROP_COLOR, TopLineColor);
   
   string BottomName = Symbol()+"_"+Period()+"_MasterBottom_" + Time[index];
   ObjectCreate(BottomName, OBJ_TREND, 0, Time[index], Low[index], Time[index - MinEngulfCandles], Low[index]);
   ObjectSet(BottomName, OBJPROP_RAY, false);
   ObjectSet(BottomName, OBJPROP_WIDTH, LineWidth);
   ObjectSet(BottomName, OBJPROP_COLOR, BottomLineColor);
}

void DeleteLines(int index)
{
   string TopName = Symbol()+"_"+Period()+"_MasterTop_" + Time[index];
   string BottomName = Symbol()+"_"+Period()+"_MasterBottom_" + Time[index];
   if (ObjectFind(TopName) == 0 || ObjectFind(BottomName) == 0) // found in main chart window
   {
      ObjectDelete(TopName);
      ObjectDelete(BottomName);
      if (SoundAlert)
      {
         Alert("Master Candle REMOVED on "+Symbol()+" at candle: "+TimeToStr(Time[index],TIME_DATE|TIME_MINUTES));
      }
   }
}
//+------------------------------------------------------------------+
avatar

poruchik

  • 28 июня 2016, 14:53
0


надо гипотенузу считать (Бредли Коуэн) так завещал
+ пипсы и время добавить и по центру линии разместить итог
====
что то у меня не вышло, хотел для начала результат чуть выше поднять (когда 2 линии сходятся — накладка идет)

И спасибо за индикатор, классная штука
avatar

poruchik

  • 27 июня 2016, 21:54
+1










Этот паттерн называется акула 32 (походит на акулий плавник)
Описание есть у Томаса Булковски в его энциклопедии

padabum.com/d.php?id=120851

thepatternsite.com/Shark32.html

//|------------------------------------------------------------------|
//|                                               Indicator Arrow.mq4|
//|                                    Copyright © 2013, Mr.SilverKZ |
//|                                                 SilverKZ@mail.kz |
//|                                                                  |
//| 21.07.15 ДОРАБОТАН ПОД SHARK 321                                 |
//|                                                                  |
//|                                                                  |
//|  свечи в коде идут  3-2-1-0                                       |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "SilverKZ"
#property link "SilverKZ@mail.kz"

#property description "   "
#property description " .........................  "
#property description "Ищет паттерн акула 32 (2 внутренних бара)"
#property description " 27.06.16 поручик"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrRed
#property indicator_color2 clrBlue


double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexArrow (0,82);
   SetIndexArrow (1,82);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      bool DOWN  =  High[i+2] > High[i+1] && High[i+1]>  High[i+0] &&  
                    Low[i+2]  < Low[i+1] &&  Low[i+1]  < Low[i+0];
      
                       
                   
     bool UP =  High[i+2] > High[i+1] && High[i+1] > High[i+0] &&  
                Low[i+2]  < Low[i+1] &&  Low[i+1]  < Low[i+0];
      
      
       
      if (UP)       buf_1[i+0] = Low[i+0]-3*Point;
      if (DOWN)     buf_2[i+0] = High[i+0]+3*Point;
     }
   return(0);
 }
  //  ---- end



Индикатор сделал.
Один из моих любимых паттернов
avatar

poruchik

  • 27 июня 2016, 18:37
0


Иногда после запятой много цифр
avatar

poruchik

  • 27 июня 2016, 11:17
0
www.mql5.com/ru/charts/5368144/eurusd-h1-instaforex-group

www.mql5.com/ru/charts/5368149/eurusd-h1-instaforex-group
Что то в формуле подправить надо

100 п за 25 часов

100 п./25 = 4
avatar

poruchik

  • 27 июня 2016, 09:28
0


Оксана, привет!
бери в долю. :) 
У меня на такие паттерны индикатор есть
avatar

poruchik

  • 17 мая 2016, 00:16
0


У меня так, открывает и почти сразу закрывает
Для 1 совы — норм <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
avatar

poruchik

  • 17 мая 2016, 00:12
0
в том и дело, что их нет, на других ТФ — все ок
у нас же задано время работы в часах, при тесте на дэйли сова не видит время начало-конец торгов?
avatar

poruchik

  • 16 мая 2016, 09:50
0
у меня на D1 не открывает ни одной сделки
avatar

poruchik

  • 15 мая 2016, 23:43
+1
<code>//|------------------------------------------------------------------|
//|                                               Indicator Arrow.mq4|
//|                                    Copyright © 2013, Mr.SilverKZ |
//|                                                 SilverKZ@mail.kz |
//|                                                                  |
//| 
//|                                                                  |
//|                                                                  |
//|  свечи в коде идут  3-2-1-0                                        |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "SilverKZ"
#property description " * * * * * * "

#property link "http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-juicer.html"

#property link "http://zakaz.opentraders.ru/32568.html"



// change 3-rd pattern 9.05.16

#property description "По ТС Соковыжималка"

#property description " * poruchik * 14.05.16"


#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 clrRed
#property indicator_color2 clrBlue
#property indicator_color3 clrRed
#property indicator_color4 clrBlue

double buf_1[];
double buf_2[];
double buf_3[];
double buf_4[];


//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);
   SetIndexBuffer(2,buf_3);
   SetIndexBuffer(3,buf_4);
   

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 0);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 0);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);
   
   SetIndexStyle (2,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (3,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (2,171);
   SetIndexArrow (3,171);
   
   
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexEmptyValue(2,0.0);
   SetIndexEmptyValue(3,0.0);
   
   
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      bool DOWN  =  Close[i+3] > Open[i+3] && Close[i+2] < Open[i+2] && Close[i+1] <  Open[i+1] &&   Close[i+1]< Low[i+2]; 
   
      bool UP =  Close[i+3] < Open[i+3] && Close[i+2] > Open[i+2] && Close[i+1] > Open[i+1] && Close[i+1] > High[i+2]; 
                  
             
      if (UP)       buf_1[i+0] = Low[i+0]-15*Point;
      if (UP)       buf_3[i+3] = Low[i+3]-15*Point ; 
      //if (UP)       buf_3[i+3] = High[i+3]+2*Point;
      
      if (DOWN)     buf_2[i+0] = High[i+0]+15*Point;
      if (DOWN)     buf_4[i+3] = High[i+3]+15*Point ; 
     // if (DOWN)     buf_4[i+3] = High[i+3]+2*Point;
      
      
      
     }
   return(0);
 }
  //  ---- end

</code>


Привет!
Держи индикатор, будет сова — дай знать
avatar

poruchik

  • 14 мая 2016, 09:34
0
*good* 

посмотрел в MS оффис пикчер менеджер — там отразить
в пэйнте то же отразить

а поворачиваем на градусы
но евроюзд мы отразили по горизонтали? же
avatar

poruchik

  • 9 июня 2015, 16:00
0


Не пользовался
Отражение и поворот вокруг оси. Разве это не одно и то же?
Красную в синию вертикально отразил (повернул)
Красную в зеленую — горизонтально (--\--)
avatar

poruchik

  • 9 июня 2015, 15:54
0
мы график повернули вокруг горизонтальной оси.
Если бы вертикально, то он бы с правого угла выходил и шел в левый (у арабов может так цена идет <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp;  )

все должно быть параллельно и перпендикулярно :) 
avatar

poruchik

  • 9 июня 2015, 15:37
0
ага, только название топика еще поменять — отразить горизонтально :) 
avatar

poruchik

  • 9 июня 2015, 14:35
+1


Это 3 цвет глючит. Как я понял он автоматом под фон подстраиваться должен.
Сделай белый для светлого или none. Как то так
avatar

poruchik

  • 9 июня 2015, 14:30