Можно ли создать плагин по идеальной(безошибочной) идентификации линий поддержек и сопротивлений на чартах? - страница 2

 
223231:
Программирование тут совершенно не при чем. Для начала нужно разработать олгоритм, то есть формализоавать вашу логику. Обьясните другому человеку(без рисунков) и себе, по каким критериям строится эта линия. Программирование это всего лиш перенос логики в комп, сначало нужно придумать по каким критериям строится линия.Например: как ты определяеш что на улице зима? по косвенным признакам, лежит снег, люди в пуховике и шапках, если шапок нет, то тепло, но не все люди в пуховиках, а какой то процент. И с твоей задачей тоже самое.
    Линия резистенса строится по самым верхним(максимальным) значениям данного конкретного коридора.
    Но я же не пропишу, что мне нужны самые верхние значения? )
    (т.к. в данном случае они не являются верхними с точки зрения математики(цены в данный момент по отношению к прошлому моменту в коридоре).)
    Собственно поэтому и спрашиваю, какие есть техники(именно с точки зрения программирования) для вычисления подобных вещей? 
 
Mike_Kharkov:
    Линия резистенса строится по самым верхним(максимальным) значениям данного конкретного коридора.
    Но я же не пропишу, что мне нужны самые верхние значения? )
    (т.к. в данном случае они не являются верхними с точки зрения математики(цены в данный момент по отношению к прошлому моменту в коридоре).)
    Собственно поэтому и спрашиваю, какие есть техники(именно с точки зрения программирования) для вычисления подобных вещей? 
Вы до конца дочитали ту ветку, откуда взяли этот скрин? Что для себя поняли?
 
Mike_Kharkov:
Всем привет.
Сам не являюсь программистом(в этом смысле я аматор) и сейчас меня заинтересовал вопрос написания кода для определения саппортов , резистенсов.
Вопрос:
Есть ли на сегодняшний день какие то готовые решения в этом смысле, которые бы идеально(безошибочно) распознавали где, что и по чем?
(определение ценовых коридоров и т.д.)
Если таких решений нет - то хотелось бы понять можно ли написать самому что то подобное?
(если да - то как? Какие идеи(в плане программирования) можно использовать для решения данной задачи?)

P.S. Буду благодарен за советы..

Если на исторических данных, то ZigZag. Проводим линии поддержки-сопротивлений  в виде ломанных линий для экстремумов ZigZag-а, т.е. одну ломанную для максимумов, вторую для минимумов и получаем идеальную картинку.

Если не на исторических данных, то по поговорке: знал бы прикуп, жил бы в Сочи.

 
    Tapochun:
Вы до конца дочитали ту ветку, откуда взяли этот скрин? Что для себя поняли?
   Ветку дочитал - ниче не понял. )
   (скрин взял от туда же.)
   Щас справку изучаю..
 
Mike_Kharkov:
    Tapochun:
   Ветку дочитал - ниче не понял. )
   (скрин взял от туда же.)
   Щас справку изучаю..

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

Если же Вам нужно, чтобы строились линии только по максимумам/минимумам (скажем за день) - тут по-проще. Определяете максимум/минимум дня (посредством того же фрактала) - первая точка. Ждете образования (для линии по максимумам) последующего максимума( с фракталом ) - строите трендовую линию. По минимумам - точно также. Если обновился максимум/минимум дня/линия пробита - удаляете линию. И опять заново.

 
Mike_Kharkov:
    Линия резистенса строится по самым верхним(максимальным) значениям данного конкретного коридора.
    Но я же не пропишу, что мне нужны самые верхние значения? )
    (т.к. в данном случае они не являются верхними с точки зрения математики(цены в данный момент по отношению к прошлому моменту в коридоре).)
    Собственно поэтому и спрашиваю, какие есть техники(именно с точки зрения программирования) для вычисления подобных вещей? 
На самом деле проблема не проста, так просто ее не решить, надо много думать. Одним из вариантов будет Такой: Находим локальные экстремумы (чтобы экстремум выделялся на сколько-то процентов из общего графика), минимум для построения нужно 2 таких экстремума. Брать точные числовые значения нельзя, значит нужно задать диапазон отклонения от по которому будет рисоваться линия, Например максимум на 1,5678 +/-10%. если появляется третья точка, то диапазон отклонения увеличивается и идет проверка, можно ли соединить 3 точки с заданным диапазоном отклонения прямой линией, если можно, соединяем, если нет, значит был пробой линии поддержки/сопротивления. Алгоритм примерно так должен выглядеть. Это очень условно, я как пример написал ,в какую сторону мыслить.
 
Mike_Kharkov:
    Линия резистенса строится по самым верхним(максимальным) значениям данного конкретного коридора.
    Но я же не пропишу, что мне нужны самые верхние значения? )
    (т.к. в данном случае они не являются верхними с точки зрения математики(цены в данный момент по отношению к прошлому моменту в коридоре).)
    Собственно поэтому и спрашиваю, какие есть техники(именно с точки зрения программирования) для вычисления подобных вещей? 


Это так - пока вы просто интуитивно рассуждаете. Когда дойдет до реального написания алгоритма - увидите, что не так все просто. Строится сперва "скелет тренда" (что-то вроде зигзага), по нему определяются точки, через которые идут трендлинии, и далее - они могут отображаться.

У меня есть индикатор трендлиний, но здесь не переносят, когда кто-то что-то продает.

 
Mike_Kharkov:
  ...
   Например я даже в плане идеи не могу себе представить, что можно придумать, что бы реализовать отсутствие недочетов(оптикания) линии резистенса
   по следующему скрину:
  

   Тоесть каким образом программа должна понимать(как это закодить. Хотя пока что я даже азов не знаю в этом плане.), что все те 3 точки являются самыми верхними по отношению к данному коридору и т.п.?
...

Шаблоны рвите.

Линия сопротивления/поддержки на самом деле уровень, следовательно, обладает шириной.

upd для канала я бы назвал это шириной сопровождения, как то осмысленней.

Линия тренда на самом деле вектор, показывающий направление. В зависимости от угла меняется скорость.

Для вашего частного случая например так: если цена после выхода за линию за х баров не обновила предыдущие максимумы и в течении у баров не пошла выше z%, тогда ... (пирамидим дальше, потому что скорость движения маленькая и толпа всё равно будет покупать).

ps не принимать к действию буквально. Вариантов море. Можно подстраховаться свечными паттернами. Или классическими фигурами ТА. Или новолунием. На свой вкус.

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

Единственное, что пока вышло это получить данные необходимых цен:
//+------------------------------------------------------------------+
//|                                       My_First_Indicator.mq5.mq5 |
//|                                                     Mike_Kharkov |
//|                                https://www.fl.ru/users/Yamaradg/ |
//+------------------------------------------------------------------+
#property copyright "Mike_Kharkov"
#property link      "https://www.fl.ru/users/Yamaradg/"
#property version   "1.00"
#property indicator_chart_window

int start_count =  0;
int total_count = 10;
double  open_array[];  // цены открытия
double  close_array[];  // цены открытия

/*  Попытка хоть что то создать в плане рисования рисования    */

double ZigZagHighs[];  // верхние переломы зигзага
double  ZigZagLows[];  // нижние переломы зигзага

/* Попытка хоть что то создать для рисования end     */

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
   int copy_open =  CopyOpen(_Symbol, PERIOD_CURRENT, start_count, total_count, open_array);
   int copy_close = CopyClose(_Symbol, PERIOD_CURRENT, start_count, total_count, close_array);
   int total = 10;
   
   
   
   for(int i=9;i>=0;i--)
     {
      Print("Цена открытия номер ", i, " равен: " ,open_array[i]);
      Print("Цена закрытия номер ", i, " равен: " ,close_array[i]);
     } 
     
     /*  Попытка хоть что то создать в плане рисования    */

     SetIndexBuffer(1, ZigZagHighs, INDICATOR_DATA);
     SetIndexBuffer(2, ZigZagLows, INDICATOR_DATA);
     
  bool  PlotIndexSetInteger(
      int  DRAW_ZIGZAG,        // индекс графического стиля
      int  STYLE_SOLID,           // идентификатор свойства
      int           // -----------  ЗДЕСЬ ВООБЩЕ НЕ ПОЙМУ ЧТО ПРОПИСЫВАТЬ НЕОБХОДИМО ??   ----------------- // 
     );

     /*  Попытка хоть что то создать для рисования end   */
     
     
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+


//+------------------------------------------------------------------+  
P.S. По справке понять вообще ничего нельзя - горы лишнего кода, невозможно разобраться, что там к чему..
 
Mike_Kharkov:
А может кто нибудь привести пример(самый примитивный, что бы не было ничего лишнего в коде) как нарисовать зиг заг допустим по ценам открытия и закрытия(или хай лоу. Это не важно.) ?
Пока что вообще не могу понять как отрисовывать хоть что нибудь. )

Единственное, что пока вышло это получить данные необходимых цен:
P.S. По справке понять вообще ничего нельзя - горы лишнего кода, невозможно разобраться, что там к чему..

Можете объяснить принцип построения такого индикатора?