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
Çok teşekkür ederim, hataları işliyorum, bir mesaj geliyor - fiyat yanlış, ama neyin yanlış olduğunu anlayamıyorum.
sonra satırı ekleyin
işlevin başlangıcına kadar - hata arabelleğini temizleyin: bazen "bir başkasının" hatasını okuyabilirsiniz, aksi takdirde işlev başladığında hata arabelleği temizlenir.
Bu gerekli değildir, ancak programlar gerçek hayat içinse, her şeyi mümkün olduğunca doğru yapmak çok arzu edilir.
İyi şanlar.
sonra satırı ekleyin
işlevin başlangıcına kadar - hata arabelleğini temizleyin: bazen "bir başkasının" hatasını okuyabilirsiniz, aksi takdirde işlev başladığında hata arabelleği temizlenir.
Bu gerekli değildir, ancak programlar gerçek hayat içinse, her şeyi mümkün olduğunca doğru yapmak çok arzu edilir.
İyi şanlar.
Evet, teşekkürler, gerçek programlarda bunu yapıyorum.
İyi insanlar, açık sipariş olmamasına rağmen işlevin neden 0 döndürdüğünü söyleyin. Bir hata atılmalı mı?
Açık ve bekleyen siparişlerin toplam sayısını verir.
Hala sipariş için yazıyor musunuz?
-- Alt çizgi ve çift alt çizgi ile başlayan adların kullanılması kötü bir biçimdir. Sonunda altını çizmekten daha iyidir.
-- _Type_Order neden bir dizedir? IMHO, gerçekçi olmayan bir şekilde elverişsizdir. O zaman getirmek gerekli olacaktır. Çünkü "Sat" veya "sat" yazarsanız, hiçbir şey sürmez.
-- Hata istiyorsan hata yap:
ERROR = -1 ;
Ve böylesi daha iyi
--
Neden kırmak? Diyelim ki bir milisaniye önce sipariş TP tarafından kapatıldı - bu nedenle geri kalanının kapatılması gerekmiyor mu? Böyle daha iyi:
--
Bir dize işe yaramazdan daha kötüdür - zararlıdır. Belki de bu kastedilmiştir?
--
Onlar. aniden emir kapatılamazsa, "direksiyonunu bırak, gözlerimizi kapat ve çığlık atmaya başla."
Gerisi kapatılmalı mı? Tekrar denemen gerekmez mi?
Neden burada bir hata döndürün? Örneğin, her şey başarıyla kapatıldıysa true ve değilse false döndürmek çok daha uygundur.
Şimdilik her şey gibi.
-- Alt çizgi ve çift alt çizgi ile başlayan adların kullanılması kötü bir biçimdir. Sonunda altını çizmekten daha iyidir.
Fonksiyonların içinde alt çizgi ile başlayan isimler kullanarak değişkenleri yeniden tanımlama riskini ortadan kaldırıyorum. O. start() içinde aynı adları güvenle kullanabilirim, ancak alt çizgi olmadan. bu da kodun şeffaflığını artırır.
- _Type_Order neden bir dizedir? IMHO, gerçekçi olmayan bir şekilde elverişsizdir. O zaman getirmek gerekli olacaktır. Çünkü "Sat" veya "sat" yazarsanız, hiçbir şey sürmez.
Haklısın tabi ki. Ancak, bir dize kullanmak kodun şeffaflığını arttırır ve şu anda sahip olduğum kod miktarı ile bir döküme gerek yoktur. Gerçekten bu sorunla karşılaştığımda yapacağım ama şimdilik buna gerek yok. Sadece SAT veya AL yazarım.
Kesinlikle haklısın, teşekkürler.
IsTradeContextBusy() işlevi yalnızca iş parçacığının meşguliyeti hakkında bilgi verir, IsTradeAllowed() biraz daha geniştir
Onlar. Aniden emir kapatılamazsa "direksiyonunu bırak, gözlerimizi kapat ve çığlık atmaya başla"
evet, tam olarak böyle hata ayıklama dönemi için
Neden burada bir hata döndürün? Örneğin, her şey başarıyla kapatıldıysa true ve değilse false döndürmek çok daha uygundur.
Teşekkürler, sanırım neyin yanlış olduğunu anladım. Şimdi kontrol edip tekrar yazacağım.
Hata şu şekildeydi:
bool _Result değişkeni başlatılmadı, bu, orada false olacağı anlamına gelir, bu nedenle, koşulların hiçbiri karşılanmadığından, _Result değişkenini değiştirmedik ve zaten false içeriyor. Ve işlev, gerçekte var olmayan hata işlemeye geçer.
Fonksiyonu düzelttim ve buraya gönderdim, birilerinin işine yarayacağını düşünüyorum.
PS Moderatörleri . Böyle bir şube tesadüfen ortaya çıktı - siparişlerin doğru şekilde kapatılmasıyla ilgili hazır bir eğitim. Belki yeniden adlandırmaya değer, örneğin - ayrıştırma örnekleriyle siparişler nasıl doğru bir şekilde kapatılır?
PPS Katılan herkese çok TEŞEKKÜR EDERİZ . Belki daha fazla soru olacaktır.
Hata şu şekildeydi:
bool _Result değişkeni başlatılmadı, bu, orada false olacağı anlamına gelir, bu nedenle, koşulların hiçbiri karşılanmadığından, _Result değişkenini değiştirmedik ve zaten false içeriyor. Ve işlev, gerçekten var olmayan hataları işlemeye devam eder.
Fonksiyonu düzelttim ve buraya gönderdim, birilerinin işine yarayacağını düşünüyorum.
PS Moderatörleri . Böyle bir şube tesadüfen ortaya çıktı - siparişlerin doğru şekilde kapatılmasıyla ilgili hazır bir eğitim. Belki yeniden adlandırmaya değer, örneğin - ayrıştırma örnekleriyle siparişler nasıl doğru bir şekilde kapatılır?
PPS Katılan herkese çok TEŞEKKÜR EDERİZ . Belki daha fazla soru olacaktır.
CodeBase'e bakarsanız ve forumu dikkatlice okursanız, siparişlerin doğru şekilde kapatılmasına dair yüzden fazla örnek olacaktır, ancak bu, tüm şubelerin hemen yeniden adlandırılması gerektiği anlamına gelmez. Yeterince kahraman var.
Hata şu şekildeydi:
bool _Result değişkeni başlatılmadı, bu, orada false olacağı anlamına gelir, bu nedenle, koşulların hiçbiri karşılanmadığından, _Result değişkenini değiştirmedik ve zaten false içeriyor. Ve işlev, gerçekten var olmayan hataları işlemeye devam eder.
Fonksiyonu düzelttim ve buraya gönderdim, birilerinin işine yarayacağını düşünüyorum.
PS Moderatörleri . Böyle bir şube tesadüfen ortaya çıktı - siparişlerin doğru şekilde kapatılmasıyla ilgili hazır bir eğitim. Belki yeniden adlandırmaya değer, örneğin - ayrıştırma örnekleriyle siparişler nasıl doğru bir şekilde kapatılır?
PPS Katılan herkese çok TEŞEKKÜR EDERİZ . Belki daha fazla soru olacaktır.
IMHO: İşlevin mantığıyla anlaşılmaz olduğu ortaya çıktı. Bir testçi için, o zaman çok fazla gereksizse, eğer gerçekse, o zaman hataları ele almaya değer. Döndürülen değerin hiçbir anlamı yoktur - dış düzeye (çağrı düzeyine) çağrının bir hatayla sona erdiğini, hatanın kendisini kaybederken, günlüğe yazdığını bildirirsiniz - uzman ne düşünüyor?
Nasıl daha doğru olurdu: (yine IMHO)
1. Hata numarasını okuyun ve saklayın.
2. Hataları kurtarılabilir ve kurtarılamaz olarak ayırın. Bunu yapmak için bir işleyici yapın - siparişin hala kapatılabilmesi durumunda (meşgul iş parçacığı, bağlantı kesilmesi ... vb.) Bu hatalar hemen işlenir. Bunu yaptım (önce kurtarılamaz, sonra ne "düzeltilebilir"):
3. Önemli bir hata olması durumunda, bu durumun harici modülde ele alınabilmesi için hata bayrağını değil, numarasını döndürün. İşlemin sonucunu analiz ederken:
İyi şanlar.
mola/devam hakkında not
soru muamma. Hala siparişler varsa, al/durdur tetiklendiğinde, siparişlerin numaralandırması değişecektir - yani, sipariş yine seçilecektir: bilete göre değil, seri numarasına göre seçersiniz. Sipariş seçilmemişse sipariş yok demektir. Her seferinde sipariş sayısını kontrol etmediğiniz için, döngüyü birkaç kez boşta olacak şekilde çalıştırın.