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
Tamamlamamı tavsiye ettiğiniz kodlama alıştırması için "geçersiz bilet" hatasını düzelttim. Kişisel görüntülemeniz için uzman danışmanın bir kopyasını ekledim.
Bu alıştırmanın OrderClose() fonksiyon bölümünün tamamlanmış olduğuna inanıyorum.
Print() fonksiyon bölümü bu alıştırmanın tamamlanmış olduğuna inanıyorum.
Geriye sadece üçüncü bölüm olan OrderModify() işlevi kaldığına inanıyorum.
Teşekkür ederim.
Sorunu çözmediniz, bunun üzerinde çalıştınız, bu, sorunun anlaşılmadığı durumlarda normaldir. Daha önce de söylediğim gibi, semptomu değil sebebi düzeltin. . .
Hala USDJPY Bilet numarasını yazdırmıyorsunuz, lütfen orijinal gereksinimi kontrol edin .
MarketInfo() çağrılarınız işe yarasalar bile yanlış. . .
Simon,
OrderModify() işlevi hatasız yürütülür.
OrderPrint() işlevi hatasız yürütülür.
OrderClose() işlevi hatasız yürütülür.
Lütfen yanıtınızı gönderin.
Teşekkür ederim.
Lütfen yanıtınızı gönderin.
Sorunu çözmediniz, bunun üzerinde çalıştınız, bu, sorunun anlaşılmadığı durumlarda normaldir. Daha önce de söylediğim gibi, semptomu değil sebebi düzeltin. . .
Hala USDJPY Bilet numarasını yazdırmıyorsunuz, lütfen orijinal gereksinimi kontrol edin.
MarketInfo() çağrılarınız işe yarasalar bile yanlış. . .
Ve buna ek olarak . . .
daha önce olduğu gibi aynı durumdaysanız, USDJPY emri olmadığında OrderStopLoss(), OrderTakeProfit(), OrderSelect() ve OrderType() çağrılarında başarısız olursunuz
bu ne anlama geliyor? Bu kod satırından beklentiniz nedir? Lütfen belgelerine bakmadan cevap verin.
GetLastError ();
Son kod bloğunda, neden bu kod satırını yürütmek istiyorsunuz? . . .
Yalnızca . . .
ancak TP ve SL'den bağımsız olarak her zaman bu kod satırını ve onu takip eden tüm kodu yürüteceksiniz?
MarketInfo() çağrılarınız hala yanlış. . . nedenini öğrenmek için belgelere bakın.
Simon,
Sorunu çözmedin, üzerinde çalıştın...
Hangi sorunu henüz çözmediğimi düşünüyorsun?
Hala USDJPY Bilet numarasını yazdırmıyorsunuz...
MarketInfo() çağrılarınız işe yarasalar bile yanlış. . .
MetaEditor sözlüğü MarketInfo() fonksiyon örneği:
Örneklem:
İşte OrderClose() fonksiyon kodu bloğumun bir örneği:
OrderClose() işlev kodu örnek biçimimde neyin yanlış olduğuna inanıyorsunuz? MetaEditor sözlüğü tarafından sağlanan 'MarketInfo()' örneğiyle neredeyse aynı görünüyor.
Ve buna ek olarak . . .
bu ne anlama geliyor? Bu kod satırından beklentiniz nedir? Lütfen belgelerine bakmadan cevap verin.
GetLastError ();
GetLastError() işlevi, testleri çalıştırırken 'Uzmanlar' sayfasına bir hata yazdırır. İşlev hata bulamazsa sıfır (0) yazdırılır. Yukarıda verdiğim anlık görüntüde basılan sıfıra dikkat edin.
Son kod bloğunda, neden bu kod satırını yürütmek istiyorsunuz? . . .
Yalnızca . . .
ancak TP ve SL'den bağımsız olarak her zaman bu kod satırını ve onu takip eden tüm kodu yürüteceksiniz?
Evet, bunu gündeme getirmenize sevindim çünkü bunu yapmanın ardındaki mantığı açıklayacağım.
"/* - */" çok satırlı yorumlar kullanılarak program yürütmesinden diğer tüm kod blokları çıkarılırsa ve Start() ve Return(0) işlevleri içinde kalan yalnızca iki kod bloğu...
ikinci kod bloğunun altında işlev çağrısı bulunur:
Print() işlevi, sayıyı uzmanlar bölmesine süresiz olarak yazdırmaya devam eder ve yazdırmaya devam eder. Eklersem inanırdım...
Print() işlevi yalnızca bir kez yürütülecektir, çünkü bunun hemen altındaki OrderModify() işlevi yürütüldüğünde, SL ve TP artık sıfır olmayacak ve Print() işlevinin yüklenmesine neden olacaktır.
Şimdi, bir programın nasıl yürütüldüğü nedeniyle durumun böyle olmadığını anlıyorum. Bir programın yukarıdan aşağıya yürütüldüğünü anlıyorum, bu nedenle program tüm döngüsünü ilk kez bitirdiğinde yukarıdan aşağıya yeniden yürütmeye çalışacak ve olmadığı için bileti 'Uzmanlar' bölmesine yazdıramayacaktır. USDJPY döviz çiftinde bir emir.
Teşekkür ederim.
Simon,
Sorunu çözmedin, üzerinde çalıştın...
Hangi sorunu henüz çözmediğimi düşünüyorsun?
while döngünüzü kodlama şeklinizden kaynaklanan temel sorun. . . OrderClose işlevi için Geçersiz bilete ve OrderModify için Bilinmeyen bilet 2'ye neden olan sorunu çözmediniz, çünkü belirtiyi ele aldınız.
MarketInfo() çağrılarınız işe yarasalar bile yanlış. . .
MetaEditor sözlüğü MarketInfo() fonksiyon örneği:
Üzgünüm, benim hatam, bu sorunu düzelttiniz. . . Bahsettiğim sorunun ne olduğunu biliyor musun?
Simon,
bu ne anlama geliyor? Bu kod satırından beklentiniz nedir? Lütfen belgelerine bakmadan cevap verin.
GetLastError() işlevi, testleri çalıştırırken 'Uzmanlar' sayfasına bir hata yazdırır. İşlev hata bulamazsa sıfır (0) yazdırılır. Yukarıda verdiğim anlık görüntüde basılan sıfıra dikkat edin.
Hayır, GetLastError() günlüğe yazdırmaz. . . "İşlev son oluşan hatayı döndürür, ardından son hata kodunun saklandığı özel last_error değişkeninin değeri sıfırlanır. Böylece GetLastError() için bir sonraki çağrı 0 döndürür."
Resminizdeki 0 muhtemelen . . .
Print (OrderCloseTime());
. . . ve artık Emir havuzunda olmadığı için Emir artık seçilmediğinden bir hatadır, çünkü artık kapatılmıştır ve Geçmiş havuzundadır. yapmaya çalıştığınız şeyi yapmak için böyle bir şeye ihtiyacınız olacak. . .
. . . . bu iki satırı ekleyin ve deneyin.
Print() işlevi, sayıyı uzmanlar bölmesine süresiz olarak yazdırmaya devam eder ve yazdırmaya devam eder. Eklersem inanırdım...
Print() işlevi yalnızca bir kez yürütülecektir, çünkü bunun hemen altındaki OrderModify() işlevi yürütüldüğünde, SL ve TP artık sıfır olmayacak ve Print() işlevinin yüklenmesine neden olacaktır.
Şimdi, bir programın nasıl yürütüldüğü nedeniyle durumun böyle olmadığını anlıyorum. Bir programın yukarıdan aşağıya yürütüldüğünü anlıyorum, bu nedenle program tüm döngüsünü ilk kez bitirdiğinde yukarıdan aşağıya yeniden yürütmeye çalışacak ve olmadığı için bileti 'Uzmanlar' bölmesine yazdıramayacaktır. USDJPY döviz çiftinde bir emir.
Sanırım amacımı kaçırıyorsun. . . biraz parantez eklersem belki daha net olur. . . bunu yaptın . . .
. . . bunu mu yapmak istedin
Simon,
Hala USDJPY Bilet numarasını yazdırmıyorsunuz...
İhtiyaç şuydu. . . "Bilet numarasını "USDJPY için bilet numarası = "" biçimindeki günlüğe yazdırın
Simon,
while döngünüzü kodlama şeklinizden kaynaklanan temel sorun. . . OrderClose işlevi için Geçersiz bilete ve OrderModify için Bilinmeyen bilet 2'ye neden olan sorunu çözmediniz, çünkü belirtiyi ele aldınız.
Bu konuyu sizinle en ince ayrıntısına kadar tartışmak istiyorum, düşüncelerimi başka noktalardan uzaklaşmadan sorunu çözmeye odaklamama izin veriyor.
Üzgünüm, benim hatam, bu sorunu düzelttiniz. . . Bahsettiğim sorunun ne olduğunu biliyor musun?
Evet, gündeme getirdiğiniz için teşekkürler!
"İşlev son oluşan hatayı döndürür, ardından son hata kodunun depolandığı özel last_error değişkeninin değeri sıfırlanır. Böylece GetLastError() için bir sonraki çağrı 0 döndürür."
MetaEditor sözlüğü şunları okur:
Bu fonksiyon en son oluşan hatayı döndürür , ardından son hata kodunun saklandığı özel son hata değişkeninin değeri sıfırlanır...
Yeşil anlaşılır , sarı anlaşılmaz .
. . . . bu iki satırı ekleyip deneyin.
Yapacak.
Sanırım amacımı kaçırıyorsun. . . biraz parantez eklersem belki daha net olur. . . bunu yaptın . . .
Bunu yapmak istediğime inanıyorum...
Çünkü bu şartı diledim...
kodun parantez içindeki bölümüne (" { } ") uygulanacak.
İhtiyaç şuydu. . . "Bilet numarasını "USDJPY için bilet numarası = "" biçimindeki günlüğe yazdırın
Yapılabilir.
Teşekkür ederim.
"İşlev son oluşan hatayı döndürür, ardından son hata kodunun depolandığı özel last_error değişkeninin değeri sıfırlanır. Böylece GetLastError() için bir sonraki çağrı 0 döndürür."
MetaEditor sözlüğü şunları okur:
Bu fonksiyon en son oluşan hatayı döndürür , ardından son hata kodunun saklandığı özel son hata değişkeninin değeri sıfırlanır...
Yeşil anlaşılır , sarı anlaşılmaz .
Tamam, Belgelerden de görebileceğiniz gibi GetLastError() hiçbir şey yazdırmaz. . . sadece hata numarasını döndürür . . . yani onu kullanmak için onunla bir şeyler yapmalısın. . .
GetLast Error()'u çağırdığınızda, hatayı döndürür ve ardından son hatayı tutmak için dahili olarak kullandığı değişkeni sıfırlamak için siler. . . yani bunu yaptıysanız. . .
GetLastError()'a yapılan 2. çağrı, ilk çağrı hata numarasını tutan değişkeni sıfırladığı için 0 döndürür. . . ayrıca yalnızca en son hatanın tutulduğunu unutmayın.
Sanırım amacımı kaçırıyorsun. . . biraz parantez eklersem belki daha net olur. . . bunu yaptın . . .
Bunu yapmak istediğime inanıyorum...
Çünkü bu şartı diledim...
kodun parantez içindeki bölümüne (" { } ") uygulanacak.
Ama yapmadın. . . tasarımınızda gözden kaçırdınız, kodladığınızda kaçırdınız, sonra kodunuzu okuduğunuzda kaçırdınız ve demek istediğinizi yapıp yapmadığını kontrol ettiniz, sonra test ettiğinizde kaçırdınız. . . . Diş telleri, avucunuzun içi gibi bilmeniz gereken temel şeylerden biridir.
Bunu neden kaçırdığınızı anlamanız ve bu sorunu çözmeniz gerekir. . . Sizin yerinize kodlamaları için onlara ödeme yapmak istemediğiniz sürece, başka hiç kimse bunu sizin için yapamaz.
Simon,
Resminizdeki 0 muhtemelen . . .
Print (OrderCloseTime());
Hayır! ;)
Dokümantasyon şeridinde bir yolculuğa çıkalım mı? Hahaha.
Not: Sıra, OrderSelect() işlevi tarafından önceden seçilmelidir.
İlk olarak, ikimiz de son zamanlarda kodladığım OrderClose() fonksiyon kod bloğuna bir göz atalım...
Ardından, 'Uzmanlar' bölmesinin bir anlık görüntüsünde gösterilen sonuca bir göz atalım...
Aaah, elimizde ne var? :)
Lütfen yeni eklenen uzman danışman için bir yanıt gönderin. Henüz egzersizinizin içerdiği tüm kriterleri karşılıyor mu?
while döngünüzü kodlama şeklinizden kaynaklanan temel sorun. . . OrderClose işlevi için Geçersiz bilete ve OrderModify için Bilinmeyen bilet 2'ye neden olan sorunu çözmediniz, çünkü belirtiyi ele aldınız.
Bu konuyu sizinle en ince ayrıntısına kadar tartışmak istiyorum, düşüncelerimi başka noktalardan uzaklaşmadan sorunu çözmeye odaklamama izin veriyor.Teşekkür ederim.