Uzun zaman önce MQL3'te doğrusal regresyon göstergeleri yazdım , 4 için yeniden yazmaya başladım, ancak çalışmıyor. Uzmanlar hatayı yazmaya veya düzeltmeye yardımcı olur.
Ve buna benzer bir tane daha: hiperbolik regresyon (hatayı ben de bulamıyorum)
//+------------------------------------------------------------------+ //| гиперболическая регрессия.mq4 | //| Copyright © 2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright " Copyright © 2008, MetaQuotes Software Corp. " #property link " http://www.metaquotes.net " //#property indicator_chart_window #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern int nn = 21 ; //---- buffers double ExtMapBuffer1 [] ; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init () { //---- indicators SetIndexStyle ( 0 , DRAW_LINE ) ; SetIndexBuffer ( 0 , ExtMapBuffer1 ) ; //---- return ( 0 ) ; } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit () { //---- //---- return ( 0 ) ; } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start () { int counted_bars = IndicatorCounted () ; //---- double barr , as , bs , cs , ds , e , f , k , LR , ExtMapBuffer1 [] ; int n , n1 ; // Индикатор Гиперболической Регресии for ( barr = 0 ; barr <= 100 ; barr ++ ){ for ( n = 1 ; n <= nn ; n ++ ){ n1 = barr + n - 1 ; as = as + 1 / n ; bs = bs + 1 / ( n * n ) ; cs = cs + Close [ n1 ] ; ds = ds + Close [ n1 ] / n ; } e = nn * bs - as * as ; f = cs * bs - ds * as ; k = nn * ds - as * cs ; f = f / e ; k = k / e ; LR = f + k / nn ; as = 0 ; bs = 0 ; cs = 0 ; ds = 0 ; ExtMapBuffer1 [ n ] = LR ; } //---- return ( 0 ) ; } //+------------------------------------------------------------------+
Aramaya bakın https://www.mql5.com/ru/code
https://forum.mql4.com/en/10446/page13
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
kvn :
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Bu doğru - bunun hakkında konuştu .
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Rosh :
Bu doğru - bunun hakkında konuştu .
kvn :
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Bu doğru - bunun hakkında konuştu .
Yetkin ha? o zaman bana nerede olduğunu söyle. ve benden kocaman bir teşekkür.
kvn :
Yetkin ha? o zaman bana nerede olduğunu söyle. ve benden kocaman bir teşekkür.
İşte bu konuda bir vagon + küçük bir araba vardı. Sadece genel terimlerle yapabilirim: Herhangi bir sayıda verilen parametre ile yaklaşık eğriden standart sapmaların toplamı için bir denklem hazırlanır. Daha sonra her parametrenin kısmi türevleri bulunur ve sıfıra eşitlenir. Elde edilen lineer denklem sisteminden gerekli tüm parametreler bulunur. Algoritma, gördüğünüz gibi, bunu yapmak için basit ve hiç de yaratıcı değil.
Roş :
Bu doğru - bunun hakkında konuştu .
kvn :
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Teşekkürler, ilginç, ama göstergede nerede hata yaptım?
Bu doğru - bunun hakkında konuştu .
Yetkin ha? o zaman bana nerede olduğunu söyle. ve benden kocaman bir teşekkür.
Söylediğiniz şey tam olarak lineer regresyon değil. LR tekniği göstergemde açıklanmıştır.
//Gösterge şu formüle göre oluşturulmuştur:LR = at+b
// burada LR, öngörülen "ortalama" kapanış fiyatıdır,
//t - zaman noktası, Pt - son n dönem için kapanış fiyatları.
//a = (n*SUM (t*Pt) - SUM(t)*SUM(Pt))/(n*SUM(t^2) - (SUM(t))^2) - regresyon doğrusu eğimi ,
//b = 1/n*(SUM(Pt) - a*SUM(t)) - yatay kayma}
Ama çalıştırırken önce yanlış verilerle geliyor (n=1-100 olduğunda), sonra n=22 ve doğru değerleri veriyor. Bir yerde küçük bir hata ve bulamıyorum.
Hatanın döngü ifadesinde olduğundan şüpheleniyorum.
//Gösterge şu formüle göre oluşturulmuştur:LR = at+b
// burada LR, öngörülen "ortalama" kapanış fiyatıdır,
//t - zaman noktası, Pt - son n dönem için kapanış fiyatları.
//a = (n*SUM (t*Pt) - SUM(t)*SUM(Pt))/(n*SUM(t^2) - (SUM(t))^2) - regresyon doğrusu eğimi ,
//b = 1/n*(SUM(Pt) - a*SUM(t)) - yatay kayma}
Ama çalıştırırken önce yanlış verilerle geliyor (n=1-100 olduğunda), sonra n=22 ve doğru değerleri veriyor. Bir yerde küçük bir hata ve bulamıyorum.
Hatanın döngü ifadesinde olduğundan şüpheleniyorum.
Wikipedia'yı sevmememe rağmen, ona lineer regresyon konusunda bir link veriyorum. Ayrıca bazı bloglarda buldum - http://cmacfm.mazoo.net/archives/000936.html
LR hakkında tartışmayacağım. PEKİ GÖSTERGE KODUNDAKİ HATA NEREDE???????
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun