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

 

OnnxTypeInfo yardımı, dimensions[] alanı hakkında açıklamalardan yoksundur. Bu dizinin anlamını en azından ONNX.Price.Prediction projesi örneğinde açıklamak güzel olurdu, burada (MT5 sürüm 3621) bu şekilde ortaya çıkıyor:

   OnnxTypeInfo otype;
   OnnxGetInputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true
   ArrayPrint(otype.dimensions);                        // -1 -1 4
   OnnxGetOutputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true  
   ArrayPrint(otype.dimensions);                        // -1 1
 
Bohdan Suvorov #:
Ve işte benim EA'yı kendi nöroniklerim üzerinde uygulamam

Acaba burası ne tür bir kütüphane?

#import "markettrader.dll"
  void AlertT(string &msg,int len);
 
Aleksey Nikolayev #:

OnnxTypeInfo yardımı, dimensions[] alanı hakkında açıklamalardan yoksundur. Bu dizinin anlamını en azından ONNX.Price.Prediction projesi örneğinde açıklamak güzel olurdu, burada (MT5 sürüm 3621) bu şekilde ortaya çıkıyor:

Python terimleriyle, bu nesnenin şeklidir.

 
Rashid Umarov #:

Python terimleriyle, bu nesnenin şeklidir.

Daha sonra negatif sayılar ve dizinin uzunluğunun parametrelerin boyut sayısından bir birim daha fazla olması kafa karıştırıcıdır.

Ayrıca, parametreler için şekil model özelliklerinden alınmaz, kodda ayarlanır. Bu bir hata mı yoksa bir özellik mi?

 
Aleksey Nikolayev #:

Bu durumda negatif sayılar ve dizinin uzunluğunun parametre ölçümlerinin sayısından bir birim daha fazla olması kafa karıştırıcıdır.

Ayrıca, parametreler için şekil, model özelliklerinden alınmaz, komut dosyasında ayarlanır. Bu bir hata mı yoksa bir özellik mi?

Evet, negatif değerleri unutmuşum. Kontrol edeceğim.

 

Herkese merhaba!

Manuel ticaret modunda bir miktar başarı ile ticaret yapmayı başarıyorum, ancak yine de süreci otomatikleştirmek istiyorum. Bunu düşünürken, makine öğrenimi konusunda danışmaya karar verdim. Kim hangi modelleri kullanıyor ve ne kadar başarılı? Sorunu şu şekilde görüyorum:

Temel fikir, tahmin edilmesi gereken trendin yönü değil, üç noktadır: al, sat ve bekle. Yani 1 (al), -1 (sat), 0 (varsa mevcut anlaşmayı tut veya anlaşma yoksa hiçbir şey yapma). Henüz çözemediğim dakika cinsinden zaman serileri ile çalışmak isteniyor. Bazı geçmiş çubuklar için zaman serisinin dikkate alınması önemlidir, böylece geçmişteki göstergeler dikkate alınır, aksi takdirde dinamikleri net olmayacaktır. Yaklaşık 30 tane var, muhtemelen aklımda tutmak zor, ama yine de bir şekilde ellerimle ticaret yapmayı başarıyorum.

Anladığım kadarıyla makine öğreniminde sınıflandırma görevleri var, örneğin trendin yukarı mı aşağı mı olacağı veya fiyatın şu kadar hata ile burada olacağı gibi belirli bir değeri tahmin etmek gibi. Ancak finansal piyasalarda görev biraz daha farklı - düşüşleri en aza indirirken karı en üst düzeye çıkarmak. Ve ben bu tür küçük öğrenme modelleri görmedim.

Bu, olası her işlem için boyutu en üst düzeye çıkarıldığında ve kayıplar en aza indirildiğinde, bir işleme girme ve çıkma doğruluğu yüksek olduğunda daha fazla kârdır:

Kâr = pozitif işlemler - spread dikkate alındığında kaybedilen işlemler,

Burada pozitif işlemlerin toplamı maksimuma, kaybeden işlemlerin toplamı ise sıfıra yönelmelidir. O zaman kar, diğer şeyler eşit olduğunda (örneğin lot büyüklüğü) tanım gereği maksimuma yönelecektir.

Yani, bence böyle bir model olmalı, o zaman girdiler ve çıktılar daha doğru olacaktır.

 
Aleksey Nikolayev #:

Bu durumda negatif sayılar ve dizinin uzunluğunun parametre ölçümlerinin sayısından bir birim daha fazla olması kafa karıştırıcıdır.

Ayrıca, parametreler için şekil, model özelliklerinden alınmaz, komut dosyasında ayarlanır. Bu bir hata mı yoksa bir özellik mi?

Negatif boyut değeri, bu boyutun sabit olmadığı ve harici bir parametre aracılığıyla ayarlandığı anlamına gelir. Bu nedenle kod, boyutsallığı açıkça belirtmelidir

 

ONNX modelinin MQL5'te kullanılması örneğinin bunun sadece bir örneği olduğu ve başka bir şey olmadığı açıktır. Ancak yine de çok önemli bir hataya dikkat çekmek istiyorum. Makine öğreniminde ilk aşama ön işlemedir. Bu, önemsiz normalizasyondan boyut azaltmaya ve diğer mühendislik hilelerine kadar pek çok şeyi içerir. Bu aşamada herhangi bir tahminci ve hedef dönüşümünün ana kuralı, tüm dönüşüm parametrelerinin (ortalama, medyan, sd, mad gibi) eğitim seti üzerinde hesaplanmasıdır. Test seti ve yeni veriler, eğitim seti üzerinde elde edilen parametreler kullanılarak işlenir.

Yani örnekte eğitim üzerinde ortalama/sd hesaplamak, bu veriyi yüklemin yapıldığı kısma aktarmak, yeni veriyi bu parametrelerle işlemek gerekiyordu. Bundan sonra, denormalize etmek ve tahmin edilen fiyatın gerçek değerlerini elde etmek. Bu sıra önemlidir.

Kimsenin modelin girişine gerçek fiyatları beslemediği açık ama bu zaten belli.

İyi şanslar

 
Slava #:

Negatif bir boyut değeri, bu boyutun sabit olmadığı ve harici bir parametre aracılığıyla ayarlandığı anlamına gelir. Bu nedenle, kodun boyutsallığı açıkça belirtmesi gerekir

Teşekkürler, şimdi daha net oldu.

 
Elvin Nasirov #:

Anladığım kadarıyla, makine öğreniminde sınıflandırma görevleri var, örneğin trendin yukarı mı yoksa aşağı mı olacağı veya fiyatın şu kadar hata ile burada olacağı gibi belirli bir değeri tahmin etmek gibi. Ancak finansal piyasalarda görev biraz daha farklıdır - düşüşleri en aza indirirken karı en üst düzeye çıkarmak. Ve ben bu tür Raspberry öğrenme modelleri görmedim.

Bu sorun, MO modellerini eğitirken uygun bir kayıp fonksiyonu kullanılarak çözülür. Bununla ilgili iki sorun vardır. Birincisi, teknik - MO paketlerindeki standart kayıp fonksiyonları kar maksimizasyonu ile sadece dolaylı olarak ilişkilidir, bu da özel olanları yaratma ihtiyacına yol açar. Bunu yapmak oldukça zordur - kod düzeyinde MO paketlerini iyi anlamanız gerekir. Bu sorun çözülürse, özel kayıp fonksiyonunun model eğitimi için kötü olduğu ikinci bir matematiksel sorun ortaya çıkabilir.

Birisi böyle zor bir sorunu çözerse, çözümü paylaşması pek olası değildir.

Neden: