Как вы бы описали паттерн доджи на mql? - страница 4

 

Давайте, господа умники, сделаем второй заход. 

Автор темы дал ссылку - http://take.ms/TD5ZU.

Давайте назовем эту штуку показанную на картинке калякомалякобалякой. Так вот вопрос - как описать эту  калякомалякобаляку?

Вот только не надо тут доказывать, что это не  калякомалякобаляка. А тем, кто будет пытаться доказывать обратное, сразу отвечу - вы неверно не читали ту книгу, или небыли на тех курсах где эта шутка называется калякомалякобалякой.  И т.д. и т.п.

 
Integer:

Давайте, господа умники, сделаем второй заход. 

Автор темы дал ссылку - http://take.ms/TD5ZU.

Давайте назовем эту штуку показанную на картинке калякомалякобалякой. Так вот вопрос - как описать эту  калякомалякобаляку?

Вот только не надо тут доказывать, что это не  калякомалякобаляка. А тем, кто будет пытаться доказывать обратное, сразу отвечу - вы неверно не читали ту книгу, или небыли на тех курсах где эта шутка называется калякомалякобалякой.  И т.д. и т.п.

Помогу тебе - вставлю картинку.  

 

понимаю... вставить картинку - это очень сложно... 

Ну зато теперь можно на неё посмотреть   ;))) 

 

вот наглядный пример превосходства человека над машиной )))

Кое что запрограммировать можно, но мы все прекрасно понимаем, что это будет не точный код. Нужно вводить дельты, а они могут быть очень разными, одно дело минутки, другое дневные свечи.

H-O>delta1

O-L>delta2

|O-C|<delta3 

H-L>delta4

можно еще и хвосты сравнить... 

 
Prival-2:

вот наглядный пример превосходства человека над машиной )))

Кое что запрограммировать можно, но мы все прекрасно понимаем, что это будет не точный код. Нужно вводить дельты, а они могут быть очень разными, одно дело минутки, другое дневные свечи.

H-O>delta1

O-L>delta2

|O-C|<delta3 

H-L>delta4

можно еще и хвосты сравнить... 

Совершенно верно.   Но это ещё и наглядный пример того, насколько неточным, неоднозначным, допускающим различные толкования, неопределённым является т.н. "определение" "дожи" как свечи. А если рассматривать более широкую конструкцию - паттерн - то неопределённость ещё более возрастает.
 
MathAbs(o-c)<=(h-l)*0.1
MathAbs((o+c) /2 - (h+l)/2)<=(h-l)*0.2

(h-l) >ATR*K

 0.1, 0.2, К - коэффициенты. 0.1 - определяет размер тела, 0.2 - смещение тела. К - размер тени, можно в пунктах, можно относительно ATR.

зы. для умников: вторую строку сократить умею, оставлено так для наглядности.

 


 

   Товарищи профессионалы, все же хотелось бы увидеть код, который бы описывал указанный доджи в вашем представлении.  Для примера, как бы я его описал.  

   if(Close[1]>Open[1])
     {
      body = Close[1] - Open[1];
      head = High[1] - Close[1];
      tail = Open[1] -   Low[1];
     }

   if(Close[1]<Open[1])
     {
      body = Open[1] - Close[1];
      head = High[1] -  Open[1];
      tail = Close[1] -  Low[1];
     }
   
   if(body<=0.0005 && head>body && tail>body)
   Print("Это доджи");
 
fortrader.ru:

   Товарищи профессионалы, все же хотелось бы увидеть код, который бы описывал указанный доджи в вашем представлении.  Для примера, как бы я его описал.  

Я еще на первой странице выложил код моего класса, который определяет Дожи и Высокую Волну, и который нормально работает в моем советнике.

 
Laryx:

Я еще на первой странице выложил код моего класса, который определяет Дожи и Высокую Волну, и который нормально работает в моем советнике.

Laryx спасибо
 

fortrader.ru, собственно, опознание дожи происходит в фукнции bool CDojiHWDetector::_TestOnDoji(uint uiIdx). Я проверяю, что тело дожи не превышает порога, заданного при инициализации класса.

У вас - жестко задается максимальный размер тела (тем самым вы  теряете гибкость - на евродолларе дожи получается слишком "толстой", целых пять пунктов, а на иене - наоборот, слишком "узкой", даже один иенапункт не проходит). 


Плюс вы отсеиваете бары, где тени меньше тела - на мой взгляд, спорный момент, если тени 1 пункт, тело 1 пункт - то это тоже дожи. А ваш код такую свечу не опознает. Но это уже больше вопрос теории свечного анализа, а не программирования.

 
fortrader.ru:

   Товарищи профессионалы, все же хотелось бы увидеть код, который бы описывал указанный доджи в вашем представлении.  Для примера, как бы я его описал.  

#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Blue
//--- input parameters
extern int ProcVerh=55;//минимум + процент от дипазона бара 
extern int ProcVniz=55;//максимум - процент от дипазона бара 
extern int RaznicaOP_CL=0;//разница между открытием и закрытием 
//--- buffers
double Dverh[];
double Dvniz[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(2);
   SetIndexArrow(0,67);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(1,67);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(0,Dverh);
   SetIndexBuffer(1,Dvniz);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double procent,Vverh,Vniz,Open_Close;
 
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars-1;
   for(int i=0;i<limit;i++)
   {
   Open_Close=(MathAbs(Open[i] - Close[i]))/Point;
   procent=(High[i]-Low[i])/100;
   Vverh=Low[i]+procent*ProcVerh;
   Vniz=High[i]-procent*ProcVniz;
   if (Open[i] > Vverh && Close[i] > Vverh && Open_Close <= RaznicaOP_CL){Dverh[i]=Low[i]-50*Point;}
   if (Open[i] < Vniz && Close[i] < Vniz && Open_Close <= RaznicaOP_CL){Dvniz[i]=High[i]+50*Point;}
   }
   return(0);
  }
//+------------------------------------------------------------------+