Hatalar, hatalar, sorular - sayfa 1168

 
TheXpert :

Ta emae...

Transferden önce longdan double koymanız gerekiyor. Genel bir değişken için . Sıfır değeri değil, sadece buldozerden alınan bir çift sayı, örneğin 1.34 * e-307 olabilir, 4.29 * e + 120 olabilir, çünkü uzun bitler var.

Aktarımdan sonra, paketi çiftten uzuna çıkarın.

Herşey.

Tamam anladım ;)

 
artmedia70 :

Tamam anladım ;)

Pekala, anlamıyorum.

Double, verileri kısaltır, bu nedenle doğrudan bir double'da uzun süre kullanmak imkansızdır. Ancak her ikisi de 8 bayttır, bu, örnekte yaptığım gibi, double'ı bir kap olarak kullanarak kayıpsız aktarabileceğiniz anlamına gelir.

 
TheXpert :

Pekala, anlamıyorum.

Double, verileri kısaltır, bu nedenle doğrudan bir double'da uzun süre kullanmak imkansızdır. Ancak her ikisi de 8 bayttır, bu, örnekte yaptığım gibi, double'ı bir kap olarak kullanarak kayıpsız aktarabileceğiniz anlamına gelir.

Andrey, GV terminalindeki depolama ve görüntüleme biçimini anlamadım. Grafiğin kimliğini gösteriyor gibiydi, ancak 0 gösteriyor.
 
artmedia70 :
Andrey, GV terminalindeki depolama ve görüntüleme biçimini anlamadım. Grafiğin kimliğini gösteriyor gibiydi, ancak 0 gösteriyor.

GV'de görünüşte çöpe benzeyen bir şey göreceksiniz, bu "çöp" ters dönüşümden sonra bir grafik kimliğine dönüşecek.

Bir double'ın kendi veri formatı vardır, long atarken onu double formata koyuyoruz ve tıpkı 8 byte'lık bir bellek gibi kullanıyoruz.

 
TheXpert :

GV'de görünüşte çöpe benzeyen bir şey göreceksiniz, bu "çöp" ters dönüşümden sonra bir grafik kimliğine dönüşecek.

Bir double'ın kendi veri formatı vardır, long atarken onu double formata koyuyoruz ve tıpkı 8 byte'lık bir bellek gibi kullanıyoruz.

Evet, bunu zaten anladım, teşekkürler.
 
Fark ettiğim bir şey, başka bir komut dosyasına (gösterge) bağlı bir kitaplığı veya kaynakları güncellemenin, (gösterge) yeniden derlenmesine ve terminal tarafından yeniden yüklenmesine yol açmasıdır. Sormadan! Bu bir hata veya özellik mi? Not: MT4'ten bahsediyoruz.
 
artmedia70 :

Daha çok bir soru gibi:

Ada göre mevcut bir GV terminali arıyorsunuz. Bu sayede, EA'nın üzerinde çalıştığı grafiğin kimliği göstergeye iletilir. Gösterge başka bir sembolde asılı kalıyor. Yani, yönetici danışmanın üzerinde çalıştığı çizelgenin kimliğini göstergeye iletmek istiyorum. Şuna benziyorum:

İşte terminalin bana söylediği:


Değişkeni saymaya çalıştığı anda. Ve hemen bir satıra, sadece onu günlüğe çıkarmak için ve çeşitli türlerdeki değişkenlere - hepsi aynı. 2 fark.

Sorun nedir?

Burada https://www.mql5.com/en/docs/basis/types/casting "Basit yapı tiplerine veri dökümü" paragrafını okuyun

Sadece senin davan. Çiftler, _sayı_ karakterde uzunlara göre çok daha düşük doğruluğa sahiptir. Bu yüzden basit bir atama ile bu sonucu elde edersiniz.

Ancak 64 bitlik bir global değişkeni _any_ 64 bitlik bilgileri depolamak için tam olarak kullanabilirsiniz (örneğin, 8 baytlık kısa dizeler. Uzunlardan bahsetmiyorum bile)

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aşağıdaki sorunla karşılaştı. Terminali yeniden başlattıktan sonra gösterge, bir EA'dan çağrıldığında başka bir zaman diliminden "garip" değerler döndürür.
EA M2 üzerindedir, gösterge verileri M3'ten alınmıştır.
1) terminali 14:40'ta yeniden başlatan günlüklerde:
PE 0 14:39:50.524 terminal durdu
doktor 0 14:40:06.009 terminal MetaTrader 5 Alfa-Forex x64 yapı 930 başladı (Alfa-Forex)
II 0 14:40:06,586 terminal OpenCL bulunamadı, daha iyi performans için en son OpenCL sürücüsünü yükleyin
JO 0 14:40:07.257 uzmanlar uzman FX_Money_Flow_v1_06 (EURUSD,M2) başarıyla yüklendi
EA, elde edilen gösterge değerlerini son ve sondan bir önceki çubukta yazar:
İLE İLGİLİ 0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) TF1 gösterge değeri: -1.#QNAN -1.#QNAN
zaten bir sonraki çubukta veriler doğru:
NJ 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 gösterge değeri: -0.02798411604597126 -0.04893498839583753
2) 19:55'te ikinci yeniden başlatma:
CO 0 19:55:06.918 terminal durdu
RO 0 19:55:28.399 terminal MetaTrader 5 Alfa-Forex x64 yapı 930 başladı (Alfa-Forex)
OP 0 19:55:28.992 terminal OpenCL bulunamadı, daha iyi performans için en son OpenCL sürücüsünü yükleyin
RD 0 19:55:29.507 uzmanlar uzman FX_Money_Flow_v1_07 (EURUSD,M2) başarıyla yüklendi
yine aynı şarkı:
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 gösterge değeri: -1.#QNAN -1.#QNAN

ama artık normal çalışmaya başlamıyor, her zaman şöyle:

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 gösterge değeri: -1.#QNAN -1.#QNAN


Aynı zamanda, M3 grafiği açıktır ve üzerine her şeyi doğru gösteren bir gösterge uygulanır:
(terminal ile günlükler arasındaki zaman farkı 5 saattir, ekran görüntüsü ikinci yeniden başlatmayı ifade eder)
Dosyalar:
 
OBJ_LABEL , MT4'te UNICODE'u desteklemiyor gibi mi? Değeri hem programlı olarak hem de Etiket özellikleri iletişim kutusundan değiştirdim: sembol eklendi, iletişim kutusunun kendisinde doğru bir şekilde görünüyor, ancak grafikte soru işaretiyle (?) görüntüleniyor. Seçilen yazı tipi unicode'dur ve etiket özellikleri iletişim kutusunda yazı tipleriyle birlikte açılır listede doğru şekilde seçilmiştir.
 
stringo :

Burada https://www.mql5.com/en/docs/basis/types/casting "Basit yapı tiplerine veri dökümü" paragrafını okuyun

Sadece senin davan. Çiftler, _sayı_ karakterde uzunlara göre çok daha düşük doğruluğa sahiptir. Bu yüzden basit bir atama ile bu sonucu elde edersiniz.

Ancak 64 bitlik bir global değişkeni _any_ 64 bitlik bilgileri depolamak için tam olarak kullanabilirsiniz (örneğin, 8 baytlık kısa dizeler. Uzunlardan bahsetmiyorum bile)

Evet, yaptım, teşekkürler.