Hatalar, hatalar, sorular - sayfa 202

 
Interesting :

Şimdi, MT4'ün aksine bir nokta, bir periyottaki saniye sayısı anlamına gelmez.

Daha dikkatli okuyun, _Period hakkında yazdım, PeriodSeconds hakkında değil. Ve lütfen sayfa algılama hatalarıyla uğraşmayın.
 
ANG3110 :
MT4'te bile saniye sayısını göstermedi canım... Ama MT4'te dakikaları net bir şekilde gösterdi. O halde _Period H1 grafiğinde ne gösteriyor? Bana göre bu ciddi bir bug.
ANG3110 :
Daha dikkatli okuyun, _Period hakkında yazdım, PeriodSeconds hakkında değil. Ve lütfen sayfa algılama hatalarıyla uğraşmayın.
Zaten düzeltildi. Genel anlamı şudur PeriodSeconds , periyotta tam olarak saniyeleri alırız ve sonra onlarla ne istersek yaparız...

Yani H1 = 16385 saçma değil, H1'in ENUM_TIMEFRAMES içindeki sayısal temsilidir.


Dönem hakkında okuma yardımı

dönem

Geçerli grafiğin zaman çerçevesi değerini döndürür.

ENUM_TIMEFRAMES Nokta ();

Geri dönüş değeri

Geçerli grafiğin zaman çerçevesi değerini depolayan _Period değişkeninin içeriği. Değer , ENUM_TIMEFRAMES numaralandırma değerlerinden biri olabilir.

not

Bu nedenle, döneme karşılık gelen dakika sayısı döndürülmez (MT4'te olduğu gibi), ancak ENUM_TIMEFRAMES numaralandırma öğesi (veya gerekirse sayısal temsili onunla çalışır)...

 
Interesting :
Zaten düzeltildi. Genel anlamı şudur PeriodSeconds , periyotta tam olarak saniyeleri alırız ve sonra onlarla ne istersek yaparız...

Yani H1 = 16385 saçma değil, H1'in ENUM_TIMEFRAMES içindeki sayısal temsilidir.

Lanet olsun, batırdılar. Eskiden her şey kolay ve basitti, diye yazdı Period() dakikalar aldı. Artık iş için kesinlikle gerekli olmayan bazı bilinmeyen hizmet tanımlayıcıları alıyorsunuz. Tamam, şimdi dakikaları saniyeler içinde bulmaya çalışacağım.
 

Yine de, H1'de _Period talep edersem, bu çok ENUM_TIMEFRAMES = 16385 alıyorum, o zaman bundan nasıl dakika alabilirim?

Tabii ki, PeriodSeconds () / 60'ı bölmenin hiçbir maliyeti yoktur. Ama yine de, bu tanımlayıcılar nelerdir ve onlarla nasıl çalışılır.

 
ANG3110 :

Yine de, H1'de _Period talep edersem, bu çok ENUM_TIMEFRAMES = 16385 alıyorum, o zaman bundan nasıl dakika alabilirim?

11 aydır bu işlevi göç kitaplığımda kullanıyorum, her şey açıkken

 //Fumction PeriodToMinute
int PeriodToMinute( ENUM_TIMEFRAMES Value)
{
//----------------------------------------------------------------------------//
//Work variables
int Result; //Returned importance
//----------------------------------------------------------------------------//
Result = PeriodSeconds (Value)/ 60 ;
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}

ANG3110 :

Tabii ki, PeriodSeconds () / 60'ı bölmenin hiçbir maliyeti yoktur. Ama yine de, bu tanımlayıcılar nelerdir ve onlarla nasıl çalışılır.

Bu soru, OOP'nin temellerine atfedilebilir. Tanımlayıcılar ve numaralandırmalar (numaralayıcılar) ile ilgilidir. C ++ ile programlama hakkında yardımda veya normal kitaplarda ayrıntılı olarak okuyabilirsiniz.

Bu zaten MQL4'teydi, ancak çok açık değildi.

Her tanımlayıcı (MQL5'te kayıtlı olup olmadığına veya kullanıcı tarafından oluşturulup oluşturulmadığına bakılmaksızın) kendi "temsil numarasına" sahip olabilir.

Basit bir şekilde (olabildiğince açıklarım) ...

Bunun harici ortamla, örneğin bir DLL veya başka biriyle uyumluluk için olduğunu düşünebilirsiniz (MQL veya tanımlayıcıları hakkında hiçbir fikriniz yok).

Bu nedenle, bir MQL5 programı içinde bir nokta ile çalışmanız gerekiyorsa, ENUM_TIMEFRAMES numaralandırmasının PERIOD_H1 tanımlayıcısını kullanmak en mantıklısıdır.

Ancak, diyelim ki, dış ortama (örneğin, DLL) H1 periyoduyla çalıştığımızı söylemek istiyorsanız, bunu bu tanımlayıcının sayısal gösterimini kullanarak yapmak daha uygundur, bizim durumumuzda 16385'tir .

 
ANG3110 :

Yine de, H1'de _Period talep edersem, bu çok ENUM_TIMEFRAMES = 16385 alıyorum, o zaman bundan nasıl dakika alabilirim?

Tabii ki, PeriodSeconds () / 60'ı bölmenin hiçbir maliyeti yoktur. Ama yine de, bu tanımlayıcılar nelerdir ve onlarla nasıl çalışılır.

aşağı yukarı böyle

 int minute = PeriodSeconds ( _Period )/ 60 ;
 
Interesting :

11 aydır bu işlevi göç kitaplığımda kullanıyorum, her şey açıkken

Anladım. Cevap için teşekkürler!
 
sergey1294 :

aşağı yukarı böyle

Sana da teşekkürler!
 

geliştiriciler

1. Belirli koşullar altında OHLC hattı yanıp sönmeye başlar. Danışmanı tek çekirdekli bir bilgisayarda test ederken ortaya çıktı (muhtemelen CPU aşırı yüklenmiştir) ...

2. Delphi'de yapıldığına benzer şekilde (aksi takdirde bir modül prosedürleri ve fonksiyonları listesiyle çalışmak pek uygun olmaz) navigatöre sınıfların ve işlevlerinin (doldurma) bir listesini yerleştirmek mümkün olacak mı?

 
Ashes :

Test kullanıcısı raporunu Açık XML formatında kaydetmeye çalıştı. 20 dakika (Pentium 4, 3.0GHz) bekleniyor, uygulama yanıt vermiyor, görev yöneticisinde terminal.exe işlemi (işlemcinin yaklaşık %50'si) RAM'i tüketmede çok aktif (yaklaşık 250MB'a kadar), sonuç hiçbir şey. MT5 yanıt veriyor, yalnızca alıntıların gelmesi durdu (Gri dönen daireli bağlantı durumu göstergesi). İkinci deneme aynı. Günlük 2 girişindeki "Araçlar" penceresinde "MemoryException 107878464 bayt kullanılamıyor", zaman içinde OpenXML'de bir rapor almaya çalışmaya karşılık gelir.
HTML biçiminde, dosya neredeyse anında oluşturuldu (yaklaşık 12 MB). Uzun süre açılıyor ama burada suç MT5 değil...

Tekrarlıyorum. Her şey aynı, ancak yapı 358 ile. Sadece daha da fazla zaman alıyor. Raporun boyutuna bir bağımlılık var - kısa olanı sorunsuz işleniyor.