"Göstergeler Arası Veri Değişimi: Bu Kolaydır" makalesi için tartışma - sayfa 2

 
<br/ translate="no">

...Sadece bir soru, bir işaretçinin bir tamsayıya nasıl dönüştürüleceğidir. İşte bu noktada Dinamik Bağlantı Kütüphanesi, yani C++'ın veri tipi dönüştürme yetenekleri bize yardımcı olacaktır. C++'da işaretçiler dört baytlık bir veri türü olduğundan, amaçlarımız için dört baytlık int türünü kullanmak uygundur...

Eğer yanılmıyorsam, yazar örtük tip dönüşümünden bahsediyor. Çok bilgilendirici bir makale - yazara çok teşekkürler.

Ayrıca, bir SetPtr yöntemi yapmanız gerekiyorsa, açık tür dönüşümü olmadan yapamayacağınızı da eklemek istedim.

Şöyle görünecektir

double* SetPtr(int a)
{
  double* a1 = reinterpret_cast <double* > (a);
  return(a1);
}

Genel olarak, işaretçiler yaygın olarak tanınır ve kullanılırsa MQL5 çok fayda sağlayacaktır.

 

Genel olarak, işaretçiler yaygın olarak tanınır ve kullanılırsa MQL5 büyük fayda sağlayacaktır.

Ben bu listeye istisna işleme, parametreli kurucular ve çoklu kalıtım özelliklerini de eklerdim.

Ancak bazı nedenlerden dolayı geliştiriciler tüm bu özelliklerden yararlanacak kadar akıllı olmadığımızı ve sadece kendimize zarar vereceğimizi düşünüyorlar.

Oysa yukarıdakilerin hepsi standart OOP araçlarıdır ve hiç kimseye zarar vermemişlerdir.

Bu mekanizmaları güvenilir bir şekilde uygulayamadıkları izlenimini edindim (benden).

Birilerinin burada olmayacağına karar vermesi üzücü

 

Yeni MT4 yapılarında SetIndicatorValue() işlevinin çalışmadığını, ancak GetIndicatorValue() işlevinin çalıştığını fark ettim. Bu sadece bana mı ait, yoksa yeni yapılarda (sanırım değişiklik Yapı 225'ten sonra bir yerde oldu) bu işlevi bozan bir şey mi var? Eğer öyleyse, bu makaledeki metodolojilerin yeni MT4 yapılarında nasıl çalışacağına dair herhangi bir öneriniz var mı? Eski yapıların artık desteklenmemesi gerçeği bu konuda bana sorun yaratıyor, çünkü gösterge hesaplamalarının bir EA'da yalnızca bir kez gerçekleşmesini, ancak hesaplanan değerleri gösterge arab elleklerinin işaretçilerine iterek grafiklerde görüntülenmesini gerçekten istiyorum. (Bu arada, bu makaleyi bulduğum ve tekniklerini uygulayabildiğim için gerçekten minnettarım - yazdığınız için teşekkür ederim).

Bununla ilgili bir soru da, 3/17/2011 tarihinde MT4'ün 392 numaralı sürümünün sürüm notlarında, "3. Göstergeler bir grafik üzerinde görüntülenirken gereksiz yeniden hesaplamalar kaldırıldı." yazdığını fark ettim. Bu gelişme, özel göstergeleri amaçlandıkları şekilde kullanmanın artık bu makalede öğretilen işaretçi tabanlı teknikleri kullanmaktan daha yavaş olmayacağı için bu makaledeki tekniklere olan ihtiyacı etkili bir şekilde ortadan kaldırıyor mu? Teşekkür ederim.

 
brisully:

Yeni MT4 yapılarında SetIndicatorValue() işlevinin çalışmadığını, ancak GetIndicatorValue() işlevinin çalıştığını fark ettim. Bu sadece bana mı ait, yoksa yeni yapılarda (sanırım değişiklik Yapı 225'ten sonra bir yerde oldu) bu işlevi bozan bir şey mi var? Eğer öyleyse, bu makaledeki metodolojilerin yeni MT4 yapılarında nasıl çalışacağına dair herhangi bir öneriniz var mı? Eski yapıların artık desteklenmemesi gerçeği bu konuda bana sorun yaratıyor, çünkü gösterge hesaplamalarının bir EA'da yalnızca bir kez gerçekleşmesini, ancak hesaplanan değerleri gösterge arab elleklerinin işaretçilerine iterek grafiklerde görüntülenmesini gerçekten istiyorum. (Bu arada, bu makaleyi bulduğum ve tekniklerini uygulayabildiğim için gerçekten minnettarım - yazdığınız için teşekkür ederim).

Bununla ilgili bir soru da, 3/17/2011 tarihinde MT4'ün 392 numaralı sürümünün sürüm notlarında "3. Göstergeler bir grafik üzerinde görüntülenirken gereksiz yeniden hesaplamalar kaldırıldı." yazdığını fark ettim. Bu gelişme, özel göstergeleri amaçlandıkları şekilde kullanmanın artık bu makalede öğretilen işaretçi tabanlı teknikleri kullanmaktan daha yavaş olmayacağı için bu makaledeki tekniklere olan ihtiyacı etkili bir şekilde ortadan kaldırıyor mu? Teşekkür ederim.

Görünüşe göre yanılmışım ve makaleye eklenen gösterge dosyaları MT4'ün yeni yapılarında çalışıyor. Yanlış alarm için özür dilerim ve bu çalışma için tekrar teşekkürler.
 
Zhunko:

Ne kadar karmaşık!...

İlnur'un yardımıyla bir yıl önce MQL4'te bellekle çalışmak için bir kütüphane yazdım. Bellek ayırabilir, işaretçileri taşıyabilir, yazabilir ve okuyabilir, bellek alanının adını başka bir programa aktarabilirsiniz.

Her şey eşlemeye dayanıyor. Önerilen kütüphaneden çok daha basittir.

Bu kütüphaneyi nasıl edinebilirim? Minnettar olurum. İki MT arasında veri transferi yapmam gerekiyor.
 
Teşekkür ederim.
 

DLL'e sadece double ile çalışmak için değil, aynı zamanda datetime, long ve int için de fonksiyonlar eklemek mümkün mü?

Görünüşe göre artık fiyat dizilerindeki veriler kopyalanmadan iç içe yapılar arasında kolayca aktarılabilir, ancak zaman, yayılma ve hacimlerle ilgili veriler hala kopyalanmalıdır.

GetPtr'yi datetime ve long ile çalışacak şekilde uyarlamaya çalıştım (ve int bitlerini taşıyarak saptırmalar yoluyla) - çalışmıyor, fonksiyon bir diziye referans kabul ediyor ve dönüştürülemiyor.

Bu sorunu çözen var mı?

 

Sessizlik.

Eh... C++'ı hatırlamam ve MSVC'yi kendim yüklemem gerekecek...

 
Laryx:

Sessizlik.

Eh... C++'ı hatırlamam ve MSVC'yi kendim yüklemem gerekecek...

Ve şimdi kimse size bir şey cevaplamayacak, herkes ön tarafa gitti.

MT4 güncellemesi hakkında bir şey duydunuz mu?

 

Kulağımın kenarından, kulağımın kenarından... :)

MT4 güncellemesi benim için çok iyi - büyük kütüphanelerim var, ancak hepsi MT5'te (OOP olmadan hayatımı hayal edemiyorum). Ve DC'ler, kötü insanlar, hepsinin gerçek hayatta MT5'i yok.... Yani bu haber benim için çok iyi.

Ancak - normal bir MT4++ olana kadar, kodu güncellenmiş platform için uyarlamanın bir anlamı olduğunu düşünmüyorum. Resmi beta gibi bir şey çıktığında (evet, Standart Kütüphane ile, onsuz da Uzman Danışmanlar yazmak istemiyorum) - o zaman kodu dönüştürmeye başlayacağız....

Ve şimdi ben - korkunç bir şekilde sadece çift dizilerin değil, diğer dizilerin de adreslerini almak istiyorum ... Ah - yuk... Sorunu tür dönüştürme yoluyla atlatmak istedim (zaman ve uzunlar da sekiz bayttır), ancak henüz çalışmıyor....