Как на mql написать касательную к машке?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
multiplicator
2333
multiplicator  

Как на mql написать касательную к машке (или любому другому сглаживающему индикатору)?

Собственно, тема по этим постам: , .

Алексей Тарабанов
9769
Алексей Тарабанов  
multiplicator:

Как на mql написать касательную к машке?

Собственно, тема по этим постам: , .

Дурное дело не хитрое, но отчего же к машке, а не к цене? 

Igor Makanu
9542
Igor Makanu  
поиском по кодобазе "дивергенция" там должны быть примеры как к индикаторам разные линии, раньше часто были такие индикаторы
multiplicator
2333
multiplicator  
Алексей Тарабанов:

Дурное дело не хитрое, но отчего же к машке, а не к цене? 

а зачем к цене? что за глупость?)
multiplicator
2333
multiplicator  
нашел хороший пост:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как посчитать касательную к кривой?

Nikolay Kositsin, 2012.10.15 18:53

Всё дело в том, что любая кривая индикатора на графике - это ломанная, так что мы имеем зачастую просто угол с вершиной в точке касания. И стало быть в чистом виде касательной построить не получится! Если только не произвести какую-нибудь криволинейную интерполяцию в точке касания. Проще постоить ось симметрии угла из трех, рядом стоящих точек кривой и потом провести перпендикуляр к этой оси симметрии через точку касания. Формализация этого дела не так чтобы и шибко сложная!

Алексей Тарабанов
9769
Алексей Тарабанов  
// Поиск касательной к цене
void fTangent(string Name                    // Имя касательной
             ,bool Envelope                  // Верхняя огибающая
             ,int Bar1,double Price1         // Точка начала
             ,int Bar2                       // Начать поиск
             ,int Bar3                       // Закончить поиск
             ,int& BarM,double& PriceM       // Точка касания
             ,double& SpeedM){               // Наклон касательной
   BarM=LastBar-1;
   PriceM=0;
   SpeedM=0;
   if( Bar3>=Bar2
    || Bar3<LastBar
    || Bar2<LastBar
    || Bar2>Bar1+1
    || Price1<Zero ){
      Print("***   "+Name+" - параметры: "
                         +DoubleToStr(Price1,Digits)+" ("+Bar1+"/"+TimeToStr(Time[Bar1])
                                        +"), "+Bar2+"/"+TimeToStr(Time[Bar2])
                                        +"..."+Bar3+"/"+TimeToStr(Time[Bar3]));
      return;
   }
   double Price2, Speed;
   if( Envelope ) SpeedM=-Infinity; else SpeedM=Infinity;
   while( Bar2>Bar3 ){
      Bar2--;                                // Возможная точка касания.
      if( Envelope ) Price2=High[Bar2]; else Price2=Low[Bar2];
      Speed=fSpeed(" Tangent",Bar1,Price1,Bar2,Price2);
      if( ( Envelope && Speed>=SpeedM )
       || (!Envelope && SpeedM>=Speed ) ){  // Локальная касательная.
         BarM=Bar2;
         PriceM=Price2;
         SpeedM=Speed;
   }  }
   return;
}
Dmitry Fedoseev
56827
Dmitry Fedoseev  
multiplicator:
нашел хороший пост:


Можно совсем просто - по двум соседним барам, просто их соединить прямой линией. А с биссектрисой, да еще с перпендикуляром к ней - думать надо. 

Алексей Тарабанов
9769
Алексей Тарабанов  
Dmitry Fedoseev:

Можно совсем просто - по двум соседним барам, просто их соединить прямой линией. А с биссектрисой, да еще с перпендикуляром к ней - думать надо. 

"... Дана исходная точка, вторая должна лежать на кривой таким образом, чтобы линия касалась кривой только в этой точке на заданном диапазоне баров ...". 

Алексей Тарабанов
9769
Алексей Тарабанов  
Исходная точка Bar1, Price1. Диапазон баров Bar2...Bar3. 
Georgiy Merts
9182
Georgiy Merts  

Сдается мне, что автор темы не вполне четко понимает, что ему нужно.

Dmitry Fedoseev
56827
Dmitry Fedoseev  
Алексей Тарабанов:

"... Дана исходная точка, вторая должна лежать на кривой таким образом, чтобы линия касалась кривой только в этой точке на заданном диапазоне баров ...". 

Изначально не было такого уточняющего условия

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий