Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 742
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Gerçek kodda, bir işlev bir nesne döndürür.
Bence kopya oluşturucu bu durumda geçici bir kopya oluşturmalıdır.
Kod, MQL5 build 1545'te de düzgün çalışıyor.
Yeni yapıda, kopya oluşturucu tek boyutlu bir diziyi bile yeniden boyutlandıramaz: hata 4007.
Bana göre bu doğru değil.
Bu durumda kesin bir şey söylemek benim için zor. Sorununuzla ilgili çok iyi uzmanlar var, bu yüzden onunla https://www.mql5.com/ru/forum/1111 başlığına başvurmanızı tavsiye ederim.
Düzenlemelerimle kod olması gerektiği gibi çalışıyor. Olmadan - hayır. Ancak kodunuz işe yararsa - yukarıdaki bağlantıdaki şubede daha iyi.
Gerçek kodda, bir işlev bir nesne döndürür.
Bence kopya oluşturucu bu durumda geçici bir kopya oluşturmalıdır.
Kod, MQL5 build 1545'te de düzgün çalışıyor.
Yeni yapıda, kopya oluşturucu tek boyutlu bir diziyi bile yeniden boyutlandıramaz: hata 4007.
Bana göre bu doğru değil.
1580 derlemesinde hata düzeltildi, teşekkürler, her şey olması gerektiği gibi çalışıyor).
Bu durumda kesin bir şey söylemek benim için zor. Sorununuzla ilgili çok iyi uzmanlar var, bu yüzden onunla https://www.mql5.com/ru/forum/1111 başlığına başvurmanızı tavsiye ederim.
Düzenlemelerimle kod olması gerektiği gibi çalışıyor. Olmadan - hayır. Ancak kodunuz işe yararsa - yukarıdaki bağlantıdaki şubede daha iyi.
Bağlantı için teşekkürler.
Belki birisi tavsiyede bulunabilir.
Giriş ayarlarını manuel olarak değiştirdikten sonra bir Expert Advisor'ın yürütülmesini kesintiye uğratmanın nasıl mümkün olduğunu anlayamıyorum.
1) Aşağıdaki EA kodunu grafikte çalıştırın:
2) Ayarlar penceresini açın ve "Ayar_" parametresini 1 olarak değiştirin.
3) Ve değişiklikleri uygulayın.
Bu nedenle, değişikliklerin uygulanabilmesi için OnInit yürütülmelidir, ancak OnTick'teki (veya herhangi bir başka) hesaplama durana kadar OnInit yürütülmeyecektir.
Bildiğim kadarıyla, programı yalnızca _StopFlag - mql5 program durdurma bayrağı aracılığıyla durdurmak için bir denetim var, ancak bu yalnızca tam bir çıkış içindir. Ancak giriş ayarlarının hesaplamaları durdurmak için değiştiğini nasıl anlayacağımı bilmiyorum.
Belki birisi böyle bir durumla karşı karşıya kaldı? Belki gizli bir hack vardır?
Belki birisi tavsiyede bulunabilir.
Giriş ayarlarını manuel olarak değiştirdikten sonra bir Expert Advisor'ın yürütülmesini kesintiye uğratmanın nasıl mümkün olduğunu anlayamıyorum.
1) Aşağıdaki EA kodunu grafikte çalıştırın:
2) Ayarlar penceresini açın ve "Ayar_" parametresini 1 olarak değiştirin.
3) Ve değişiklikleri uygulayın.
Bu nedenle, değişikliklerin uygulanabilmesi için OnInit yürütülmelidir, ancak OnTick'teki (veya herhangi bir başka) hesaplama durana kadar OnInit yürütülmeyecektir.
Bildiğim kadarıyla, programı yalnızca _StopFlag - mql5 program durdurma bayrağı aracılığıyla durdurmak için bir denetim var, ancak bu yalnızca tam bir çıkış içindir. Ancak giriş ayarlarının hesaplamaları durdurmak için değiştiğini nasıl anlayacağımı bilmiyorum.
Belki birisi böyle bir durumla karşı karşıya kaldı? Belki gizli bir hack vardır?
OnInit() içindeki başlatmasızlaştırma kodunu kontrol edin
Başlatmama nedenleri
UninitializeReason() işlevi tarafından döndürülen, Expert Advisor'ın sıfırlanması için neden kodları. Aşağıdaki değerlerden herhangi birine sahip olabilir:
Devamlı
Anlam
Tanım
REASON_PROGRAM
0
Uzman, ExpertRemove() işlevini çağırarak çalışmasını durdurdu
REASON_REMOVE
1
Program grafikten kaldırıldı
REASON_RECOMPILE
2
Program yeniden derlendi
REASON_CHARTCHANGE
3
Grafik sembolü veya periyodu değiştirildi
REASON_CHARTCLOSE
4
Grafik kapatıldı
REASON_PARAMETERS
5
Giriş parametreleri kullanıcı tarafından değiştirildi
REASON_ACCOUNT
6
Hesap ayarlarındaki bir değişiklik nedeniyle başka bir hesap etkinleştirildi veya ticaret sunucusuna yeniden bağlanıldı
REASON_TEMPLATE
7
Başka bir grafik şablonu uygulandı
REASON_INITFAILED
sekiz
OnInit() işleyicisinin sıfır olmayan bir değer döndürdüğünü işaretleyin
REASON_CLOSE
dokuz
Terminal kapatıldı
OnInit() içindeki başlatmasızlaştırma kodunu kontrol edin
...
Hımm... beni yanlış anladın :)
Fonksiyonun içinde (örneğin OnTick'te ) kullanıcının giriş parametrelerini değiştirdiğini, yani. Programı tamamlamanın ve programın OnDeinit'e gitmesine izin vermenin zamanının geldiğini öğrenin.
Hımm... beni yanlış anladın :)
Fonksiyonun içinde (örneğin OnTick'te ) kullanıcının giriş parametrelerini değiştirdiğini, yani. Programı tamamlamanın ve programın OnDeinit'e gitmesine izin vermenin zamanının geldiğini öğrenin.
Kullanıcı Uzman Danışman ayarları penceresini (F7) açar açmaz ve parametreleri değiştirdikten sonra oradaki Tamam düğmesine basar, OnDeinit() hemen çağrılır ve sırayla REASON_PARAMETERS değerini deinitialization koduna yazar. Daha sonra OnInit() çağrılır; burada UninitializeReason() kullanarak başlatmasızlaştırma kodunu kontrol edebilirsiniz ve değeri REASON_PARAMETERS'a eşitse , daha sonra ne yapacağınıza karar verebilirsiniz.
TAMAM.
Rica ederim:
1) İlk önce ilk mesajımda verdiğim kodumu çalıştırın. Oraya güzellik için getirmedim ... Herhangi bir grafikte başlatabilirsiniz.
2) Uzman Danışman ayarları penceresini arayın.
3) Ayarı değiştirin ve Tamam'a tıklayın.
Koduma dikkatlice bakarsanız, ortaya çıkan doğal sonuç sizi şaşırtmayacaktır: OnDeinit () çağrılmayacaktır.
Ayrıca, EA'nın hedefe ULAŞMADIĞINDAN emin olabilmeniz için, hem neden hem de parametrenin tanımına bir çıktı ekledim.
Lütfen koddaki en önemli parçaya dikkat edin:
Bu, giriş parametrelerindeki bir değişiklik nedeniyle kesintiye uğramayan uzun bir hesaplamanın görsel bir öykünmesidir. Ve onu kesmem gerekiyor ve soru nasıl? :)
Sadece MQL5'te hiçbir şeyi kaçırmadığımdan ve dilde _StopFlag dışında gerçekten başka bir şey olmadığından emin olmak istiyorum, bu ne yazık ki bu durumu çözmez.
Kabaca söylemek gerekirse, yoğun bir hesaplama sırasında giriş parametrelerinin değiştiği anı yakalamam gerekiyor.
Ayrıca, EA'nın hedefe ULAŞMADIĞINDAN emin olabilmeniz için, hem neden hem de parametrenin tanımına bir çıktı ekledim.
Lütfen koddaki en önemli parçaya dikkat edin:
Bu, giriş parametrelerindeki bir değişiklik nedeniyle kesintiye uğramayan uzun bir hesaplamanın görsel bir öykünmesidir. Ve onu kesmem gerekiyor ve soru nasıl? :)
Sadece MQL5'te hiçbir şeyi kaçırmadığımdan ve dilde _StopFlag dışında gerçekten başka bir şey olmadığından emin olmak istiyorum, bu ne yazık ki bu durumu çözmez.
Kabaca söylemek gerekirse, yoğun bir hesaplama sırasında giriş parametrelerinin değiştiği anı yakalamam gerekiyor.
Kabaca söylemek gerekirse - size yazdıklarımı dikkatlice tekrar okuyun ve kodunuzdan sonsuz bir döngü atın.
Expert Advisor'ı sonsuz bir döngüye sokmanın doğru karar olduğundan emin misiniz?