
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
Şöyle bir fonksiyon yazabilirsiniz:
Son değer olmadan çağırırsanız, varsayılan değer kullanılacaktır, yani yazı tipi boyutu 10 olacaktır.
Veya varsayılan yazı tipi boyutu değerini açıkça geçersiz kılabilirsiniz:
Demek istediğin bu mu?
Demek istediğin bu mu?
Belki de İngilizcem yorumunuzu anlamayı engelliyor.
Yorumun için teşekkürler.
Eğer doğru anladıysam şöyle anlıyorum: Label için 1x Void fonksiyonu yazabilirim ve aşağıdaki gibi iki yöntemle kullanabilirim. ( Yazı tipi boyutu parametreli ve onsuz etiket nesnesi için bir Void işlevi kullanabilirim , bu doğru mu? )
DrawLabel( "MyLabel" , "Hello,World!" , 50 , 50 , 24 ); // #2
Bu nedenle, bu Elektronik Tablo Nesnesi için bu sorunun nereden geldiği ve nasıl çözebileceğim için birkaç saat harcadığımı söylemek isterim.
Bu yüzden, Etiket işlevlerinden değil, aşağıdaki koddan geldiğini hissediyorum, çünkü 2x Etiket işlevim vardı, bunlardan birini kaldırdım, Teklif Et ve Al fiyat göstergeleri (piyasa fiyatları) hala iyi çalışıyor, ancak Elektronik Tablo Etiket işleviyle çalışmıyor . E-tablo, Etiket işlevi olmadan iyi çalışır.
Elektronik Tablodan bazı kodları paylaşmam gerekiyor. Aşağıdaki kod gibi şüpheliyim. ( Hatta - E-Tablo için Label işlevi olmadan Label nesnesi oluşturduğumda aşağıdaki kodun iyi çalıştığını bir kez daha belirtmem gerekiyor )
spread = MarketInfo ( symbol, MODE_SPREAD ) / 10 ;
spreadstring = DoubleToStr ( spread, 1 ) ;
Her şey için teşekkürler.
Yaratmaya çalıştığınız bir şeyin gerçekten yaratıldığını doğrulamak için iyi bir uygulama.
Örneğin, ekran boyutları söz konusu olduğunda, birçok kullanıcı farklı çözünürlükler kullanır ve ne zaman bir nesnenin grafik genişliği veya yüksekliği sınırları üzerinde oluşturulduğunda, nesne çizilmez veya kaybolmaz.
Veya örneğin 4200 hatası, oluşturmaya çalıştığınız nesnenin zaten var olduğunu gösterecektir.
Bu, nesnenize farklı değerler atamaya çalışıyorsanız önemlidir, oluşturma başarısız olursa yeni değerler atanmayacaktır.
Oluşturmanın başarılı olup olmadığını kontrol edebilmeniz için bu işlevlerin bir değer döndürmesinin nedeni budur.
İşlevin başarılı olup olmadığını kontrol etmek size kalmış, ancak iyi bir kodlayıcı sonucu kontrol edecektir.
Bir void işlevi yazarsanız, hiçbir şey döndürmez, bu nedenle çağırdığınızda neyin geri geldiğini analiz ederek sonucu kontrol edemezsiniz.
Ancak, işlevin kendisini de kontrol edebilir ve bir şeyler ters gittiğinde basit bir uyarı verebilirsiniz.
Bunu yaparsanız, normal olarak bu uyarıları görmezsiniz, ancak bir şeyler ters gittiğinde, sizi hemen sorunun kendisine yönlendirir.
İkinci sayı için birçok kez en azından bazı parametreleri atlayabilirsiniz, bunu yaparsanız fonksiyon varsayılan değerleri alacaktır.
Bu nedenle, standart parametrelere ihtiyaç duymadığınız veya yönlendirmek istemediğiniz sürece, bunları belirtin.
Yazı tipi boyutu, belirtmediğiniz zaman sadece varsayılan ayarları kullanacağı için iyi bir örnektir.
Ayrıca belirli nesneler arasında küçük farklılıklar vardır ve bu, işleve iletilen parametreler analiz edilirken görülebilir.
Hepsi aynı değişken setini paylaşmazlar, bu nedenle referans olarak nelerin geçirilip nelerin iletilemeyeceğine bakmak önemlidir.
Yayma ipiyle ne yapmak istediğinizden emin değilim, belki biraz daha ne için olduğunu ve nasıl kullanmak istediğinizi açıklayabilirsiniz?
Yayma ipiyle ne yapmak istediğinizden emin değilim, belki biraz daha ne için olduğunu ve nasıl kullanmak istediğinizi açıklayabilirsiniz?
Teklif , Sor , Elektronik Tablo vb. için Etiket Nesnesi İşlevini kullanıyorum. Elektronik tablo olmadan her şey mükemmel çalışıyor - ve onu silip yeniden yazdım, iyi bir etki olmadı.
Hata açıklaması için @honest_knave hata kodunu kullandıktan sonra. Daha fazla 4200 uyarısı görmüyorum.
Bahsettiğim gibi ' Elektronik Tablo'yu iki yerde, Init() işlevinde #1 - OnTick() işlevinde #2 kullanıyorum, ancak 'Spreadsheet' ile 2 yerde Bid, Ask kullanıyorum, herhangi bir hata, uyarı yok . Ancak bu elektronik tablo bana herhangi bir uyarı vermiyor, aynı zamanda güncellenmiyor.
EA'mın kodlarında herhangi bir nesne için oluşturma kesinlikle başarılı, hata yok, uyarı yok.
İyi kodlayıcı olduğumu bilmiyorum ya da ne?! (Kodlayıcı veya programcı olduğumu düşünmüyorum.) Ama sonucu görüyorum. Bu nedenle, yalnızca Etiket Nesnesi kullanabilirim (yalnızca elektronik tablo için işlevsiz).
Void işlevi istediklerimin sonuçlarını döndürür, ayrıca bu işlev ilk yayılma değeri için nesne oluşturur, ancak güncelleme yapmaz.
Yayma ipiyle ne yapmak istediğinizden emin değilim, belki biraz daha ne için olduğunu ve nasıl kullanmak istediğinizi açıklayabilirsiniz?
Tamam, sadece şu şekilde kullanmak istiyorum: Sadece şu an için EA'larımı açtığımda / grafiğe eklediğimde bana Elektronik Tablo Boyutunu ( / Value ) vermesini istiyorum. Daha sonra şu anki Hour Spread High / Low boyutları ( / değerleri ) için kod yazmaya çalışacağım.
Şimdiden teşekkürler.
Ayrıca onu bir çift dizide[] saklayabilir ve ardından en düşük yayılımın nerede olduğunu görmek için hepsini karşılaştırabilirsiniz.
--
ArrayResize (spread, SymbolsTotal ( 1 ), 0 );
for ( int i= 0 ;i< SymbolsTotal ( 1 );i++)
{
spread[i]= MarketInfo ( SymbolName (i, 1 ), 13 );
}
Aşağıdaki kodu kaldırdığımda, elektronik tablo mükemmel çalışmaya başlıyor.
Yani, sadece yardım etmem gerekiyor , bunun yerine nasıl iyi ( / Optimal ) kod yazabilirim lütfen?
Print ( __FUNCTION__ , ": failed to create text label! Error code = " , GetLastError ());
return ( false );
}
Etiket Nesnesi işlevi için aşağıdaki kodu saklıyorum.
Şimdiden teşekkürler.
(bu sorun gerçekten bir sorunsa - umarım MetaQuotes sorunu çözer - çünkü benden birkaç saat sürdü, bu kod endüstrisinde yeni olanlara yardım edin)
"Return(false)" ifadesini silin, ancak Print deyimini saklayın ve kodunuzu çalıştırın.
Sanırım bazı mesajlar alabilirsin. Değeri değiştirmek yerine etiketi tekrar tekrar oluşturmaya çalıştığınızı düşünüyorum.
"Return(false)" ifadesini silin, ancak Print deyimini saklayın ve kodunuzu çalıştırın.
NE OLUYOR BE!
Bu bok benim birkaç saatimi aldı, bunun hakkında ne söyleyebilirim bilmiyorum.
Bunu tüm Nesneler işlevlerimden kaldırabilir miyim?
Ayrıca nasıl çalıştığı hakkında bilgi verir misiniz?
Sadece teşekkürler dostum.
NE OLUYOR BE!
Bunu tüm Nesneler işlevlerimden kaldırabilir miyim?
Evet, ancak onu tutmak ve hatanın kaynağını ele almak daha iyi olur.
NE OLUYOR BE!
Ayrıca nasıl çalıştığı hakkında bilgi verir misiniz?
Dönüş operatörü , fonksiyona hemen çıkmasını söyler. İşlev bir değer döndürürse (sizin durumunuzda bu bir bool'dur), ayrıca bir değer döndürmeniz gerekir.
Nesneyi oluşturmadan önce var olup olmadığını kontrol ederseniz, hatanızdan (4200, değil mi?) kurtulacaksınız.
Açıkça yaptığın yorumlar için teşekkürler dostum.
Ben zaten aşağıdaki kod gibi yönteminizle değiştiriyorum. ( Etiket Nesnesi işlevi için )
Oldu - hata açıklaması hakkındaki yorumlarınızdan önce:
if ( ! ObjectCreate ( chart_ID, name, OBJ_LABEL , sub_window, 0 , 0 ) )
{
Print ( __FUNCTION__ , ": failed to create text label! Error code = " , GetLastError () );
return ( false );
}
// which one this code gives me error no: 4200
sonrasında:
if ( ! ObjectCreate ( chart_ID, name, OBJ_LABEL , sub_window, 0 , 0 ) )
{
if ( errorcode != 0 ) printf ( "Error %i: %s" , errorcode, ErrorDescription( errorcode ) );
return ( false );
}
// prevent error no: 4200 - but was not update spreadsheet values
Şimdi - ve mükemmel çalışıyor:
if ( ! ObjectCreate ( chart_ID, name, OBJ_LABEL , sub_window, 0 , 0 ) )
{
if ( errorcode != 0 ) printf ( "Error %i: %s" , errorcode, ErrorDescription( errorcode ) );
return ( false ); // removed this line
}
// now spreadsheet values updates, no any more error no: 4200