MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1294

 
ANDREY :

Hepinize iyi günler!

mql4'ten mql5'e geçmeye çalışıyorum.

SORU. Neden geçerli fiyat ile <1( mql4'te olduğu gibi) olması gereken Hay değişkeninin değeri arasındaki fark yerine, mql5 anlamadığım ifadeleri hesaplar ve görüntüler, örneğin, 2.99999999 -( eksi)05 .

mql5'in verilen değerler arasındaki farkı doğru bir şekilde hesaplaması nasıl sağlanır? NormalizeDouble() ile tüm değerleri normalleştirdim ama yukarıdaki değerler

değişmeden görüntülenir. Bu benim için garip çünkü her iki değer de doble tipinde

Yardımlarınız için hepinize teşekkür ederim.


2.99999999 -(eksi)05 = 2.999999999 / 100000 = 0.00002999999999. Matematikte böyledir.

-(eksi)05, 10 üzeri beşinci kuvvete bölünür.

 
IndependentMK :

Tekrar merhaba.
Lütfen yeni başlayanlar sorusuna dikkat edin.
Koddaki hataları belirtmek gerekir, çünkü test cihazında, EA siparişleri açmıyor...
Aynı zamanda, derleyici hata ve uyarı vermez, günlük benzer - hata yoktur ...

Koşullardan biri karşılanmadığı için açılmıyor.

Bu

 while (MA_Smoth_B > MA_Smoth_S)

yada bu

 if (MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B_Cl > MA_Simpl_S_Cl)

İki sifonu yorumlayın // ve hangisi olduğunu anlayacaksınız. Bu şekilde hatayı bulursunuz.

 
Александр :

2.99999999 -(eksi)05 = 2.99999999 / 100000 = 0.00002999999999. Matematikte böyledir.

-(eksi)05, 10 üzeri beşinci kuvvete bölünür.

Cevap için teşekkürler. Peki program neden 1.33671 fiyat değeri ile 0,00007 olması gereken Hay 1.33664 değeri arasındaki farkı bir ifade yerine hesaplayıp bunun yerine bir ifade çıktısı almıyor?

Aynı zamanda, 1.33664 değerine sahip Hay değişkeni yerine 1.33664 sabitini değiştirdiğimde (   SymbolInfoDouble(Symbol(),SYMBOL_BID) - 1.33664 ) ardından program bu değerler arasındaki gerçek farkı hesaplar, yani 0.00007. Nitekim kodda Hay değişkeni , bir önceki tikteki emrin açılış fiyatının değerini, double tipin değeri 1.33664'ü alır.  

ipucu için şimdiden teşekkürler

 
ANDREY :

Cevap için teşekkürler. Peki program neden 1.33671 fiyat değeri ile 0,00007 olması gereken Hay 1.33664 değeri arasındaki farkı bir ifade yerine hesaplayıp bunun yerine bir ifade çıktısı almıyor?

ipucu için şimdiden teşekkürler

DoubleToString() . Ve bu MQL5 ile ilgili değil, gerçek değerlerin günlüğe yanlış çıktısıyla ilgili. Bu aynı şekilde MQL4 için de geçerlidir.

Документация по MQL5: Преобразование данных / DoubleToString
Документация по MQL5: Преобразование данных / DoubleToString
  • www.mql5.com
[in]  Формат точности. Если значение digits лежит в диапазоне от 0 до 16, то будет получено строковое представление числа с указанным количество знаков после запятой. Если значение digits лежит в диапазоне от -1 до -16, то...
 
Artyom Trishkin :

DoubleToString() . Ve bu MQL5 ile ilgili değil, gerçek değerlerin günlüğe yanlış çıktısıyla ilgili. Bu aynı şekilde MQL4 için de geçerlidir.

Anladım. Teşekkür ederim. Bununla daha önce hiç karşılaşmadım. Şimdi biliyorum.

Şimdiye kadar, kodumla ilgili olarak kesinlik biçiminin tam olarak ne olduğunu tam olarak anlamadım. Bana öyle geliyor ki, bu ondalık basamak sayısı.
Ancak MT4'te tam olarak aynı kodda (OrderSend hariç), hafızam bana hizmet ediyorsa, Print işlevi her zaman iki fiyat değeri arasındaki farkın gerçek değerini, yani 1'den küçük bir sayıyı (0.00000) 5 basamaklı olarak gösterdi. 0'dan sonra.

 
ANDREY :

Anladım. Teşekkür ederim. Bununla daha önce hiç karşılaşmadım. Şimdi biliyorum.

Şimdiye kadar, kodumla ilgili olarak kesinlik biçiminin tam olarak ne olduğunu tam olarak anlamadım. Bana öyle geliyor ki, bu ondalık basamak sayısı.
Ancak MT4'te tam olarak aynı kodda (OrderSend hariç), hafızam bana hizmet ediyorsa, Print işlevi her zaman iki fiyat değeri arasındaki farkın gerçek değerini, yani 1'den küçük bir sayıyı (0.00000) 5 basamaklı olarak gösterdi. 0'dan sonra.

Her yerde gerçek veri değerleri görüntülenir. Gerçek sayıları temsil etmek için sadece farklı bir format. Çıkış formatı terminal için belirtilmemişse, hangi formatın daha uygun olacağına karar verir. Doğal olarak, bu, sayıları temsil etmek için tüm biçimleri bildiğinizi varsayar.

Her şey kılavuzda.

 
Artyom Trishkin :

Her yerde gerçek veri değerleri görüntülenir. Gerçek sayıları temsil etmek için yalnızca farklı bir biçim . Çıkış formatı terminal için belirtilmemişse, hangi formatın daha uygun olacağına karar verir. Doğal olarak, bu, sayıları temsil etmek için tüm biçimleri bildiğinizi varsayar.

Her şey kılavuzda.

Yani, MT4 ve MT5'in gerçek sayıları temsil etmek için farklı biçimleri var mı?
Ve mql5 Yardımında, bu sorunla başa çıkmak için tam olarak ne okumanız gerekiyor?

yardım için teşekkürler

 
Michail_David :
Merhaba uzman arkadaşlar. Göstergeyi ayarlamak için yardımınıza ihtiyacım var. Göstergenin özü aşağıdaki gibidir. Önceki çubuğa göre fiyat artışı miktarını hesaplayın. Yıldız çubuğu sıfır olarak alınır. Yani açılış fiyatı kapanış fiyatına eşittir. Derleme yaparken hata yok ama test ederken karakterin 80 20 satırında hata veriyor. Ayrıca sinyal hattını eğri çiziyor. Ancak ana arabelleğin yanlış hesaplanmasının nedeninin bu olduğunu düşünüyorum. Düzeltmeye yardım edin.

TAMAM. Görünüşe göre burada sadece seçilmiş birkaç kişi yardım alıyor.

 
Michail_David :

TAMAM. Görünüşe göre burada sadece seçilmiş birkaç kişi yardım alıyor.

böyle dene

 //--- typical price and its moving average
   for (i= 0 ; i<rates_total - 1 ; i++)
     {
      ExtTempBuffer[i] = NormalizeDouble ((close[i]-open[i])/ Point (), 2 );
 
Vitaly Muzichenko :

böyle dene

Teşekkürler Vitaly. Ama yine de test ederken ExtTempBuffer[i] = NormalizeDouble ((close[i]-open[i])/Point(),2); satırında hata veriyor. [i} öğesinde.

Neden: