Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Sorun değil, angevogeur
Kod başlangıçta şuydu:
Bunu basitçe şu şekilde değiştirdim:
Gördüğünüz gibi, fonksiyonların "etini" değiştirmedim. Ben sadece yeni işlevselliğe uyum sağlamak için gerekli olan modları yaptım. Hâlâ biraz kafam karışık olan bir şey, start()'tan OnStart() veya OnTick()'e geçiş, hangisi olursa olsun (şu anda unuttum, ama hala start()'ı sorunsuz kullanıyorum. .Bunun özel bir gösterge olduğunu belirtmeliyim.Sıkıldığım başka bir şey de, bir EA, gösterge veya komut dosyası kodluyor olmanıza bağlı olarak kullanabileceğiniz şeylerin sınırlamaları. bir EA kodlamadığınız sürece işlemlerin uygulanmasına izin vermemek gibi) ve yapmayan diğerleri (Mesaj Kutusu ve göstergesi kullanmanın yasaklanması gibi) Beni gerçekten rahatsız eden başka bir şey, ticaret gibi şeyler için uygun etkinliklerin olmaması açılır ve kapanır.Bu, şu anda bir araya getirdiğim şey için gerçekten yardımcı olacaktır.
Son ifademle elde ettiğim sonuca bir örnek şudur: Belirli kriterler karşılanırsa bir Al sinyali gösterebilmek istiyorum, belirli kriterler karşılanıyorsa bunun için bir Alım İşlemi Kapat sinyali görüntüleyebilmek istiyorum ama aynı zamanda şunu da istiyorum. kullanıcımın Satın al sinyalini iptal etmesine ve isterlerse bir başkasını beklemesine izin ver ve Kapat sinyali için aynen. İşlemi kapatmayı seçerlerse, Satın Alma ve Satın Alma Kapatma sinyallerinin kaybolmasını ve göstergenin başka bir işlem için giriş kriterlerini izlemesini istiyorum. İptal bölümleri mükemmel çalışıyor ancak MQL4 bunun için mesajlaşma sağlamadığından Aç ve Kapat olaylarını algılayamıyorum.
Profilime baktıysanız, hiçbir şekilde acemi bir programcı olmadığımı görmüşsünüzdür. Dil, bir profesyonelin modern bir geliştirme platformundan beklediği ve ihtiyaç duyduğu tüm işlevleri sağlamaz. Başka bir notta, büyük bir yakınma olan hata ayıklamayı çalıştıramıyorum. Belgeleri takip ettim ancak hata ayıklayıcıyı harekete geçirmeye çalıştığımda, göstergemi başlatmak için özellikler iletişim kutusunu açan bir grafik aldım ancak gösterge kurulumunu bitirmek için Tamam'a bastığımda grafik kayboldu ve hepsi bu kadar. Belki Rusça'dan İngilizce'ye çeviride bir şeyler kayboluyor ve ben sadece bir şeyi özlüyorum ya da belki de "kek" tam olarak pişmemiş. Bir profesyonel olarak, böyle bir geliştirme dili ve ortamı yaratmanın ne kadar anıtsal bir görev olduğunu biliyorum. Sözlerim, şikayetlerden ziyade geliştirme personeli için FYI'lerin doğasında daha fazla anlam ifade ediyor.
Prof.
Sorun değil, angevogeur
Kod başlangıçta şuydu:
Prof.
Ayarladığım değişkenleri bildirmediyseniz ve ayrıca adlandırdığım ve açıkladığım yöntemlere sahip değilseniz, derlenmeyecektir. Yapamaz. Bunu bilmeni beklerdim. İstediğini düşündüğüm şeyi yayınladım - sorunumu çözen çözüm. Her halükarda, MetaQuotes kullanıyorsanız ve MetaTrader ile neler olup bittiğini anlamaya ve düzeltmeye çalışıyorsanız, aşağıda daha fazlasını gönderdim. init() içindeki if bloğunu yorumlayın, MA_Display_Time_Frame'i global olarak bir tamsayı olarak bildirin ve şu yöntemleri ekleyin:
Bunun ticari bir ürün olması amaçlandığından, hiçbir şekilde gösterge kodunun tamamı değildir, ancak bu, orijinal init() ve deinit() yöntemlerini kullanarak derlemeli ve potansiyel olarak soruna neden olmalıdır. Birkaç etiket ve düğme oluşturmak yeterlidir. Bahsedilen posterlerden biri gibi, başarısızlık aralıklıydı. Bununla birlikte, gösterge özelliklerini değiştirmek, zaman çerçevelerini değiştirmek veya terminali durdurmak ve yeniden başlatmak gibi göstergenin sıfırlanmasına neden olacak herhangi bir eylemle ilgiliydi. Özellikleri değiştirmeyi test etmek istiyorsanız, bu dış öğeleri globallere ekleyin:
Extern'leri eklerseniz, onlara referans veren if bloğunu yorumlamanıza gerek yoktur. Bu, onu derlemeniz ve sorunu yeniden oluşturmaya çalışmanız için yeterli olmalıdır. Eski başlatma ve başlatmadan kaldırma işlevlerini değiştirip yeni sürümlere geçtiğimden beri sorun oluşmadı. Başka bir şeye ihtiyacın olursa bana haber ver. Konuya dikkat edeceğim.
Ben de benzer bir durum yaşadım, indi grafiğe düştüğünde iyi çalıştı.
Parametreler değiştikten sonra iyi çalıştı, Tf vardiyasından sonra iyi çalıştı.
MT4'ü kapatıp yeniden başlattıktan sonra indi görünmüyordu.
Grafikteki göstergeler listesindeydi ama işe yaramadı.
Parametreler penceresini açtıktan ve Tamam düğmesine tıkladıktan sonra, indi listeden hemen kayboldu.
Yukarıdaki gönderilerde açıklananlar dahil tüm hileleri denedim, hiçbir şey işe yaramadı.
0 sayı ile bölme olduğu ortaya çıktı!
Basit: if(x!=0) koşulu sorunu çözdü.
Evet, başka bir indi ile aynı sorunu yaşadım.
Platform her başlatıldığında "if" olmadan, indi 0'a bölünür,
yeni MT4'ün işaretlenene kadar saklanan hiçbir bilgisi yok gibi görünüyor.
Diğer çözüm, start() veya OnStart() yerine OnCalculate() kullanmak olabilir, sanırım?
Ancak, bu MetaQuotes'a şikayet edilecek bir şey.
İade (0) hilesini kullanmalısınız.
İlgi varsa birisi biraz detaylandıracaktır.
İade (0) hilesini kullanmalısınız.
İlgi varsa birisi biraz detaylandıracaktır.
İnternette her yerde bulabileceğiniz eski göstergeler, kodlarını otomatik olarak değiştirmez.
Birisi kodları değiştirebilir ve sorunu anlarsa, bunu kendi başlarına yapabilirler.
Geri kalan her şey, MT4'ü her açtıklarında indi'lerini görememenin rahatsızlığını hissetmek zorundadır.
Bir şablonları varsa, onu indi'yi geri yüklemek için kullanabilirler, ancak bu, bunu her seferinde yapmak anlamına gelir.
Şablonlar, yeni Built 625'te başka bir hikaye.
Çocuklar,
Her şeyin dışındasın. Tarif ettiğiniz şey, her zaman sorun olan bir zamanlama sorunudur. Bununla çok basit bir şekilde ilgilenebilirsiniz:
Sıfıra bölme hatası, sunucu oturmadan önce hesaplamalar yapmaya çalışmanızdan kaynaklanıyor olabilir. Başlatma işlevinde hesaplamalar yapıyorsanız - YAPMAYIN! Yukarıdaki kodu start() veya OnStart() içine koyun ve SONRA yapmanız gerekeni yapın. Dadas, bunu olduğun kadar basitleştirmeye çalışmak seni büyük zaman ısıracak. İndi konusunda şanslısın.
Bir indi kaybolduğunda, bir başlatma hatası yaşarsınız. Günlüklerinize bakarsanız "genel başlatma hatası" görürsünüz. Bunu neden aldığınızı anlamanız ve düzeltmeniz gerekir. Eğer yapmazsan, tek yaptığın dikiş gerektiren bir kesime yara bandı koymak ve sana geri dönecektir.
Bana bu hatanın OnInit() ile ilgisi yokmuş gibi geliyor ve hata açıklaması yanıltıcı.
Tek satır kod ile
Diziye aralık dışı hatası verecektir.
Zaman çerçevesini değiştirin ve Global başlatma başarısız oldu ve gösterge grafikten kaldırıldı