Поиск закономерностей рынка - страница 114

 
Svinozavr:

По импульсному индикатору. Типа не забыл. Сейчас "дочесываю". Вот пока картинка ( евробакс 5).


Легенда такая: сам импульс отмечается на баре двумя ромбиками соотв. цвета (маленьким и большим). Просто сильный бар, не являющийся однако импульсом, - одним маленьким ромбиком (о нем потом).

Логика работы: вычисляется средний размах бара, т.е. МА по модулю (открытие - закрытие). Далее запоминается значение превышения (как только таковое случится) размаха бара над средним размахом. И вот когда некий новый бар превышает это хм... ну ладно, превышение на некий порог, то этот бар полагается за импульс. Величина превышения перезаписывается на новое. И так далее, и понеслась. Естественно, имеется некий шумовой порог размаха, иначе, сами понимаете, - куча ложных сигналов во флету.

===

Когда допричешу - хз. Может, сегодня. Может, к пн. Может, вообще... Если не "вообще", то выложу здесь же, в ветке. Сдались мне на фиг сто раз премодерирование в кодобазе и 200 раз в красную армию - рейтинги. Ежели что, то основная логика описана вся, напишите сами без проблем.

И - да! Автор оставляет за собой право частично изменить принцип работы индикатора, полностью поменять его логику или вообще отказаться от оной.


Пётр, как умел...извиняйте если не оправдал ожиданий.

#property copyright "Svinozavr"
#property indicator_chart_window // в окне инструмента
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_color2 Red  
#property indicator_color3 Green
#property indicator_color4 Red  
#property indicator_color5 Green
#property indicator_color6 Red  

// входные параметры
extern double MAperiod     = 200; 
extern double K            = 1.3;   // коэффициент умножения размаха (шумовой порог)
extern double Bord         = 0;     // превышение
              
extern bool   Fade         = false; // режим затухания
extern bool   OC.HL.range  = false; // способ расчёта размаха
extern bool   OC.HL.middle = false; // способ расчёта средней цены
extern bool   Hist         = true;

// массивы индикаторных и вспомогательных буферов
double Top[],Bot[],Sup[],Res[]; 
double up[],dn[];
// общие переменные 
double k0,k1,period; // коэфф. EMA и производный период
double brd; 
int    History=0; // 0- все бары

// инициализация
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() 
{ 
  brd=Bord*Point;
  if(MAperiod>1)
  {
    k0=2/(1+MAperiod); 
    period=MAperiod;
  }
  else 
  { 
    k0=MAperiod; 
    period=(2-MAperiod)/MAperiod;
  }
  k1=1-k0;
   
  if(Hist) 
  {
    int stl=3,sw=1;
  } 
  else 
  {
    stl=0;sw=2;
  }
  SetIndexBuffer(0,Top); // индикатор
  SetIndexStyle(0,DRAW_LINE);
  SetIndexEmptyValue(0,0.0);

  SetIndexBuffer(1,Bot); // вспомогательный буфер
  SetIndexStyle(1,DRAW_LINE);
  SetIndexEmptyValue(1,0.0);

  SetIndexBuffer(2,Sup); // вспомогательный буфер
  SetIndexStyle(2,stl,0,sw);
  SetIndexEmptyValue(2,0.0);
  SetIndexArrow(2,117);

  SetIndexBuffer(3,Res); // вспомогательный буфер
  SetIndexStyle(3,stl,0,sw);
  SetIndexEmptyValue(3,0.0);
  SetIndexArrow(3,117);
  
  SetIndexBuffer(4,up); // вспомогательный буфер
  SetIndexStyle(4,stl,0,sw+1);
  SetIndexEmptyValue(4,0.0);
  SetIndexArrow(4,117);
  
  SetIndexBuffer(5,dn); // вспомогательный буфер
  SetIndexStyle(5,stl,0,sw+1);
  SetIndexEmptyValue(5,0.0);
  SetIndexArrow(5,117);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() 
{
  int limit=Bars-IndicatorCounted()-1; 
  if(limit>1) 
  {
    limit=Bars-1;
    ArrayInitialize(Top,0.0);
    ArrayInitialize(Bot,0.0);
    ArrayInitialize(Sup,0.0);
    ArrayInitialize(Res,0.0);
  }
  if(History!=0 && limit>History) 
  {
    limit=History-1; // кол-во пересчетов по истории
  }  
  // цикл пересчета
  for(int i=limit; i>=0; i--) 
  { 
    // средняя цена
    if(OC.HL.middle)
    {
      double mid=(High[i]+Low[i])/2;
    }  
    else 
    {
      mid=(Close[i]+Open[i])/2;
    }  
    
    // размах
    if(OC.HL.range) 
    {
      double rng=High[i]-Low[i];
    }  
    else 
    {
      rng=MathAbs(Close[i]-Open[i]);
    }  
    
    // EMA
    static double dt,db;
    double ma0; 
    static double ma1;
    if(i==limit && i>1) 
    {
      ma0=rng; // начальное значение
      dt=0;db=0;
    }
    else 
    { // основной расчет
      if(rng>ma1 && Fade) 
      {
        ma0=rng;
      }  
      else 
      {
        ma0=k0*rng+k1*ma1;
      }  
    }
    if(i>0) 
    {
      ma1=ma0;
    }  
    
    // канал
    double diff=K*ma0;
    Top[i]=mid+diff;
    Bot[i]=mid-diff;
    
    // тренд
    static bool trend;
    if(i>0) 
    {
      double difft=Close[i]-Top[i];
      double diffb=Close[i]-Bot[i];
      if(difft>0) 
      {
        trend=1; 
        dt=difft;
        if(Hist) 
        {
          Sup[i]=(Close[i]+Open[i])/2;
          if(difft>=-db+brd) 
          {
            up[i]=Top[i];
          }  
        }
      }
      if(diffb<0) 
      {
        trend=0; 
        db=diffb;
        if(Hist) 
        {
          Res[i]=(Close[i]+Open[i])/2;
          if(diffb<=-dt-brd) 
          {
            dn[i]=Bot[i];
          }  
        }
      }
    }
    if(!Hist && i>0) 
    {
      if(trend) 
      {
        Sup[i]=Bot[i];
      }   
      else 
      {
        Res[i]=Top[i];
      }  
    }
//  Sup[i]=Sup[i+1]; Res[i]=Res[i+1];
  }
}
 

Некоторые участники https://www.mql5.com/ru/forum/133986/page5 предлагают от поиска закономерностей рынка перейти к изучению свойств рынка, которые являются неоспоримыми, выделим их:

1. Колебательные свойства рынка;

2. Любой тренд корректируется. это свойство - неоспоримое. Но никак не закономерность, так как закономаерность предполагает точные данные. https://www.mql5.com/ru/forum/133986/page7

3. Наличие, в изменениях цены, закономерной и случайной составляющей https://www.mql5.com/ru/forum/133986/page5

4. Различное проявление закономерностей на разных ТФ (пока спорно) https://www.mql5.com/ru/forum/133986/page11

5. Наличие "шума" в котировках, но некоторые уверены, что даже единичный тик содержит полезную информацию https://www.mql5.com/ru/forum/133986/page13

6. Имеются пары, составляющие сектор рынка и задающие тон движению на данный момент https://www.mql5.com/ru/forum/133986/page16

7. Наличие "справедливой" цены (выставляется центробанком на текущие сутки?), к которой стремиться текущая цена https://www.mql5.com/ru/forum/133986/page19

8. Фиксинг (золота, напр., дважды в день) https://www.mql5.com/ru/forum/133986/page20

9. Нужно воспринимать рынок, как дикого зверя, знать его повадки, изучать следы, устраивать засады, расставлять капканы, прикармливать и стрелять метко! https://www.mql5.com/ru/forum/133986/page24

10. Рынок - инерцционен. Суть успешной торговли - это понять, что сейчас происходит и поучаствовать. ТА - инструмент, который рассказывает - где вы есть. https://www.mql5.com/ru/forum/133986/page30


Предлагайте еще глобальные свойства рынка, чтобы дополнить список.

Будем изучать последствия от использования в ТС глобальных свойств рынка и какой потенциальный вред могут нанести торговле другие закономерности, сопровождающие свойства рынка. Например, если следовать этим двум свойствам рынка, следует всегда торговать в противотренде, в надежде на возврат или частичный возврат (коррекция). Но, что делать, если эти свойства рынка будут нарушаться очень часто? Насколько это обстоятельство может нанести вред глобальной стратегии? Сможет-ли коррекция покрыть часть потерь?

 
yosuf:

Некоторые участники https://www.mql5.com/ru/forum/133986/page5 предлагают от поиска закономерностей рынка перейти к изучению свойств рынка, которые являются неоспоримыми, выделим их:

1. Колебательные свойства рынка;

2. Любой тренд корректируется. это свойство - неоспоримое. Но никак не закономерность, так как закономаерность предполагает точные данные. https://www.mql5.com/ru/forum/133986/page7

3. Наличие, в изменениях цены, закономерной и случайной составляющей https://www.mql5.com/ru/forum/133986/page5

4. Различное проявление закономерностей на разных ТФ (пока спорно) https://www.mql5.com/ru/forum/133986/page11

5. Наличие "шума" в котировках, но некоторые уверены, что даже единичный тик содержит полезную информацию https://www.mql5.com/ru/forum/133986/page13

6. Имеются пары, составляющие сектор рынка и задающие тон движению на данный момент https://www.mql5.com/ru/forum/133986/page16

7. Наличие "справедливой" цены (выставляется центробанком на текущие сутки?), к которой стремиться текущая цена https://www.mql5.com/ru/forum/133986/page19

8. Фиксинг (золота, напр., дважды в день) https://www.mql5.com/ru/forum/133986/page20

9. Нужно воспринимать рынок, как дикого зверя, знать его повадки, изучать следы, устраивать засады, расставлять капканы, прикармливать и стрелять метко! https://www.mql5.com/ru/forum/133986/page24

10. Рынок - инерцционен. Суть успешной торговли - это понять, что сейчас происходит и поучаствовать. ТА - инструмент, который рассказывает - где вы есть. https://www.mql5.com/ru/forum/133986/page30


Предлагайте еще глобальные свойства рынка, чтобы дополнить список.

Будем изучать последствия от использования в ТС глобальных свойств рынка и какой потенциальный вред могут нанести торговле другие закономерности, сопровождающие свойства рынка. Например, если следовать этим двум свойствам рынка, следует всегда торговать в противотренде, в надежде на возврат или частичный возврат (коррекция). Но, что делать, если эти свойства рынка будут нарушаться очень часто? Насколько это обстоятельство может нанести вред глобальной стратегии? Сможет-ли коррекция покрыть часть потерь?


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

1) импульсное движение (резкое движение)

2) усредненое движение

3) замедленное движение (флетовое)

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

 
yosuf:
///

10. Рынок - инерцционен.....


Предлагайте еще глобальные свойства рынка, чтобы дополнить список.

....


Для получения прибыли уже достаточно.
 
закономерностей 2 всего - возврат и самоусиление. Остальное фильтры)
 
Avals:
закономерностей 2 всего - возврат и самоусиление. Остальное фильтры)
Разъясните, пожалуйста, понятие "самоусиление".
 
Avals:
закономерностей 2 всего - возврат и самоусиление. Остальное фильтры)

Хорошая мысль с самоусилением. В качестве коэффициента самоусиления предлагаю коэффициент S в следующем уравнении и посмотреть на его поведение в процессе изменения цены P:

P =S*O^a*H^b*L^c*C^d

Используя данные по OHLC Д1 за 15 дней, получил значения коэффициентов, которые приводил ранее здесь https://www.mql5.com/ru/forum/140329/page43 .

https://c.mql5.com/mql4/forum/2012/11/f1.jpg

Любопытным оказалось поведение коэффициента усиления S, вот например, как ведет себя этот коэффициент, после введения 14 -ой точки, т.е. последняя 15-я точка еще не введена, что явно указывает на возможный разворот:


Введение 15-й точки не оставляет сомнений в развороте, поскольку коэффициент усиления резко увеличивается в сотни раз:


Таким образом, благодаря подсказке Avals, видимо, нашел мощный предсказатель наступления разворота. Но, этот факт должен быть несколько раз перепроверен. Благодарю, Вас, господин Avals и предлагаю довести дело до создания индикатора.

 
yosuf: Разъясните, пожалуйста, понятие "самоусиление".
Положительная обратная связь. Смотришь на растущую цену, тоже покупаешь, и еще больше гонишь ее вверх.
 

Любопытные вещи получаются если выразить среднее значение цены текущего бара Р через OHLC следующим образом и исследовать поведение коэффициентов уравнения:

P =S*O^a*H^b*L^c*C^d

Найденный способ определения коэффициентов позволяет добиться полного (идеального), без остатков, совпадения фактических и расчетных значений цены, как видно из графика:

Вот как изменяются коэффициенты уравнения при этом:

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

Примечательно, что, сумма коэффициентов уравнения, так же и коэффициента S, почти всегда равна единице, а последний выброс может оказаться предвестником движения вверх:


 
...

Таким образом, благодаря подсказке Avals, видимо, нашел мощный предсказатель наступления разворота. Но, этот факт должен быть несколько раз перепроверен. Благодарю, Вас, господин Avals и предлагаю довести дело до создания индикатора.



Юсуф, предсказатели разворота ищут новички на начальном этапе. А когда начинают понимать немного, бросают поиски и торгуют продолжение.
Причина обращения: