Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 14

 
Alexey Burnakov :
Tamam, düşünebilirsiniz. Örneğin, her yinelemede, sinir ağının hedefin tahminden sapmasına bağlı olarak standart hata geri yayılımı gerçekleştirmediğini, ancak ölçeklerin önceki versiyonunda gerçek ticaretin idealden bu şekilde farklı olduğuna dair veriler aldığını hayal edin. ve bu kadar çok nokta. Ve bu bilgilere dayanarak ağırlıkları günceller. Yani, infa makineye paralel bir akışta gitmelidir. Belki de yapılması gerçektir.

Neden kiloya ihtiyacın var? Neden onlardan bahsediyorsun?

Önceki ağırlıkların gerekli olduğunu anlıyorum, şimdi hiçbir şey anlamadığımı anlıyorum)

 
mytarmailS :

Neden kiloya ihtiyacın var? Neden onlardan bahsediyorsun?

Önceki ağırlıkların gerekli olduğunu anlıyorum, şimdi hiçbir şey anlamadığımı anlıyorum)

Eh, öyle görünüyor

Ağırlıklara ihtiyacımız yok. Ben sadece SİZE açıklığa kavuşturmak için onlardan bahsettim. Sistemin önceki ölçeklerde nasıl işlem gördüğünü bilmemiz gerekiyor. Bazı entegre biçimde ticaretin sonucuna ihtiyacımız var. Herşey.

Ağırlıklar algoritma tarafından güncellenir.

 

Burada basit bir fonksiyon çalışıyor. Denemesi daha zor bir şey. Hâlâ ayırt edilmesi gerekiyor, sıçrama bu.

library(neuralnet)


y <- as.data.frame(matrix(runif(n = 10000, min = -15, max = 15), ncol = 2))

y$V3 <- runif(n = 5000,  min = -15, max = 15)

y$V4 <- runif(n = 5000,  min = -15, max = 15)

y$V5 <- runif(n = 5000,  min = -15, max = 15)

y$V6 <- runif(n = 5000,  min = -15, max = 15)

y$V7 <- runif(n = 5000,  min = -15, max = 15)

y$V8 <- y$V1 ^ 2 + y$V2 ^ 2

colnames(y) <- c('input_1', 'input_2', 'noise_1', 'noise_2', 'noise_3', 'noise_4', 'noise_5', 'output')


f_f <- function(x, y){

1/2*(y-x)^2

}


print(

nn_model <- neuralnet(formula = output ~ input_1 + input_2 + noise_1

, data = y

, hidden = 1

, threshold = 0.01

, stepmax = 1e+05

, rep = 100

, startweights = NULL

, learningrate.limit = NULL

, learningrate.factor = list(minus = 0.5, plus = 1.2)

, learningrate=NULL

, lifesign = "none"

, lifesign.step = 10

, algorithm = "rprop+"

, err.fct = f_f #"sse"

, act.fct = "logistic"

, linear.output = F

, exclude = NULL

, constant.weights = NULL

, likelihood = FALSE

)

)

 

f_f <- fonksiyon (x, y) 1/2*(yx)^2

f_f - ağ için hatayı sayar, değil mi?

x, değerin ne olması gerektiğidir (ideal eğri)

y - aslında böyle (gerçek eğri)

aralarındaki fark hatadır

ama nasıl veri göndereceğimi anlamıyorum, öncekine göre bir ticaret vektörüne ihtiyacım var. mumlar ve bu işlemlerin hangi kurallara göre açılacağı, alım satımla ilgili bu girdi verileri genel olarak nasıl görünmelidir?

 
mytarmailS :

f_f <- fonksiyon(x, y) 1/2*(yx)^2

f_f - ağ için hatayı sayar, değil mi?

x, değerin ne olması gerektiğidir (ideal eğri)

y - aslında böyle (gerçek eğri)

aralarındaki fark hatadır

ama nasıl veri göndereceğimi anlamıyorum, öncekine göre bir ticaret vektörüne ihtiyacım var. mumlar ve bu işlemlerin hangi kurallara göre açılacağı, alım satımla ilgili bu girdi verileri genel olarak nasıl görünmelidir?

Neredeyse doğru. X, tahmin vektörü ns'dir. Y, ağın tahmin ettiği ilerideki çubuk başına (örneğin ) fiyat artış vektörüdür. Ve tüm fonksiyon, NN algoritmasının her yinelemede göreceği şeydir. Şu ana kadar hiçbir sonuç yok. Modellenmeleri gerekiyor.

Peki, nasıl. Açılma pozisyonlarının mantığını anlatmak ve formayı direkt olarak fonksiyonun gövdesine girmek gerekir. Bir vektördeki açık pozisyonlar için sonucu yazın ve vektör üzerindeki integral karakteristiği hesaplayın.

Tür: satın al<-(y-spread)[x>0]. Bu, şortlar için de longs.t vektörü olacaktır. Sonra hepsi<-append(satın al, sat).

Ama büyük ihtimalle işe yaramayacak. İşlev türüyle ilgili birçok kısıtlama vardır (.
 
Bu arada denemeye devam ediyorum. Makineyi yalnızca bir çift eurusd üzerinde eğitti ve doğrulamada küçük bir pozitif MO aldı.

Ekli, MT4'teki mevcut model kontrolünün bir ekran görüntüsüdür. Öğrenme aşaması hala devam ediyor... Tam sonuçlar ancak yarın alınabilecek. Hesaplamalar, R ile bağlantılı olarak oldukça uzundur ve açık anlaşma yoksa her dakikadır. 1999'dan başladı. Doğrulama 2010.09'dan itibaren başlayacaktır. 2003 yılına kadar mevcut grafik.

10 tane beş basamaklı nokta dağılımı kullanıyorum. MO doğrulamasında 7-8 puan bekliyorum. Çok değil .... ama şimdi yayılmanın 10 puan olduğu bir DC bulabilirsiniz, bu yüzden sonucun pratik olarak önemli olduğunu düşünüyorum.
Dosyalar:
 

Bir meslektaşım makine öğrenimi üzerine bir kursun bağlantısını attı, lütfen bakın, bunu nasıl değerlendirirsiniz? Kurs ücretsizdir, ancak Python'da bir nedenden dolayı lanet olsun ((

https://www.udacity.com/course/machine-learning-for-trading--ud501

 
Alexey Volchanskiy :

Bir meslektaşım makine öğrenimi üzerine bir kursun bağlantısını attı, lütfen bakın, bunu nasıl değerlendirirsiniz? Kurs ücretsizdir, ancak bir nedenden dolayı Python'a lanet olsun ((

https://www.udacity.com/course/machine-learning-for-trading--ud501

En verimli:

1. R - 5 dakika koyun

2. GUI olarak tasarlanan ve dolayısıyla R bilgisi gerektirmeyen çıngırak paketini indirin.

3. Başlangıç maliyetlerini azaltmak için makalemi alın. Açıklamaları var ve en önemlisi bitmiş dosya ekte. Dosyamı gördüğünüzde kolayca kendi dosyanızı hazırlayabilirsiniz.

4. Altı model alın.

5. Çıngırak çerçevesindeki ana şey, makine öğreniminin tam döngüsünü görebilirsiniz:

  • ilk veri hazırlama (veri madenciliği)
  • modelleme
  • sonuçların değerlendirilmesi
  • çıngıraktaki tüm eylemleriniz için R'de bir bonus metin olarak. Bu metin çıngırak dışında kullanılabilir.

Tüm bunlar size boşluksuz belirli bir temel ve en önemlisi Forex referansıyla somut bir makine öğrenimi deneyimi sağlayacaktır.

not.

çıngırak sadece ilk adımlarda değil, gelecekte de sizin için çok faydalı olacaktır: bir şeyi bulmak, denemek için minimum maliyetler...

PSPS

Elbette kitapsız yapamazsınız. İşte onlarla dolu . Arama harika çalışıyor.

 
mytarmailS :

Ayrıntılı açıklama için teşekkürler Dr.Trader !

Muhtemelen en iyi ve en doğru şeyin aynı zikzakları tersine çevirmenin kendisinde öğretmek, yani üç durum vermek olduğunu biliyorsunuzdur: 1) yukarı çık

2) geri çevirmek

3) geri dönüş yok

ama öğrenmek için, geri dönüşleri yakalamak oldukça zordur, ayrıca gözlem sayısında bir çarpıklık, onlarca veya belki yüzlerce kat daha fazla "geri dönüş olmayan" sınıflar olacaktır.

Hangi öngörücüleri kullanıyorsunuz ve hangi sonuçlar?

Spektral analizde ustalaşmaya başladım, ilk örnekler sadece göstergelerden çok daha iyi çıktı, çıngırakla çalıştırdım, eğitim ve doğrulamadaki hata %6 çıktı, ancak kodu R'ye aktarmaya başladığımda, San Sanych, yanılmıyorsam hata %30'a kadar bir yere kadar çıktı, diyor San Sanych, genel olarak, şu ana kadar pek bir şey anlamadım.

Ayrıca spektral analiz yoluyla piyasaya hangi periyotların hakim olduğunu ve bu periyotların göstergelere dönüştürülebileceğini öğrenmenin bir yolu var, uyarlanabilir göstergeler alıyorsunuz ve tarihe sığmıyor, ilk testler cesaret vericiydi ama gücümü toplayamıyorum. kafamın içindeki tüm bu yığını raflara koymak için

Tahmin ediciler oluşturmak için temel olarak standart göstergeler kullanıyorum. Şimdiye kadar, bunu kendim deniyorum, bu forum konusundaki fikirleri deniyorum.

Bunu son haftalardır yapıyorum, şimdi en iyi sonuç şu şekilde elde ediliyor: (birçok hesaplama, daha hızlı hale getirmek için bu yaklaşımı genel olarak D1 zaman diliminde inceliyorum, sonra daha küçük bir TF'ye geçeceğim)

1) mt5'ten csv'ye dışa aktarma: ohlc, zaman, göstergeler, tümü son 10 bar için. Son zamanlarda sadece en yeni çubuktan zaman almaya başladım, kalan çubukların süresinin hesaplandığını ve bu nedenle yeni bilgi taşımadığını düşünüyorum. Birkaç yüz "birincil" tahmin edici ortaya çıkıyor. Gerekli öğrenme sonucu - "1" veya "0" - bir sonraki çubuk için fiyat artışı veya düşüşü. Zigzaglarla her şey benim için istikrarsız ve zor çıkıyor, şimdi kapanış fiyatlarıyla çalışmakta daha iyiyim. Tam model eğitim algoritmasını sıfırdan çalıştığımda, zikzaklar ve trend tahmini yapmak mümkün olacak.

2) Mevcut verilerle R'de çeşitli matematiksel işlemler yapıyorum - toplama, deltalar, min, maks, vb. Halihazırda binden fazla tahminci var.

3) Açıkçası, ikinci adımdan sonra gereğinden fazla çöp var. Ana bileşenlerle ilgili makaledeki yönteme göre filtreliyorum http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/ , SanSanych bunun hakkında daha önce burada yazdı . PCR modelinin kendisini eğitmiyorum, şimdilik tahmin edicilerin ön taraması için böyle bir fonksiyonda durdum:

library( 'vtreat' )
PrunePredictors <- function(srcTable, pruneSig = - 1 ) {
        targetName <- tail(colnames(srcTable), 1 )
        
        treatmentsN <- designTreatmentsN(srcTable,setdiff(colnames(srcTable),targetName),targetName, verbose=FALSE)
         if (pruneSig< 0 ){
                pruneSig = 1.0 /(ncol(srcTable)- 1 )
        }

        scoreFrameSorted <- treatmentsN$scoreFrame[,c( "origName" , "psig" , "code" )]
        scoreFrameSorted <- subset( scoreFrameSorted, code == "clean" )[, 1 : 2 ]
        scoreFrameSorted <- scoreFrameSorted[with(scoreFrameSorted, order(psig)), ]
        
        scoreFrameSortedPruned <- subset( scoreFrameSorted, psig < pruneSig)
        scoreFrameSortedPruned <- scoreFrameSortedPruned[, 1 ] 
        
        cat( "Minimal psig:" , scoreFrameSorted[ 1 , 2 ], "\n" )
        cat( "Maximal psig:" , scoreFrameSorted[nrow(scoreFrameSorted), 2 ], "\n" )
        cat( "Threshold:" , pruneSig, "\n" )
        cat( "Good predictors:" , nrow(subset( scoreFrameSorted, psig < pruneSig)), "\n" )
        
         return (scoreFrameSortedPruned)
}

srcTable - tahmin ediciler içeren tablo, son sütun istenen öğrenme sonucu olmalıdır. pruneSig -1'de bırakılmalıdır.

Sonuç olarak, işlev, tablodan bazı yararlı bilgiler taşıyan sütunların adlarını içeren bir liste döndürür. Veya yararlı bir şey bulunamazsa boş bir liste. Makalede bu yöntemin özellikle önemli olmadığı belirtiliyor, ancak oldukça yeterli olduğu ortaya çıkıyor, çöpleri çok iyi filtreliyor. Ayrıca, sonuçların listesi önem derecesine göre daha faydalıdan daha az faydalıya doğru sıralanacaktır.

4) İşlev boş bir liste döndürdüyse - ikinci adıma tekrar geçiyorum, mevcut veriler üzerinde tekrar farklı matematiksel kombinasyonlar oluşturuyorum, ardından eleme için üçüncü adım. Yani 3-4 kez tekrarlamanız gerekiyor. Veri miktarı her yinelemede artar, bu nedenle oluşturulan yeni veri miktarını bir şekilde sınırlamak daha iyidir. Bu işlevi bırakma için değiştirebilirsiniz, böylece liste boşsa yüz veya iki en iyi sonucu döndürür ve yalnızca bunlardan yeni tahminciler oluşturulabilir.

5) Ayrıca, makaleye göre, ana bileşenlerin modelini eğitmeniz gerekiyor. Bununla ilgili sorunlarım var, şimdiye kadar eğitilmiş model için en iyi r-kare = 0.1, bu yeterli değil, yazdıkları makalede en az 0.95 gerekli. Ancak, elde edilen tahmin ediciler üzerinde, R'den başka bir model eğitebilirsiniz ve sonuç daha iyi olacaktır. Bir nöronla en fazla deneyime sahibim, onunla yapılan bir ön testte en iyi sonuç yaklaşık %37'lik bir hata ile çıkıyor. PCE modeli, teorik olarak, yeniden eğitim vb. olmadan daha kararlı olmalıdır, ancak şimdiye kadar bunun için tahmin edicileri toplamak mümkün olmamıştır.

Ön testte %30 hata varsa, bu zaten oldukça karlı bir modeldir, üzerinde mt5 için bir danışman yapın ve strateji test cihazında kontrol edin.

 
Alexey Volchanskiy :

Bir meslektaşım makine öğrenimi üzerine bir kursun bağlantısını attı, lütfen bakın, bunu nasıl değerlendirirsiniz? Kurs ücretsizdir, ancak bir nedenden dolayı Python'a lanet olsun ((

https://www.udacity.com/course/machine-learning-for-trading--ud501

Bu kursu izlemeye başladım, Python'da Pandas çerçevesine çok dikkat ediliyor. İlk dersler, veri analizi üzerine değil, daha çok bu çerçeve üzerine bir öğretici gibidir. Ancak sunucular, diğer birçok gereksiz eğitimde olduğu gibi tipik "Ben bir Forex gurusuyum, şimdi gözlerinizi açacağım ve milyonlar kazanacaksınız" olmadan yeterli görünüyorlar, bu da sonuna kadar yeterli şeylerin söyleneceğine dair umut veriyor. Ancak bu kursun forex için değil, hisse senedi ticareti için tasarlandığını da dikkate almakta fayda var, bu iki alandaki eğitim modellerinin süreçleri benzer mi bilmiyorum.