Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Kene işleyicisinden farklı olarak, zamanlayıcı hafta sonları veya iş günlerini umursamaz, dönem tarafından belirtilen belirli bir süre sonra yürütülür.
Zamanlayıcının yoğun işlenmesi durumunda, elbette, bir kayma ile veya ilk tik işaretine kadar (birçok seçenek vardır) bir süre kesmek daha iyidir, ancak zamanlayıcı işlemesi çok zor değilse ve süre yeterince uzun, zamanlayıcı kesilemez.
Ayrıca zamanlayıcının işlenmesinde iş günü olup olmadığının kontrol edilmesini sağlayabilirsiniz.
Gerekirse, hafta sonu için yoğun hesaplamalar planlayabilir (örneğin, Expert Advisor'ın otomatik optimizasyonu ) ve bu işlemi bir zamanlayıcıdan başlatabilirsiniz. Hesaplamaların yürütülmesinin sonunda (veya yürütmenin başlangıcında), zamanlayıcı doğru bir şekilde kesilebilir.
Çoklu para birimi Uzman Danışmanının OnTimer() işlevi aracılığıyla test cihazında test etmeye gelince. Diyelim ki zamanlayıcı 10 saniyelik aralıklarla ayarlandı. Test süresi boyunca tüm hafta sonlarını işaretleyecek mi? Anladığım kadarıyla, Vladimir tam olarak bunu kastetmişti. Yani, zamanlayıcıya Cumartesi ve Pazar günleri atlamasını söylerseniz, test çok daha hızlı olacaktır.
1. Hafta sonu için timer'ı çok karmaşık olmayan hesaplamalarla kapatmaya çalıştım, pek bir fark hissetmedim (farklılıklar olsa da tabii), şimdilik timer'ı kapatmamaya karar verdim.
2. Evet, zamanlayıcı ayarlanmışsa, test cihazında veya normal modda bir fark olmaksızın, zamanlayıcı kapatılana kadar işlem gerçekleşir. Bir test cihazından bahsediyorsak, 10 saniye aralıklarla, işlem tüm test süresi boyunca - her 10 saniyede bir gerçekleşir.
Hafta sonu için zamanlayıcıyı durdururken birkaç çözüm vardır:
a. Bir değişkende bir durum kaydı ile zamanlayıcıyı kesmek için. Ana cihazdaki (veya bir "casus" sinyalindeki) ilk tikte, zamanlayıcı yeniden başlatılabilir. Bu yöntemin, likit olmayan bir piyasada bir tik kaçırma veya tik geciktirme olasılığı ile ilişkili dezavantajları vardır. Kene atlama, ticaret sunucusuna bağlantı eksikliğinden de kaynaklanabilir.
b. Belirli bir süre için kaymada frenler. İyi olan, periyodun tam olarak ayarlanmış olmasıdır, kötü olan şey ise, bu yöntemle sadece zamanlayıcı değil, tüm uzmanın "X" saatine kadar hareketsiz kalmasıdır.
Her ne kadar tüm pozisyonlar ve siparişler test cihazında işlenecek olsa da.
içinde. Zamanlayıcı süresini artırarak bir duraklama uygulayabilirsiniz. Zamanlayıcının "uyanması" gereken saat önceden bilindiği ve Expert Advisor'ın işi durmadığı için uygundur. Zamanlayıcıyı çalışır durumda veya bekleme modunda izlemeniz elverişsizdir.
içinde. Zamanlayıcının doldurulmasını iki gruba ayırın, ilki sürekli olarak gerçekleştirilir (örneğin, bağlantının durumunun belirlenmesi) ve ikincisi koşullara göre (çalışma günleri, bağlantı var, ticarete izin verilir, vb.) .
Gerekirse, hafta sonu için yoğun hesaplamalar planlayabilir (örneğin, Expert Advisor'ın otomatik optimizasyonu ) ve bu işlemi bir zamanlayıcıdan başlatabilirsiniz. Hesaplamaların yürütülmesinin sonunda (veya yürütmenin başlangıcında), zamanlayıcı doğru bir şekilde kesilebilir.
Merhaba! Çooook ilginç.Dün bende de benzer bir fikir vardı hafta sonu otomatik optimizasyon ama soru içeren bir yazı yazacak vaktim olmadı.Şunu yazmak istedim:
1. Bunu yapmak mümkün mü?Kodda nasıl görünebilir? .Bunun için artık çevrim içi tiklere gerek yoktur ve fonksiyon basitçe bir döngüde dönecektir..
2. Bunun hakkında okumak için aklınızda bir yer var mı, şube hangi iş parçacığında?
3. Şampiyonluk için geçerliyse araca yüklenmez mi? Bu muhtemelen organizatörler için bir sorudur.
Her şeyi normal bir Uzman Danışmanda, uygun bir zaman diliminde hesaplayın ve sonucu OnTester()'da görüntüleyin. Ticarete hiç gerek yok. Herhangi bir problem?
teşekkürler anladım
Başka bir soru ortaya çıktı, eğer fiyat ya al ya da durdur zararına ulaşmadıysa, bir pozisyonun zamanında nasıl kapatılacağı .
Siparişlerle çalışmak için kütüphaneler olduğunu okudum ... Aldım ... yemin ederim böyle bir prosedür yok ...
Bu nedenle soru, belirli bir süre geçtikten sonra (örneğin 1 gün) siparişi kapatmak için ne tür bir kod olması gerektiğidir.
AccountInfoDouble (ACCOUNT_BALANCE) != AccountInfoDouble(ACCOUNT_EQUITY)
bir ticaretin açık olup olmadığını bu şekilde kontrol etmeliyim ...
OrdersTotal ()!=0 çalışmıyor))) çok ilginç bir hata)
Konumlar için PosirionTotal() vardır. OrdersTotal() yalnızca bekleyen siparişler için.
if ( PositionsTotal() == 1 )
aynı...yanıt yok
// Normal aç
if ( TimeActivation ( 1 ) )
{
if ( _1_operasyon == 1 && Satın Al ( 0.10) == 1 ) { Uyku(600000); }
if ( _1_operasyon == -1 && Sat ( 0.10) == 1 ) { Uyku (600000); }
}
// Alma veya durdurmadan önce kapatamıyorum
if ( TimeActivation ( 2 ) )
{
if ( PositionsTotal() == 1 ) /// ÇALIŞMAZ)))
{
if ( _1_operasyon == 1 && Sat ( 0.10) == 1 ) { Uyku (600000); }
if ( _1_operasyon == -1 && Satın Al ( 0.10) == 1 ) { Uyku(600000); }
}
}
teşekkürler anladım
Bu nedenle soru, belirli bir süre geçtikten sonra (örneğin 1 gün) siparişi kapatmak için ne tür bir kod olması gerektiğidir.
Rica ederim.
Yaklaşık olarak: Bir değişkendeki keşif anını hatırlarsınız. Hemen istediğiniz süreyi ekleyin (örneğin, 1 gün = 60*60*24) .
Ardından, her tikte (veya zamanda) mevcut saatin kontrol zamanından fazla olup olmadığını takip edersiniz. Olursa kapatırsın. // if (TimeCurrent() > MyControlTime) CloseMyPosition();
if ( PositionsTotal() == 1 )
aynı...yanıt yok
// Normal aç
if ( TimeActivation ( 1 ) )
{
if ( _1_operasyon == 1 && Satın Al ( 0.10) == 1 ) { Uyku(600000); }
if ( _1_operasyon == -1 && Sat ( 0.10) == 1 ) { Uyku (600000); }
}
// Alma veya durdurmadan önce kapatamıyorum
if ( TimeActivation ( 2 ) )
{
if ( PositionsTotal() == 1 ) /// ÇALIŞMAZ)))
{
if ( _1_operasyon == 1 && Sat ( 0.10) == 1 ) { Uyku (600000); }
if ( _1_operasyon == -1 && Satın Al ( 0.10) == 1 ) { Uyku(600000); }
}
}
Aslında burada ne yazdığın belli değil ama PositionTotal()'ın açıkça bununla hiçbir ilgisi yok.
Print() öğesini kontrolden önce koyun, =1 ?:
Konstantin Gruzdev makalesinde "casuslar" ve "ajanlar" ile ilginç bir yöntem önerdi. )) Ama onun "aracı" exSpy Kontrol paneli MCM'nin çalışmak istemediği bir şeyim var.
Şimdi makalede yayınlanan versiyona bir göz atacağım. Şu anda, casusluk konusunda birkaç uzman yapıldı, harika çalışıyorlar.
Bu teknolojinin test cihazında çalışmayacağını düşünüyorum.
İşler.
Rica ederim.
Yaklaşık olarak: Bir değişkendeki keşif anını hatırlarsınız. Hemen istediğiniz süreyi ekleyin (örneğin, 1 gün = 60*60*24) .
Ardından, her tikte (veya zamanda) mevcut saatin kontrol zamanından fazla olup olmadığını takip edersiniz. Olursa kapatırsın. // if (TimeCurrent() > MyControlTime) CloseMyPosition();
Bir değişken için bir seçenektir, ancak daha güvenilir bir kapatma gerekiyorsa, terminali/danışmanı yeniden başlattıktan sonra bile, siparişi tanımlamak ve açılış zamanını kontrol etmek için sihir kullanabilirsiniz.