Böylece daha önce HistorySelect fonksiyonları ile oluşturulan mevcut tarihsel tablonun ihtiyacımız olan kaydı içerip içermediğini kontrol edebiliriz. Aynısı DEAL_TICKET için de geçerlidir.
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
O halde bu, geliştiricilerin düzeltmek için iyi yapacakları bir hatadır. Çünkü o zaman işlev açıklamayla eşleşmiyor:
Функция GetMicrosecondCount () возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы.
GetTickCount ile karşılaştırıldığında bu işlevin değeri milisaniye değil (1000 kat daha doğru) mikrosaniye cinsindendir. Ayrıca taşmaz. Bu nedenle, değiştirilmesinden bahsetmek tamamen doğru değil.
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
Ve GetMicrosecondCount yerine GetTickCount işlevini kullanmanın tamamen uygunsuz olduğunu takip eden bir önemli gözlem daha. Bunun birçokları için sürpriz olacağını düşünüyorum.
Basit bir betiğin çalışmasını incelemek:
voidOnStart ()
{
uint i= GetTickCount ();
uint i0= GetTickCount ();
while (i==i0) i0= GetTickCount ();
int N1= 1 ;
ulong t1= GetMicrosecondCount ();
uint i1= GetTickCount ();
uint i2= GetTickCount ();
while (i1==i2) { i2= GetTickCount (); N1++;}
t1= GetMicrosecondCount ()-t1;
ulong t= GetMicrosecondCount ();
ulong t0= GetMicrosecondCount ();
while (t==t0) t0= GetMicrosecondCount ();
int N2= 1 ;
ulong t2= GetMicrosecondCount ();
ulong t3= GetMicrosecondCount ();
while (t2==t3) { t3= GetMicrosecondCount (); N2++;}
ulong t4=t3-t2;
Print (" 1 значение в милисекундах: " +( string )i1+", следующее значение "+ ( string )i2 + ", разница - " +( string )t1 +
" микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = " + DoubleToString (( double )t1* 1000.0 /N1, 3 )+ " наносекунды");
Print (" 1 значение в микросекундах: " +( string )t2+", следующее значение "+ ( string )t3 + ", разница - " +( string )t4 +
" микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = " + DoubleToString (( double )t4* 1000.0 /N2, 3 )+ " наносекунды");
}
İşin sonucu:
2018.07 . 2700 : 23 : 02.261 TestTimeCount 1 значение в милисекундах: 25225093 , следующее значение 25225109 , разница - 15663 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.323 наносекунды
2018.07 . 2700 : 23 : 02.261 TestTimeCount 1 значение в микросекундах: 20247 , следующее значение 20248 , разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 33.333 наносекунды
2018.07 . 2700 : 23 : 03.590 TestTimeCount 1 значение в милисекундах: 25226421 , следующее значение 25226437 , разница - 15586 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.324 наносекунды
2018.07 . 2700 : 23 : 03.590 TestTimeCount 1 значение в микросекундах: 22835 , следующее значение 22836 , разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 30.303 наносекунды
2018.07 . 2700 : 23 : 04.920 TestTimeCount 1 значение в милисекундах: 25227750 , следующее значение 25227765 , разница - 15657 микросекунд, время выполнения функции GetTickCount (одного прохода цикла) = 2.309 наносекунды
2018.07 . 2700 : 23 : 04.920 TestTimeCount 1 значение в микросекундах: 23701 , следующее значение 23702 , разница - 1 микросекунд, время выполнения функции GetMicrosecondCount (одного прохода цикла) = 27.027 наносекунды
aşağıdaki sonuçlar çıkarılabilir:
GetTickCount() işlevinin değeri her milisaniyede değil, her 15.625 milisaniyede bir (1/64 saniye, 64=2^6) değişirken, GetMicrosecondCount () işlevinin değeri her mikrosaniyede değişir. Onlar. GetMicrosecondCount, 1000 değil, GetTickCount'tan 15625 kat daha doğrudur.
ancak GetTickCount() işlevi GetMicrosecondCount() işlevinden yaklaşık 12-15 kat daha hızlıdır.
O halde bu, geliştiricilerin düzeltmek için iyi yapacakları bir hatadır. Çünkü o zaman işlev açıklamayla eşleşmiyor:
GetTickCount ile karşılaştırıldığında bu işlevin değeri milisaniye değil (1000 kat daha doğru) mikrosaniye cinsindendir. Ayrıca taşmaz. Bu nedenle, değiştirilmesinden bahsetmek tamamen doğru değil.
Henüz kendim için mikrosaniyelerden herhangi bir pratik fayda görmedim. Programın bazı bölümlerinin çalışma süresini ölçerseniz, sistem performansındaki dalgalanmalar tüm bu doğruluğu ortadan kaldırır ve oradaki hata milisaniyeler, hatta on milisaniyeler kadar gider. Süreleri 1 milisaniyeden az olan çok küçük parçaları ölçüyorsanız, ne anlamı var ki? Ölçüm hatası oranı çok yüksek olacaktır.
Henüz kendim için mikrosaniyelerden herhangi bir pratik fayda görmedim. Programın bazı bölümlerinin çalışma süresini ölçerseniz, sistem performansındaki dalgalanmalar tüm bu doğruluğu ortadan kaldırır ve oradaki hata milisaniyeler, hatta on milisaniyeler kadar gider. Süreleri 1 milisaniyeden az olan çok küçük parçaları ölçüyorsanız, ne anlamı var ki? Ölçüm hatası oranı çok yüksek olacaktır.
önceki mesajıma bakın
Mikrosaniyelerin pratik kullanımıyla ilgili birçok örneğim var.
Ve GetMicrosecondCount yerine GetTickCount işlevini kullanmanın tamamen uygunsuz olduğunu takip eden bir önemli gözlem daha. Bunun birçokları için sürpriz olacağını düşünüyorum.
Basit bir betiğin çalışmasını incelemek:
aşağıdaki sonuçlar çıkarılabilir:
GetTickCount() işlevinin değeri her milisaniyede değil, her 15,6 milisaniyede bir değişirken, GetMicrosecondCount () işlevinin değeri her mikrosaniyede değişir. Onlar. GetMicrosecondCount, GetTickCount'tan 1000 değil, 15600 kat daha doğrudur.
ancak GetTickCount() işlevi GetMicrosecondCount() işlevinden yaklaşık 12-15 kat daha hızlıdır.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2016.07.19 12:41
ORDER_TICKET örneğini kullanarak, fikir net olmalıdır
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL5'te OrderCloseTime()?
fxsaber , 2018.07.18 03:51
Böylece daha önce HistorySelect fonksiyonları ile oluşturulan mevcut tarihsel tablonun ihtiyacımız olan kaydı içerip içermediğini kontrol edebiliriz. Aynısı DEAL_TICKET için de geçerlidir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Pozisyon fiyat seviyesini takas yoluyla kaydedin (mümkün mü?)
fxsaber , 2018.07.17 20:45
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir.
Bilmiyordum, teşekkürler!
Taşmayı hariç tutan GetTickCount işlevinin varyantı (işlev çağrıları arasındaki aralığın 50 günü geçmemesi koşuluyla)
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
O halde bu, geliştiricilerin düzeltmek için iyi yapacakları bir hatadır. Çünkü o zaman işlev açıklamayla eşleşmiyor:
Функция GetMicrosecondCount () возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы.GetTickCount ile karşılaştırıldığında bu işlevin değeri milisaniye değil (1000 kat daha doğru) mikrosaniye cinsindendir. Ayrıca taşmaz.Bu nedenle, değiştirilmesinden bahsetmek tamamen doğru değil.
GetTickCount'tan farklı olarak GetMicrosecondCount işlevinin bilgisayarın yerel saatine bağlı olduğunu herkes bilmiyor olabilir. Onlar. bu süre değişirse (örneğin, İnternet saati ile senkronizasyon sonucunda), GetMicrosecondCount değerleri de karşılık gelen miktar kadar değişecektir. Bu fonksiyon zaman aralıklarını ölçmek için kullanılıyorsa bu dikkate alınmalıdır. Aslında bu amaçlar için kullanılmamalıdır. Ancak GetTickCount bu sorunlardan yoksundur.
Bir gösteri olarak, bu kodu çalıştırabilir ve işlem sırasında bilgisayarın zamanını değiştirebilirsiniz.
Ve GetMicrosecondCount yerine GetTickCount işlevini kullanmanın tamamen uygunsuz olduğunu takip eden bir önemli gözlem daha.
Bunun birçokları için sürpriz olacağını düşünüyorum.
Basit bir betiğin çalışmasını incelemek:
İşin sonucu:
aşağıdaki sonuçlar çıkarılabilir:
O halde bu, geliştiricilerin düzeltmek için iyi yapacakları bir hatadır. Çünkü o zaman işlev açıklamayla eşleşmiyor:
GetTickCount ile karşılaştırıldığında bu işlevin değeri milisaniye değil (1000 kat daha doğru) mikrosaniye cinsindendir. Ayrıca taşmaz.Bu nedenle, değiştirilmesinden bahsetmek tamamen doğru değil.
Henüz kendim için mikrosaniyelerden herhangi bir pratik fayda görmedim. Programın bazı bölümlerinin çalışma süresini ölçerseniz, sistem performansındaki dalgalanmalar tüm bu doğruluğu ortadan kaldırır ve oradaki hata milisaniyeler, hatta on milisaniyeler kadar gider. Süreleri 1 milisaniyeden az olan çok küçük parçaları ölçüyorsanız, ne anlamı var ki? Ölçüm hatası oranı çok yüksek olacaktır.
Henüz kendim için mikrosaniyelerden herhangi bir pratik fayda görmedim. Programın bazı bölümlerinin çalışma süresini ölçerseniz, sistem performansındaki dalgalanmalar tüm bu doğruluğu ortadan kaldırır ve oradaki hata milisaniyeler, hatta on milisaniyeler kadar gider. Süreleri 1 milisaniyeden az olan çok küçük parçaları ölçüyorsanız, ne anlamı var ki? Ölçüm hatası oranı çok yüksek olacaktır.
Ve GetMicrosecondCount yerine GetTickCount işlevini kullanmanın tamamen uygunsuz olduğunu takip eden bir önemli gözlem daha.
Bunun birçokları için sürpriz olacağını düşünüyorum.
Basit bir betiğin çalışmasını incelemek:
aşağıdaki sonuçlar çıkarılabilir:
Temel Argüman