Hatalar, hatalar, sorular - sayfa 1931
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
Sabahlar akşamlardan daha akıllıdır... :)
yardımda
MT4:
Sabit boyutlu nesneler için: OBJ_BUTTON, OBJ_RECTANGLE_LABEL ve OBJ_EDIT, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE özellikleri, piksel cinsinden X ve Y koordinatlarının sayılacağı grafik köşesine (OBJPROP_CORNER) göre nesnenin sol üst noktasının konumunu ayarlar.
MT5:
Sabit boyutlu nesneler için: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT ve OBJ_CHART, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE özellikleri, X ve Y'nin piksel cinsinden koordinatları olacağı grafik köşesine (OBJPROP_CORNER) göre nesnenin sol üst noktasının konumunu ayarlar. sayıldı.
Aynı şey gibi görünüyor, sadece MT4'te OBJ_LABEL için nesnenin sol noktası yok - doğru bir tane var, ancak bu benim öfkeme neden olmadı, gerçek şu ki ObjectSet kullanan eski MT4 kodunun nesnelerin göreceli olarak yerleştirilmesine izin vermesi. kenarlar (köşeler) - sol taraftaki nesneler için pikseller ilk karakterden, sağ taraf için - son karakterden hesaplanmıştır ve yeni sürüm her zaman girintiyi ilk karakterden hesaplar, bu da etiketleri konumlandırmayı zorlaştırır metinle, kaç metin karakteri olacağı her zaman bilinmediğinden. Geliştiricilerden bir metin hizalama yöntemi seçeneği eklemelerini istiyorum!
MT5'te sağa ve sola hizalamayı bilen biri varsa, lütfen ilgili işlevi paylaşın!
Ve kızmıyorsunuz, ancak yardımı dikkatlice okuyun:
OBJ_LABEL, OBJ_BITMAP_LABEL ve OBJ_RECTANGLE_LABEL nesneleri için, nesnenin bağlantı noktasının konumlandığı tablo açısını göreli olarak ayarlayabilirsiniz. Bu köşe, nesnenin dört ENUM_BASE_CORNER numaralandırma değerinden birine sahip olabilen OBJPROP_CORNER özelliği aracılığıyla ayarlanır:
tanımlayıcı
Tanım
CORNER_LEFT_UPPER
Bağlantı noktası koordinatları, grafiğin sol üst köşesine göre ayarlanır
CORNER_LEFT_LOWER
Bağlantı noktası koordinatları, grafiğin sol alt köşesine göre ayarlanır
CORNER_RIGHT_LOWER
Bağlantı noktası koordinatları, grafiğin sağ alt köşesine göre ayarlanır
CORNER_RIGHT_UPPER
Bağlantı noktası koordinatları, grafiğin sağ üst köşesine göre ayarlanır
Nesnenin bağlantı noktasının konumu, OBJPROP_ANCHOR özelliği tarafından belirlenir ve ENUM_ANCHOR_POINT numaralandırmasının 9 değerinden biri olabilir:
tanımlayıcı
Tanım
ANCHOR_LEFT_UPPER
Sol üst köşedeki bağlantı noktası
ANCHOR_LEFT
Bağlantı noktası sol orta
ANCHOR_LEFT_LOWER
Sol alt köşedeki bağlantı noktası
ANCHOR_LOWER
Bağlantı noktası alt orta
ANCHOR_RIGHT_LOWER
Sağ alt köşedeki bağlantı noktası
ANCHOR_RIGHT
Bağlantı noktası sağ merkez
ANCHOR_RIGHT_UPPER
Sağ üst köşedeki bağlantı noktası
ANCHOR_UPPER
Bağlantı noktası üst merkez
ANCHOR_CENTER
Bağlantı noktası kesinlikle nesnenin merkezinde
4 rakamı ile adlandırmaya çalıştığınız ve orada olmayan liste maddesini sizin için yukarı mı taşıyayım? Sıfır olur - ve her şey yerli yerindedir.
Tabii ki her şeyi taşıdım - belki aptalım ..
Ve kızmıyorsunuz, ancak yardımı dikkatlice okuyun:
OBJ_LABEL, OBJ_BITMAP_LABEL ve OBJ_RECTANGLE_LABEL nesneleri için, nesnenin bağlantı noktasının konumlandığı tablo açısını göreli olarak ayarlayabilirsiniz. Bu köşe, nesnenin dört ENUM_BASE_CORNER numaralandırma değerinden birine sahip olabilen OBJPROP_CORNER özelliği aracılığıyla ayarlanır:
tanımlayıcı
Tanım
CORNER_LEFT_UPPER
Bağlantı noktası koordinatları, grafiğin sol üst köşesine göre ayarlanır
CORNER_LEFT_LOWER
Bağlantı noktası koordinatları, grafiğin sol alt köşesine göre ayarlanır
CORNER_RIGHT_LOWER
Bağlantı noktası koordinatları, grafiğin sağ alt köşesine göre ayarlanır
CORNER_RIGHT_UPPER
Bağlantı noktası koordinatları, grafiğin sağ üst köşesine göre ayarlanır
Nesnenin bağlantı noktasının konumu, OBJPROP_ANCHOR özelliği tarafından belirlenir ve ENUM_ANCHOR_POINT numaralandırmasının 9 değerinden biri olabilir:
tanımlayıcı
Tanım
ANCHOR_LEFT_UPPER
Sol üst köşedeki bağlantı noktası
ANCHOR_LEFT
Bağlantı noktası sol orta
ANCHOR_LEFT_LOWER
Sol alt köşedeki bağlantı noktası
ANCHOR_LOWER
Bağlantı noktası alt orta
ANCHOR_RIGHT_LOWER
Sağ alt köşedeki bağlantı noktası
ANCHOR_RIGHT
Bağlantı noktası sağ merkez
ANCHOR_RIGHT_UPPER
Sağ üst köşedeki bağlantı noktası
ANCHOR_UPPER
Bağlantı noktası üst merkez
ANCHOR_CENTER
Bağlantı noktası kesinlikle nesnenin merkezinde
Teşekkürler yarın çözmeye çalışacağım...
Sabahlar akşamlardan daha akıllıdır... :)
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2017.07.18 09:51
Neredeyse çocukça soru: neden öyle?Nedense DoubleToString'in normalleştirmeden sonra anlamsız olduğundan emindim. Ama hayır, senaryonun gösterdiği gibi. Nedenmiş?
Görünüşe göre double -> string cast düzgün çalışmıyor.
Örneği anlamak oldukça zor, o yüzden bir tane daha verdim.
İşte bununla ilgili
Строковая в double переводится без проблем. Обратно - получаем другой результат.
Onlar. "8.905" dizesini aldı, ikiye katladı ve hemen dizeye dönüştürdü, 8.9049999999999999 elde etti. Ama OnStart'ın ilk satırı (çift)"8.905" == 8.905 olduğunu gösteriyor. Onlar. 8.905 çıktısı olmalıdır.
Tabii ki, bariz boş sonlandırılmış durum çalışmamalıdır:
Konuyu biraz araştırdıktan sonra şu duruma geldim.
Lütfen double -> string dönüşümünün neden hala doğru kabul edildiğini açıklayın. Son örnek tamamen akıllara durgunluk veriyor.
Lütfen double -> string dönüşümünün neden hala doğru kabul edildiğini açıklayın. Son örnek tamamen akıllara durgunluk veriyor.
Son örneğe yorum yapın
Gerçek sayılar, üzerlerinde aynı dönüşümler yapıldıysa aynı kabul edilebilir. Görünüşte özdeş dönüşümler bile - num*0.5 ve num/2.0 farklı sonuçlara yol açar. Aynı şey ayna işlemleri için de söylenebilir. sayı*=sayı2, sayı/=sayı2. Ortaya çıkan sayı, orijinal sayıya eşit olmayacaktır. Gerçek sayıların dünyasına hoş geldiniz.
Bu örnekte, gerçek bir sayı ile normalleştirme sürecinde 3 işlem yapılmıştır - num*=1000, num+=0.5, num/=1000
Hata ayıklayıcıda adım adım kontrol edebilirsiniz
SD'de bu durumda her şeyin doğru olduğunu söylüyorlar
Ve neden utanç verici?
Ondalık reel sayıların büyük çoğunluğu, kalansız ikili bir kesir olarak temsil edilemez. Üzerine iki katı bir depolama formatı dayatıyoruz ve böyle bir çirkinlik alıyoruz.
Genel olarak, ondalık tür zarar vermez, kullanışlı bir şeydir.
Son örneğe yorum yapın
Gerçek sayılar, üzerlerinde aynı dönüşümler yapıldıysa aynı kabul edilebilir. Görünüşte özdeş dönüşümler bile - num*0.5 ve num/2.0 farklı sonuçlara yol açar. Aynı şey ayna işlemleri için de söylenebilir. sayı*=sayı2, sayı/=sayı2. Ortaya çıkan sayı, orijinal sayıya eşit olmayacaktır. Gerçek sayıların dünyasına hoş geldiniz.
Bu örnekte, gerçek bir sayı ile normalleştirme sürecinde 3 işlem yapılmıştır - num*=1000, num+=0.5, num/=1000
Hata ayıklayıcıda adım adım kontrol edebilirsiniz
Çok yapıcı bir açıklama, teşekkürler!
Ama işte birkaç beyni çıkaran böyle bir karşı örnek.
Normalleşme böyle mi yürümeli?
Ve neden utanç verici?
Açıklamadan sonra, Glory artık utanç verici değil, ancak daha sonra NormalizeDouble'ın çalışmasının doğruluğundan şüphe duyan bir örnek ortaya çıktı.