Kendi MetaTrader uzantınızı (dll) oluşturun - sayfa 9

 

DLL yeni kenelerle güncellenmiyor

Önceki DLL gönderimin (#81) devamı olarak, şimdi ek bir sorunum var; DLL bu şekilde çağrıldığında:

int başlangıç()

{

çift Oran[][6];

int MaximumRecords = ArrayCopyRates( Rates, Symbol(), 0 );

for( int zz = MaximumRecords; zz >= 0; zz-- ) { OutPut[zz] = BOŞ; }

GetSMAArray( Rates, MaximumRecords, Periods, OutPut);

dönüş(0);

}

grafikte beklendiği gibi çizildiği için iyi çalışıyor, ancak ne yazık ki yeni, gelen işaretlerle güncellenmiyor - sadece ilk çağrısında çiziliyor. DLL güncellemesini gelen kenelerle yapmak için başka hangi kodu ekleyebilirim? Neredeyse tüm aramalarımda,

ExtCountedBars = IndicatorCounted();

while döngüsünü hesaplamaya zorlamak için kullanılır, ancak bunların tümü .mq4 dosyasının kendisinde bulunan hesaplamalar için geçerlidir. DLL'yi yeniden hesaplamaya zorlamak istiyorum. İkinci olarak, bu yeniden hesaplamanın her kene geldiğinde değil, yalnızca bir çubuğun tamamlanmasında olmasını istiyorum.

 

for döngüsü olmalı

for(int zz=MaximumRecords-1;.................

10 Kayıt, bir dizide 0'dan 9'a kadar konum alır

 
Tzuman:
for döngüsü olmalı

for(int zz=MaximumRecords-1;.................

10 Kayıt bir dizide 0'dan 9'a kadar konum alır

Korkarım bu yardımcı olmadı, DLL hala yeni kenelerle güncellenmiyor.

 

Mistigri'nin örnek videosu mevcut değil

Herkese selam,

Biri Mistigri'nin örnek videosunu internete koyabilir mi?

 
jocinet:
Merhabalar, Biri Mistigri'nin örnek videosunu internete koyabilir mi?

Mistigri, şu adreste tekrar kullanılabilir hale getirdi:

Projeler | PsNouvion

 

C# Geliştiricileri İçin Bir Yol: MT4/5 -> C# DLL

C++ yerine Metatrader için C# ile DLL yazmak isteyen C# geliştiricilerinin artık bu amaca giden bir yolu var. Az önce okuduğum "C# kodunun yönetilmeyen dışa aktarmaları kullanarak MQL5'e gösterilmesi" başlıklı çok ilginç bir makale var.

Makaleyi okuyun/gözden geçirin ve bölüm 2.5'ten sonrasını okuyun.

Yönetilmeyen dışa aktarmaları kullanarak C# kodunu MQL5'e gösterme - MQL5 Makaleleri

Yönergeleri okuyun, ardından C# "Yönetilen Dışa Aktarma Kitaplığı" Şablonunu indirin ve zip dosyasını doğru dizine yerleştirin (o sayfadaki yönergeleri izleyerek):

Yönetilmeyen Dışa Aktarmalar için C# Proje Şablonu

VS'yi yükleyin ve "Yönetilen Dışa Aktarma Kitaplığı" şablonunu seçin. Kod örneklerini takip edin. Umarım bu birine yardımcı olur!

 

kritik hata ama çökme yok ve dll nasıl yazılır

Sonunda Visual Studio 2008 Express'te MistigriFX Sample Debug (kısaca MFX_SD) kullanarak dll'imi yazabildim.

Ancak komik bir problemim var:

Farklı dönem girdileriyle grafiğe üç MFX_SD çalıştırırken sorun olmaz. Ancak, ikinci grafiğe farklı dönem girişi ile üç tane daha eklerken, iki hata mesajı alıyorum ('GetSMAArray' işlevi dll'den 'Mistigri FX Sample 1.dll' kritik hatası' çağrısı) ve uzman çalışmayı durduruyor.

Bu yüzden iki grafik görüyorum, bir grafikte her üç MFX_SD'nin her tikte iyi çalıştığını, diğerinde her tikte yalnızca bir MFX_SD'nin çalıştığını ve diğer ikisinin çalışmadığını görüyorum.

herhangi bir tavsiye çocuklar?

Visual Studio 2008'de dll'yi nasıl yazdığım ektedir. Bunu, Visual Studio'nuzdan okuyabilmeniz için metin belgesine yazıyorum.

Herhangi bir hatanız varsa, lütfen benim gibi acemi programcıların tavsiyelerini takip ederek kendinize lanet edin. .

Şimdiden çok teşekkürler.

 

kritik hata çözüldü

Birkaç kez denedikten sonra nihayet 'kritik hata' mesajlarını çözdüm (önceki yazımı okuyun).

.dll'yi yapma şeklimle ilgisi yok, ancak MFX_SD kodlarında GetSMAArray işlevindeki miss logic ile ilgisi var.

İşte ıskalama mantığını öne çıkardığım MFX_SD kodları.

for ( int i = 0; i < MaximumRecords; i++)

{

çift Toplam = 0.0;

for ( int k = 0; k < Dönem ; k++ )

{

Toplam += Oranlar[MaximumRecords-i-1-k].close;

}

Sonuç[MaximumRecords-i-1] = Toplam / Nokta ;

}

Örneğin, Periyot = 2, MaximumRecord = 75 ve i = 74 olduğunu varsayalım. Bu, hesaplanırken hata yapar:

Toplam += Oranlar[MaximumRecords-i-1-k].close;

çünkü MaximumRecord - i - 1 - k'nin sonucu -1'e eşittir. Oranlar [-1] için tek değer sıfırdır, bu da toplamın değerini de sıfıra eşit yapar. Ve SMA'yı hesapladığımız için toplamı, sıfırın 2'ye bölündüğü Periyot ile bölmemiz gerekiyor ve burada 'kritik hata' var ve uzman duruyor.

Buna inanmıyorsanız, 1 dakikalık bir tabloya farklı giriş periyotlarına sahip birkaç MFX_SD ekleyin, ancak MFX_SD'den birinin giriş periyodu = 1 olmalıdır. MT Terminal penceresine bakın ve uzman sekmesine tıklayın. Kritik bir hata mesajı göreceksiniz ve uzman çalışmayı durdurur. Ancak grafiğe bakarsanız sadece periyot = 1 olan MFX_SD hala çalışıyor.

Sanırım MistigriFX'in videosunda göstermeye çalıştığı şey, dll'nin nasıl oluşturulacağı ve dizilerin dll'ye nasıl geçirileceğiydi. SMA mantığını düzeltmesi gerekiyorsa, izlemesi ciddi şekilde baş ağrısı yapan bir video olurdu. Bu yüzden bize doğru olmayan ama basit bir basit MA örneği ile gösteriyor.

Mutlu dll yapımı.

 

MT4 uzantısı - kursunuz

Merhaba codersguru,

Lütfen bana kursunuzun bazı linklerini verir misiniz?

veya pdf kılavuzu.

Bu konuda daha fazla bilgi edinmek için herhangi bir literatüre ihtiyacım var.

Çok teşekkürler.

Saygılarımla

İvan

 

...

Metatrader'ın Expert\samples\DLLSample klasöründe (her metatrader onu oraya yükler), dll çağrıları hakkında bilmeniz gereken tek şey olan bir örneğiniz (mql ve C++ kaynağı, proje ve def dosyası) vardır (tüm olası parametre türleri desteklenir) metatrader tarafından dll'ye ve geri "iletişim" burada ele alınmaktadır) Gerisi C/C++ bilginize kalmış.

holesovsky:
Merhaba codersguru,

Lütfen bana kursunuzun bazı linklerini verir misiniz?

veya pdf kılavuzu.

Bu konuda daha fazla bilgi edinmek için herhangi bir literatüre ihtiyacım var.

Çok teşekkürler.

Saygılarımla

İvan
Neden: