Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Herşey,
Buradaki soru, önerildiği gibi GetTickCount() (yani start() işlevi çağrıldığında) kullanılarak kenenin terminale geldiği zamanı değil, kenenin zaman damgasını almaktır.
MarketInfo(Symbol(), MODE_TIME), veri akışında aracının sunucusundan gönderildiği şekliyle onay işaretinin zaman damgasını döndürür.
Saygılarımızla
VS
Herşey,
Buradaki soru, önerildiği gibi GetTickCount() (yani start() işlevi çağrıldığında) kullanılarak kenenin terminale geldiği zamanı değil, kenenin zaman damgasını almaktır.
MarketInfo(Symbol(), MODE_TIME), veri akışında aracının sunucusundan gönderildiği şekliyle onay işaretinin zaman damgasını döndürür.
1) GetTickCount(), Canlı çalışmalıdır. Tarihsel veriler üzerinde anlamsız.
2) mt5_data bile milisaniye cinsinden kaydedilmez. Ancak, no_problem Live.
3) Bununla nereye varacağınızı anlamıyorum. Milisaniye cinsinden aynı zamansa, milisaniyeye sahip olmak yardımcı olmaz. Milisaniye cinsinden farklı zamanlar ise GetTickCount() yardımcı olabilir. Kodunuzun mevcut onay işaretini bir milisaniyeden daha kısa sürede işlemesi anlamında yardımcı olun. Her şeyin ne kadar önemli olduğu, neyi başarmaya çalıştığınıza bağlıdır... sanırım.
Cevapları için herkese teşekkürler. Kod tabanına gönderilen bir gösterge vardı, Rogue Tick Detector. Ama henüz onaylanmadı. Şimdilik burada bulabilirsiniz.
Temel fikir, mevcut tik tik0'ın önceki tik tik-1'den daha sonraki bir zaman damgasıyla geleceği zamanlar olmasıdır. Ancak fiyat artık üzerinde işlem yapılamaz, ancak EA veya insan tüccarı, olay bitene kadar bunu bilemezdi. Fiyat bazlı olayların hatalı tetiklenmesine neden oluyordu. Hileli tik detektörü bu sahte keneleri işaretleyebildi ve EA'nın bunlar üzerinde hareket etmesini engelledi (bir sonraki 'iyi' onay işaretini bekleyin)
İşaretlerin zaman damgalarını yakalamanın mevcut yöntemi olan MarketInfo(Symbol(), MODE_TIME), milisaniyelik zaman damgalarını döndürmez. Bu yüzden, gözden kaçırdığımız alternatifler olup olmadığını görmek için buraya geldim.
Hileli kene algılama işlevlerini içeren EA'ların tümü, New York'ta SSD sürücüler, Windows 2008 ile VPS üzerinde çalışır ve genellikle aracı sunucusundan <2 ms'dir. HFT veya aşırı ölçeklendirme yok (işlemlerin ortalama tutma süresi yaklaşık 1 saattir)
Beni asıl sorularımdan birine geri getiriyor: Peki mt4 (ve mt5) platformunun [kendisinin] 'aynı anda' gelen onay işaretlerini nasıl düzgün bir şekilde ayırt etmesi gerekiyor?
düzenleme, açıklama için teşekkürler ankasoftware.
Beni asıl sorularımdan birine geri getiriyor: Peki mt4 (ve mt5) platformunun [kendisinin] 'aynı anda' gelen onay işaretlerini nasıl düzgün bir şekilde ayırt etmesi gerekiyor?
Yapamazsın . . . Broker'ınız aslında size aynı anda gerçekleşen birden fazla onay gönderiyor mu? yoksa sadece sayıyı 2 artırıp ikinci onay işaretini mi gönderiyorlar? yapıp yapmadıklarını nasıl bilebilirsin? Komisyoncular arasında kene sayısında büyük bir fark olduğunun farkında mısınız?
Evet, farklı brokerlerin farklı beslemeleri olduğunun ve onay sayısının büyük ölçüde farklılık gösterebileceğinin farkındayım. Ancak öyle olur ki, hileli keneler belirli zamanlarda, özellikle de alım satımların kârla kapatıldığı zamanlarda gönderilir. Kapanışların ve siparişlerin tetiklenmesini etkiliyordu, bu yüzden elimizden geldiğince onları tespit edip yok saymanın bir yolunu bulduk. Hatta bir noktada bazı brokerlerin kasıtlı yem manipülasyonundan bile şüphelendim.
Ama belki de toplam keneleri saydığımız bir kene sayım oranına sahip olmalıyız.
Pek çok insanı etkilemeyebilir, ancak potansiyel hasarın daha fazla araştırmayı garanti altına almak için yeterli olduğunu düşündüm.
Aklında ne var? Bunun mt4 Volume'den farkı ne olabilir? Hangi iki sayının oranı [saymak ve ??? ].
Bu konu çok çabuk çok kafa karıştırıyor. Ben de dahil, keneler hakkında her şeyi bilmiyorum, metaQuotes'un bunu nasıl işlediğini veya birisi için neden çok kritik olacağını bilmiyorum. Bazı gözlemlerimi özetlememe izin verin.
1) metaQuotes diyor ki: mili_saniye zaman_stamp istiyorsun, [hemen tick_data düşünmeye başlarlar], bu tick_data'yı komisyoncu kim tutacak? Yani o dakika içinde 200 tik olduğunu söylemek senin için yeterince iyi değil mi? OHLC+V yeterince iyi olmadığı için gerçekten 200 veri girişi kaydetmemizi mi istiyorsunuz?
2) tüccar numarası1 diyor ki: Bilgiyi kaydetmek için kimseye ihtiyacım yok, sadece eski verileri belirlemek için mili_saniyelik zaman damgası istiyorum.
3) 2 numaralı tüccar diyor ki: Bilgileri bana kaydetmenize ihtiyacım yok, sadece bana aktarma yeteneği verin, ben de kendi verilerimi alayım.
4) tüccar numarası3 diyor ki: Kene verilerini kaydetmenin ve sağlamanın neden bu kadar önemli olduğunu anlamıyorum. Hadi ama, bugünlerde bilgisayarların daha fazla gücü ve hafızası var, kesinlikle aracım verileri bir yerden sağlayabilir.
5) komisyoncu diyor ki: adamım, 3_aydan fazla bir süredir size m1 verisi vermekte yeterince zorlanıyorum, bağlandığınızda veya test için bu kadar çok veri sağlamaya yetenekli veya istekli olduğumu düşündüren şey.
6) tüccar numarası4: test için buna ihtiyacımız yok ve veriler için sadece küçük bir kısım canlı olarak yeterli olacaktır, yetersiz m1'den şikayet etmiyorum şimdi sorun ne.
7) metaQuotes: hala çalışmıyor, bu, mili_saniye ve göstergeler döndüren ve keneleri ayırt eden işlevleri kolaylaştırmamız gerektiği anlamına geliyor ... terminali çökertmeye mi çalışıyorsunuz?
8) tüccar numarası5: Hacmin pazar_derinliği değil, belirli bir zaman çerçevesi içindeki kenelerin sayısı olduğunu kastediyorsunuz :) . Keneyi kaçırabileceğimi mi söylüyorsun? Siber uzayda kenelerin kaybolabileceğini veya gecikebileceğini mi söylüyorsunuz? Komisyoncular arasında tick_count farkı mı demek istiyorsun? Yani komisyoncunun sakladığı veriler benim aldığımla aynı olmayacak mıydı? O zaman kene ile ilgili tüm bu yaygara nedir?
9) xxxxxxxxxxxx diyor ki: kene çok gizlidir, sağlananlar kesinlikle yeterince iyidir, kene oluşturucunun tasarımına yardım ettim ve bu tür bir çözüm sağlamaya çok az ilgim var. olmayacak .... dönem.
10) tüccar numarası6: Nelerin sağlanabileceği, kene sayımlarının nasıl çalıştığı, nelerin alınabileceği vb. konularda teknolojik sınırlamalar vardır. Bu bir metaTrader sorunu değil, birçok perakende platformu bu sorunu yaşıyor. Kurumsal yazılımlara bakın ve büyük paralar kazanmaya hazır olun.
Tüccar#3'ten Tüccar#10'a: katılmıyorum.
Ubzen diyor ki: Artık ne diyeceğimi bilemiyorum.
Ps> neredeyse 7 numaralı tüccarı unuttum: tamam, terminalime gelen kendi tick'imi kaydedeceğim ve kendi göstergelerimi ve bu verileri işlemek için programlayacağım... Soruyu bu şekilde yorumladım ve bu nedenle GetTickCount'u tavsiye ettim. ().
Ps> neredeyse 7 numaralı tüccarı unuttum: tamam, terminalime gelen kendi tick'imi kaydedeceğim ve kendi göstergelerimi ve bu verileri işlemek için programlayacağım... Soruyu bu şekilde yorumladım ve bu nedenle GetTickCount'u tavsiye ettim. ().
Burada gündemde kalmayı umuyorum :). Bununla birlikte, her tik ile milisaniyelik timeStamps gönderen bir komisyoncu hayal edin. Ancak, bu bilgiyi her_side'a kaydetmemeye devam edin. Genel olarak komisyoncular hakkındaki tüm güvensizlik göz önüne alındığında, bu komisyoncu bir soruşturma saldırısı başlatır. Ancak bu sefer insanların milisaniye cinsinden kanıtları var, ancak komisyoncunun karşı koyacağı hiçbir kaydı yok. Yani bir anlamda tick_data istemek | milisaniye veya aynı argümanlara yol açan her neyse, temelde aracıdan tick_data'yı kaydetmesini ve platformun bunu kolaylaştırmasını istemektir.
İkinci bir notta, çoğu kişinin yaptığı ters geriye dönük testleri düşünün. Yaklaşık bir hafta boyunca bir strateji_canlısı çalıştırdığınız ve ardından aynı sonuçları alıp alamayacağınızı doğrulamak için o hafta in_order için bir back_test gerçekleştirmeye devam ettiğiniz yer. Bu kişinin milisaniyelik time_stamps canlı ve gecikmeler ve eksik paketler var. Tabii ki orijinal posterde olduğu gibi, eksik verileri görmezden gelirsiniz ve/veya gecikmiş onay işaretlerini reddedersiniz. Ancak, geriye dönük testi gerçekleştirdiğinizde, aracının tüm verileri doğru zaman damgalarıyla birlikte oradadır. Bu, açıkça, az önce canlı olarak aldığınızdan farklı sonuçlar üretecektir.
Öyleyse söyle bana, Live'ı mı yanlış yönlendirdin yoksa Back_Test sırasında mı yanlış yönlendiriliyorsun?
Ancak yukarıdaki ifadenize katılıyorum . Imo, tüm bunlar beni dakikalar arası süreçlerden hep birlikte uzak durmaya yönlendiren bir dizi paradoks yaratıyor. Platformun sınırlamaları var, sadece kabul ediyorum ve hareket ediyorum.
...
Ancak yukarıdaki ifadenize katılıyorum . Imo, tüm bunlar beni dakikalar arası süreçlerden hep birlikte uzak durmaya yönlendiren bir dizi paradoks yaratıyor. Platformun sınırlamaları var, sadece kabul ediyorum ve hareket ediyorum.
Zamanlayıcılar, Zamanlayıcı Çözünürlüğü ve Verimli Kodun Geliştirilmesi
Windows Zamanlayıcı Çözünürlüğü: boşa harcanan megavatBeni Windows için Mikrosaniye Çözünürlük Süresi Hizmetlerine yönlendiren ilginç bağlantılar teşekkür ederim. Bu sayfalardaki bilgilere dayanarak bazı testler yaptım.
Win 7 PC ve Windows 2012 VPS'deki testlerim, GetTickCount()'un sistem zamanlayıcı ayarından bağımsız olarak her zaman 15.6 msn (saniyede 64 kesme) çözünürlüğe sahip olduğunu gösterirken, kernel32.dll'yi çağırarak milisaniyelik süre elde ederken çözünürlük GetSystemTime() [veya GetLocalTime()] veya GetSystemTimeAsFileTime() işlevleri, sistem zamanlayıcı ayarlarından etkilenir ve test ettiğim her iki makinede 0,5 msn'ye kadar çözünürlük verebilir.
GetTickCount() Çözünürlük
GetTickCount() çözünürlüğünü test etmek için bir komut dosyasının kodu:
Bu, diğer testler için aşağıda belirtilen sistem zamanlayıcı çözünürlük değişikliklerinden bağımsız olarak test edilen her iki makinede her zaman 15 veya 16 (yani 15,6) verir.
GetSystemTime() Çözünürlük
Şimdi işler ilginçleşmeye başlıyor. GetSystemTime() çözünürlüğünü test etmek için bir komut dosyasının kodu:
Bu, başka hiçbir yazılımın çalışmadığı yeni başlatılmış bir bilgisayarda 15/16 msn, ancak bilgisayarda Chrome çalışıyorsa 1 msn çözünürlük sağlar! Angevoyageur'un ikinci bağlantısının açıkladığı gibi, Chrome, diğer bazı yazılımlarda olduğu gibi sistem zamanlayıcısını 1 msn çözünürlüğe ayarlar.
Sistem zamanlayıcı çözünürlüğünü ayarlamak için iki küçük yardımcı program buldum, böylece temiz önyüklemeli bir makinede kontrollü bir şekilde 1 msn (hatta 0,5 msn) çözünürlük elde edilebilir:
Windows Sistem Zamanlayıcı Aracı: http://vvvv.org/contribution/windows-system-timer-tool
Zamanlayıcı Çözünürlüğü: http://www.lucashale.com/timer- Resolution/
İkisinden ilkini, Windows Sistem Zamanlayıcı Aracını tercih ederim. Bununla GetSystemTime() aracılığıyla güvenilir bir şekilde 1 msn çözünürlük elde edebilirim. GetLocalTime() da benzer şekilde kullanılabilir.
Btw, yukarıdaki komut dosyası kodu, yapılar sayesinde yeni MT4 kodunun ne kadar iyi olabileceğinin bir örneğidir. Eski MT4'te GetSystemTime()'a erişmek, bir tamsayı dizisinin yanı sıra çok sayıda dağınık bit manipülasyonunun kullanılmasını gerektiriyordu.
GetSystemTimeAsFileTime() Çözünürlük
Son olarak, Windows için Mikrosaniye Çözünürlük Süresi Hizmetlerinin GetSystemTimeAsFileTime()'ın sistem saatine erişmek için daha hızlı bir işlev olduğunu ve daha küçük ve daha basit bir yapı gerektirdiğini belirttiğini not ettim. "Yapı" sadece bir ulong'a indirgenebildiğinden, ikincisi yeni MT4 için kesinlikle doğrudur.
GetSystemTimeAsFileTiime() çözünürlüğünü test etmek için bir komut dosyasının kodu:
0,5 saniyelik bir sistem zamanlayıcı çözünürlüğü ayarlamak için Windows Sistem Zamanlayıcı Aracı kullanılırsa, bu küçük komut dosyası 5000 (veya bazen 5001) 100 nsn birim = 0,5 msn bir çözünürlük bildirir.
GetSystemTimeAsFileTiime() kullanımı gerçekten daha basittir ve daha iyi çözünürlük gösterebilir.
İşte bunun kullanımda olan bazı resimleri.
Temiz bir önyüklemeden sonra:
Sistem zamanlayıcı çözünürlüğünü 1 ms'ye ayarlamak için kullanılan Zamanlayıcı Aracı ile:
Ve sistem zamanlayıcı çözünürlüğünü 0,5 ms'ye ayarlamak için kullanılan Zamanlayıcı Aracı ile:
ÇözümMT4'te milisaniye zamanlamaları elde etmek için kullanılacak en iyi işlev, istenen sistem zamanlayıcı çözünürlüğünü ayarlamak için kullanılan Windows Sistem Zamanlayıcı Aracı gibi bir yardımcı programla birlikte yukarıdaki test komut dosyasında gösterildiği gibi GetSystemTimeAsFileTiime() işlevidir.