Дурное дело не хитрое, но отчего же к машке, а не к цене?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как посчитать касательную к кривой?
Nikolay Kositsin, 2012.10.15 18:53
Всё дело в том, что любая кривая индикатора на графике - это ломанная, так что мы имеем зачастую просто угол с вершиной в точке касания. И стало быть в чистом виде касательной построить не получится! Если только не произвести какую-нибудь криволинейную интерполяцию в точке касания. Проще постоить ось симметрии угла из трех, рядом стоящих точек кривой и потом провести перпендикуляр к этой оси симметрии через точку касания. Формализация этого дела не так чтобы и шибко сложная!// Поиск касательной к цене 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; }
нашел хороший пост:
Можно совсем просто - по двум соседним барам, просто их соединить прямой линией. А с биссектрисой, да еще с перпендикуляром к ней - думать надо.
Можно совсем просто - по двум соседним барам, просто их соединить прямой линией. А с биссектрисой, да еще с перпендикуляром к ней - думать надо.
"... Дана исходная точка, вторая должна лежать на кривой таким образом, чтобы линия касалась кривой только в этой точке на заданном диапазоне баров ...".
Сдается мне, что автор темы не вполне четко понимает, что ему нужно.
"... Дана исходная точка, вторая должна лежать на кривой таким образом, чтобы линия касалась кривой только в этой точке на заданном диапазоне баров ...".
Изначально не было такого уточняющего условия
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как на mql написать касательную к машке (или любому другому сглаживающему индикатору)?
Собственно, тема по этим постам: #20, #23.