Зона безопасности Элдера - страница 2

 
Rosh:
juggernaut:
Mike456:
Я могу помочь. Пиши 168644101
Я ведь не для себя стараюсь, а для всех=) Мне коммерческие предложения не интересны

Я кажется понял о каком индикаторе идет речь. Надо заново прочитать то место в книге на всякий случай. Ничего сложного нет, как смогу - выложу.
Спасибо большое! Хотя бы за понимание. Ждем индикатор=)
 
juggernaut писал (а):
Vita писал (а):
juggernaut писал (а):

Здесь важны слова не тренд растет, а смысл... кто читал поймет. ..,
Пожалуйста помогите!!!

Я не читал Элдера. Излагайте смысл. Полагаю, что будет замечетельно, если индикатор будет указывать "Недельный тренд растет (по Элдеру)".
??? Вы чего все тупите? А? Трейдеры блин... У вас чего рук и глаз нет? Откройте график и посмотрите какой тренд... Если тренд растет, то пользуйтес нижней линией для установки стопов, если падает - то верхней. Не форум, а придеральщики к словам одни

Когда я вижу, что тренд растет, мои руки и глаза говорят мне - "разворачивайся!" Вы же пользуетесь нижней линией для установки стопов по Элдеру. Каждому трейдеру своя стратегия. Хотите получить помощь - излагайте.
Вы видите смысл прорисовки этих линий без указания каков тренд?
 
Оказывается, книгу я отдал почитать болше года назад, но по-моему это выглядит так:

//+------------------------------------------------------------------+
//|                                                 SrcurityZone.mq4 |
//|                                                             Rosh |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "https://www.metaquotes.net/"
 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DarkBlue
#property indicator_color2 Red
//---- input parameters
extern int       N=10;
extern double    K=3.0;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double UpBreak[];
double DownBreak[];
double Nup[];
double Ndown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(6);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexBuffer(2,UpBreak);
   SetIndexBuffer(3,DownBreak);
   SetIndexBuffer(4,Nup);
   SetIndexBuffer(5,Ndown);
   SetIndexDrawBegin(0,N+1);
   SetIndexDrawBegin(1,N+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   int i,limit;
   double Up,Down;
   double countUp,countDown;
   if (counted_bars==0) limit=Bars-1;
   if (counted_bars>0) limit=Bars-counted_bars;
   limit--;
   for (i=limit;i>=0;i--)
      {
      if (Low[i]<Low[i+1]) 
         {
         Down=Low[i+1]-Low[i];
         Ndown[i]=1.0;
         }
      else 
         {
         Down=0.0;
         Ndown[i]=0.0;         
         }
      if (High[i]>High[i+1]) 
         {
         Up=High[i]-High[i+1];
         Nup[i]=1.0;
         }
      else 
         {
         Up=0.0;
         Nup[i]=0.0;
         }
      UpBreak[i]=Up;
      DownBreak[i]=Down;            
      }
   for (i=limit;i>=0;i--)
      {
      countUp=iMAOnArray(Nup,0,N,0,MODE_SMA,i+1)*N;
      countDown=iMAOnArray(Ndown,0,N,0,MODE_SMA,i+1)*N;
      if (countUp>0) ExtMapBuffer1[i]=Close[i+1]+K*iMAOnArray(UpBreak,0,N,0,MODE_SMA,i+1)*N/countUp;
      else ExtMapBuffer1[i]=Close[i+1];
      if (countDown>0) ExtMapBuffer2[i]=Close[i+1]-K*iMAOnArray(DownBreak,0,N,0,MODE_SMA,i+1)*N/countDown;
      else ExtMapBuffer2[i]=Close[i+1];
      }      
//----
   return(0);
  }
//+------------------------------------------------------------------+


 
Спасибо огромное! Браво, Rosh!!!
 
Rosh писал (а):
Оказывается, книгу я отдал почитать болше года назад, но по-моему это выглядит так:
При всём уважении, но на мой взгляд это не может выглядеть так. Очевидным образом нарушается условие: "Если сегодняшний минимум ниже вчерашнего, не переносите приказ ниже, чем вчера, так как при длинных позициях мы можем перемещать защитный стоп-приказ только вверох и ни в коем случае вниз.", а также нарушается логика Элдера - ставить стоп лосы ниже минимума предыдущего дня на величину шума, умноженную на подбирамый по вкусу коэффициент. Взгляните на вашу картинку, свеча от 28 ноября, у неё минимум ниже 1.3130, а стоплосс на следующий день - выше.
 
Vita писал (а):
Rosh писал (а):
Оказывается, книгу я отдал почитать болше года назад, но по-моему это выглядит так:
При всём уважении, но на мой взгляд это не может выглядеть так. Очевидным образом нарушается условие: "Если сегодняшний минимум ниже вчерашнего, не переносите приказ ниже, чем вчера, так как при длинных позициях мы можем перемещать защитный стоп-приказ только вверох и ни в коем случае вниз.", а также нарушается логика Элдера - ставить стоп лосы ниже минимума предыдущего дня на величину шума, умноженную на подбирамый по вкусу коэффициент. Взгляните на вашу картинку, свеча от 28 ноября, у неё минимум ниже 1.3130, а стоплосс на следующий день - выше.

А как оно еще должно выглядеть? В соответствии с вашим описание  - в виде красно-синего икса во весь экран:)
 
В коде я использовал отступ от цены закрытия предыдущего дня, но можно заменить на экстремумы , то есть High и Low предыдущего дня.

 if (countUp>0) ExtMapBuffer1[i]=High[i+1]+K*iMAOnArray(UpBreak,0,N,0,MODE_SMA,i+1)*N/countUp;
      else ExtMapBuffer1[i]=High[i+1];
      if (countDown>0) ExtMapBuffer2[i]=Low[i+1]-K*iMAOnArray(DownBreak,0,N,0,MODE_SMA,i+1)*N/countDown;
      else ExtMapBuffer2[i]=Low[i+1];
Книги у меня не оказалось, а читать с экрана я не люблю, поэтому оттолкнулся от цен закрытия. Как правильно - выбирайте сами.
 
Integer писал (а):
Vita писал (а):
Rosh писал (а):
Оказывается, книгу я отдал почитать болше года назад, но по-моему это выглядит так:
При всём уважении, но на мой взгляд это не может выглядеть так. Очевидным образом нарушается условие: "Если сегодняшний минимум ниже вчерашнего, не переносите приказ ниже, чем вчера, так как при длинных позициях мы можем перемещать защитный стоп-приказ только вверох и ни в коем случае вниз.", а также нарушается логика Элдера - ставить стоп лосы ниже минимума предыдущего дня на величину шума, умноженную на подбирамый по вкусу коэффициент. Взгляните на вашу картинку, свеча от 28 ноября, у неё минимум ниже 1.3130, а стоплосс на следующий день - выше.

А как оно еще должно выглядеть? В соответствии с вашим описание - в виде красно-синего икса во весь экран:)

Именно так, "в виде красно-синего икса во весь экран". Однако я подозреваю, что Элдер - хитрая лиса, и он неспроста ввёл условие о тренде, о котором я так интересовался. ;)

  Для меня также забавно, что одно из значений juggernaut - это идея, которой слепо поклоняются, иногда с трагическими последствиями. Нахожу символичным, что juggernaut с наскоку не получил даже красно-синего икса во весь экран.
 
Rosh писал (а):
В коде я использовал отступ от цены закрытия предыдущего дня, но можно заменить на экстремумы , то есть High и Low предыдущего дня.

 if (countUp>0) ExtMapBuffer1[i]=High[i+1]+K*iMAOnArray(UpBreak,0,N,0,MODE_SMA,i+1)*N/countUp;
      else ExtMapBuffer1[i]=High[i+1];
      if (countDown>0) ExtMapBuffer2[i]=Low[i+1]-K*iMAOnArray(DownBreak,0,N,0,MODE_SMA,i+1)*N/countDown;
      else ExtMapBuffer2[i]=Low[i+1];
Книги у меня не оказалось, а читать с экрана я не люблю, поэтому оттолкнулся от цен закрытия. Как правильно - выбирайте сами.

Это снова не Элдер. Дело не в Close, дело в откате стопов - они не должны понижаться при повышательном тренде. И наоборот, естественно.
 
Vita:
Rosh:
В коде я использовал отступ от цены закрытия предыдущего дня, но можно заменить на экстремумы , то есть High и Low предыдущего дня.

 if (countUp>0) ExtMapBuffer1[i]=High[i+1]+K*iMAOnArray(UpBreak,0,N,0,MODE_SMA,i+1)*N/countUp;
      else ExtMapBuffer1[i]=High[i+1];
      if (countDown>0) ExtMapBuffer2[i]=Low[i+1]-K*iMAOnArray(DownBreak,0,N,0,MODE_SMA,i+1)*N/countDown;
      else ExtMapBuffer2[i]=Low[i+1];
Книги у меня не оказалось, а читать с экрана я не люблю, поэтому оттолкнулся от цен закрытия. Как правильно - выбирайте сами.

Это снова не Элдер. Дело не в Close, дело в откате стопов - они не должны понижаться при повышательном тренде. И наоборот, естественно.

Это уж Вы сами. Можете ввести условие, что уровень стопа (красная и/или синяя линия) не ухудшаются до его пробития (закрытия за уровнем стопа). Это и будет Ваше условие тренда. Я же показал расчет в чистом виде, без o всякиx дополнительныx условий if.
Причина обращения: