fonksiyon uyku alternatifi - sayfa 2

 
paulepanke :

böyle bir açıklamada dikkatli olun. sleep() işlevini çalıştırmak için her zaman mantıklı bir neden vardır. Test Cihazında ve hatta göstergelerde.

Sleep() kullanmak için mantıklı bir neden olmadığını söylemedim, birçoğu var, sleep() işlevinin Strategy Tester'da çalışmasını beklemek için hiçbir neden olmadığını söyledim. Strateji Test Cihazı tablosunda çalışan bir Göstergede çalışır mı, bilmiyorum, belki de . . . Strateji Test Cihazında çalışan bir EA'da çalışıyor mu, bildiğim kadarıyla hayır çalışmıyor. Strateji Test Cihazında çalışan bir EA duraklatılabilir mi? Evet yapabilir.
 
RaptorUK :
TimeSeconds()'ın size ne verdiğine bir bakın, ardından TimeCurrent()'in size ne verdiğini düşünün. . . hangisine ihtiyacınız var ve neden?


Simon,

int ZamanSaniye ( tarihsaat saat)

Belirtilen süre için dakikanın başlangıcından itibaren geçen saniye miktarını döndürür.

datetime TimeCurrent ( )
1 Ocak 1970 00:00'dan geçen saniye sayısı olarak bilinen son sunucu saatini (en son teklifin gelme zamanı) döndürür .


"hangisine ihtiyacın var ve neden?" - Simon

İkisini de konserde kullanırdım çünkü el ele giderler. - Nathan

TimeSeconds( datetime time ), parantezlerinin içine yerleştirilmiş bir değişken gerektirir. TimeCurrent() daha sonra bu parantezlerin içine yerleştirilir ve bu da bana uygun bir çözüm sunar. Bunu b4'ü yaptım, ancak döndürülen zaman değerlerinin neden atlıyor ve duraklıyor gibi göründüğünü anlamadım (etkin bir onay/kene olmaması nedeniyle).

Buna ne dersin?


Teşekkür ederim.

 
WHRoeder :

  1. Siz dönene kadar hiçbir tik oluşturulmaz ve bir sonrakini oluşturur ve start()'ınızı çağırır. 5 dakika hesaplar ve geri dönerseniz, bir sonraki aramadaki ses seviyesi (tik sayısı) +1 olur. Canlı bir grafikte, 5 dakika hesaplarsanız, 5 dakikalık keneleri kaçırırsınız ve M1'de birkaç yeni çubuk oluşmuş olur.

William,

Bu konuyu açıkladığınız için teşekkür ederiz.

Benim "2" yorumum. kene oluşturulduğunda, dönüş işlevi çağrılır. Daha sonra Start() işlevi, programın bir kez daha yürütülmesini tetikleyen return(0) işlevi çağrıldıktan hemen sonra çağrılır. 2. bölümün bu yorumu doğru mu?


"5 dakika için hesaplarsanız", EA'nın beş dakika için hesaplayacağından nasıl emin olabilirim (EA beş dakika için hesaplasa bile, bunun bir onay işaretinin oluşturulacağını garanti edeceğine inanmıyorum. Onay oluşturma olasılığı artırılır)?


Özür dilerim, bunu okumakta zorluk çekiyorum:

"5 dakika hesaplarsanız ve bir sonraki aramada ses seviyesi (tik sayısı) +1 olur. Canlı bir grafikte, 5 dakika hesaplarsanız, 5 dakikalık tıklamaları ve M1'de birkaç yeni tıklamayı kaçırırsınız. çubuklar oluşmuş olacak."


Cevabınız için çok teşekkürler.

 
RaptorUK :
Sleep() kullanmak için mantıklı bir neden olmadığını söylemedim, birçoğu var, Sleep()'in Strateji Test Cihazında çalışmasını beklemek için hiçbir neden olmadığını söyledim. Bir Strateji Test Cihazı tablosunda çalışan bir Göstergede çalışır mı, bilmiyorum, belki de . . . Strateji Test Cihazında çalışan bir EA'da çalışıyor mu, bildiğim kadarıyla hayır çalışmıyor. Strateji Test Cihazında çalışan bir EA duraklatılabilir mi? Evet yapabilir.

Simon,

" Strateji Test Cihazında çalışan bir EA duraklatılabilir mi? Evet olabilir."

Test cihazında bir EA'yı "duraklatmak" için kullanacağınız bu yöntemle ilgili düşüncelerinizi ifade edebilir misiniz?


Teşekkür ederim

 
  1. EA, start()'tan test cihazına geri döner. Test cihazı bir sonraki onay işaretini oluşturur ve start()'ı çağırır. EA dönmezse, bir sonraki onay işareti yoktur. start() işlevinin geri dönmesinin ne kadar sürdüğü önemli değildir. Bir sonraki kene, gerçekleştiğinde oluşturulur.
  2. Test cihazında EA'da duraklatamaz veya uyuyamazsınız. EA başlangıçtan döndükten sonra test cihazını duraklatmak için programlı olarak duraklat düğmesine basabilirsiniz.
 

William,

Yani, yeni bir onay işareti, bir EA'da start() işlevini çağırır, değil mi?

Size sorum şu: "Yeni bir onay işaretinin yanı sıra start() işlevini çağırmanın başka bir yolunu biliyor musunuz? Muhtemelen Start() işlevini çağırmak için tutarlı bir tekrarlayan eylem?"

(Düşünüyorum, kenelere bağlı olmayan saniyeleri tutarlı bir şekilde izlemenin bir yolu var mı)


"...Bir sonraki onay işareti, oluştuğunda oluşturulur."

Yazmak istediğiniz şeyin "Yeni bir onay işareti oluşturulduğunda Start() daha sonra yürütülür" olduğuna inanıyorum. ;)


Yani, bir EA'nın duraklatılamayacağını veya test cihazında uyuyamayacağını söylüyorsunuz, değil mi?


Sağladığınız bağlantıyı gözden geçireceğim, ancak bu arada, test edilen bir EA baştan geri döndükten sonra "test cihazını duraklatmak için bir duraklatma düğmesine basma" yöntemini açıklayabilir misiniz?

Test cihazında çalıştırıldığında, bu yöntem, canlı bir hesapta "gerçek zamanlı" olarak belirli bir zaman dilimi için duraklatılan EA'nın performansını simüle eder mi?


Test cihazının sınırlamaları olduğunu ve "gerçek zamanlı" performansın simülasyonu için "geçici çözümler" kullanılması gerektiğini anlıyorum.


Çok teşekkürler William.


Ayrıca sana Will dememin bir sakıncası var mı? Bana bir saniye kazandırır. zaman her mesaj. senin araman.

EA'nızın sahip olduğu bir özelliği beğendim ve bu, " Hafta sonundaki pazar boşluğunun SL'yi geçerek zarar görmesini önlemek için tüm siparişleri hafta sonundan önce (pazar Cuma kapanışı) kapatmak istedim."

(Sevinçle alkışlar.) Hahaha! ;) Bu özelliği EA'nıza ekleyerek gereksiz kayıpları azaltmış olursunuz ama bu benim şu anda yapmaya çalıştığımdan farklı. Şu anda saniyeleri güncellemek için kenelere ihtiyaç duymadan sürekli olarak saniyeleri takip etmeye çalışıyorum. Start() işlevini güncellemek için farklı bir yol istiyorum, Anlaşıldı mı?


Teşekkür ederim

 
WhooDoo22 :

Şu anda saniyeleri güncellemek için kenelere ihtiyaç duymadan sürekli olarak saniyeleri takip etmeye çalışıyorum. Start() işlevini güncellemek için farklı bir yol istiyorum, Anlaşıldı mı?

Yapmaya çalıştığınız şeyin, anlayış eksikliğinden dolayı probleminize kusurlu bir çözüm olduğundan şüpheleniyorum. Fiyat 30 saniye boyunca değişmediyse neden bir saniyeden diğerine saniyeyi bilmeniz gerekiyor? fiyat değiştiğinde bir onay işareti alırsınız.

WHRoeder'ın söylediklerinin açıklığa kavuşturulması için bir nokta, tüm onay işaretleri, Strateji Test Cihazı onları çağırmaya/yürütmeye başlamadan önce oluşturulur, test edicide/geçmişte bir .fxt dosyasına kaydedilir, ST bir ilk onay işaretini çağırır ve bu sırayla başlatmaya neden olur( ) çalıştırılacaksa, start() yürütmeyi bitirene kadar bir sonraki onay çağrılmaz/kullanılmaz, bunu anlamak çok önemlidir. Yalnızca start() bittiğinde sonraki onay işareti kullanılacaktır, böylece EA yeniden start()'ı çağırabilir. ST tam hızda çalıştırıldığında, ST'nin hızını yöneten start() çalıştırma hızıdır, bu nedenle çok basit bir start() işlevi ST'nin çok hızlı çalışmasına izin verir, karmaşık bir start() işlevi ST'nin daha yavaş çalışmasına neden olur.

Canlı/Demo durumunda, start() işlevi çok karmaşıksa ve çalışması uzun zaman alıyorsa, belki saniyenin onda biri kadar sürüyorsa, bu durumda bir sonraki onay işaretinin start() tamamlanmadan önce gelmesi mümkündür. kene kaçırılacak ve start() öğesinin çağrılmasına neden olmayacak. . . . bu ST ile olamaz.

 
WhooDoo22 :

Simon,

"Strateji Test Cihazında çalışan bir EA duraklatılabilir mi? Evet olabilir."

Test cihazında bir EA'yı "duraklatmak" için kullanacağınız bu yöntemle ilgili düşüncelerinizi ifade edebilir misiniz?

Elbette, çok zarif değil bu yüzden kimsenin kullanmasını önermem. GlobalVariable'ı ayarladım ve bir komut dosyasıyla ayarladım, ST'deki EA GlobalVariable'ın ayarlandığını gördüğünde, sürekli olarak GlobalVariable'ın ayarsız olup olmadığını kontrol eden bir döngüde oturur, komut dosyası GlobalVariable'ı ayarladığında EA döngüden çıktı ve start() işlevi sonlandırılabilir.
 
WhooDoo22 :

"hangisine ihtiyacın var ve neden?" - Simon

İkisini de konserde kullanırdım çünkü el ele giderler. - Nathan

TimeSeconds( datetime time ), parantezlerinin içine yerleştirilmiş bir değişken gerektirir. TimeCurrent() daha sonra bu parantezlerin içine yerleştirilir ve bu da bana uygun bir çözüm sunar. Bunu b4'ü yaptım ama döndürülen zaman değerlerinin neden atlıyor ve duraklıyor göründüğünü anlamadım (etkin bir onay/kene olmaması nedeniyle).

2 olayınız olduğunu ve bu olayların 10 saniye arayla olduğunu varsayalım, bu 2 olay için TimeSeconds( datetime time ) tarafından döndürülen değerler arasındaki fark ne olacak?
 
RaptorUK :

Yapmaya çalıştığınız şeyin, anlayış eksikliğinden dolayı probleminize kusurlu bir çözüm olduğundan şüpheleniyorum. Fiyat 30 saniye boyunca değişmediyse neden bir saniyeden diğerine saniyeyi bilmeniz gerekiyor? fiyat değiştiğinde bir onay işareti alırsınız.

WHRoeder'ın söylediklerinin açıklığa kavuşturulması için bir nokta, tüm onay işaretleri, Strateji Test Cihazı onları çağırmaya/yürütmeye başlamadan önce oluşturulur, test edicide/geçmişte bir .fxt dosyasına kaydedilir, ST bir ilk onay işaretini çağırır ve bu sırayla başlatmaya neden olur( ) çalıştırılacaksa, start() yürütmeyi bitirene kadar bir sonraki onay çağrılmaz/kullanılmaz, bunu anlamak çok önemlidir. Yalnızca start() bittiğinde sonraki onay işareti kullanılacaktır, böylece EA yeniden start()'ı çağırabilir. ST tam hızda çalıştırıldığında, ST'nin hızını yöneten start() çalıştırma hızıdır, bu nedenle çok basit bir start() işlevi ST'nin çok hızlı çalışmasına izin verir, karmaşık bir start() işlevi ST'nin daha yavaş çalışmasına neden olur.

Canlı/Demo durumunda, start() işlevi çok karmaşıksa ve çalışması uzun zaman alıyorsa, belki saniyenin onda biri kadar sürüyorsa, bu durumda bir sonraki onay işaretinin start() tamamlanmadan önce gelmesi mümkündür. kene kaçırılacak ve start() öğesinin çağrılmasına neden olmayacak. . . . bu ST ile olamaz.

Simon,

Yapmaya çalıştığınız şeyin, anlayış eksikliğinden dolayı probleminize kusurlu bir çözüm olduğundan şüpheleniyorum. Fiyat 30 saniye boyunca değişmediyse neden bir saniyeden diğerine saniyeyi bilmeniz gerekiyor? fiyat değiştiğinde bir onay işareti alırsınız.

Anlayış eksikliğim olduğunu kabul edeceğim, bu yüzden konuyu MQL4 forumunda tartışıyorum. Fiyat değiştiğinde tasarruf etmek istiyorum (bunu nasıl yapacağımı anlıyorum). Ayrıca, Sleep() kullanarak bir CANLI/DEMO grafiğinde fiyatları her saniye tutarlı bir şekilde nasıl kaydedeceğimi anlıyorum. Amaç: Maksimum bir dakikaya veya daha kısa bir süreye kadar saniyeleri (kenelerin oluşturulmasına dayalı saniyeleri izlemeden) tutarlı bir şekilde takip etmek ve ardından izlenen saniyeleri sıfıra sıfırlamak istiyorum. Bu hedefi neden gerçekleştirmek istediğimi anlıyorum. Bunun nedeni, test cihazında bir EA'yı test etmem gerekiyor ve test ederken Sleep() kullanamıyorum. Doğru ne yapmalı? Toplama seçenekleri.

Ayrıntılar o zaman hm? ;)

Bir zamanlayıcıyı (test cihazında kullanılabilir) bir EA'ya kodlayın. Bu zamanlayıcı 0-30'dan yukarı veya 30-0'dan aşağı doğru sayar. Bu süre yukarı/aşağı sayarken, ayrı bir vektör izleme fiyat hareketim var (çok büyük boyutlu bir vektör).

Şartlarım böyle

Fiyat x puan (0-30 veya 30-0 saniye içinde) giderse , karar verin.

Fiyat x noktayı geçmezse (0-30 veya 30-0 saniye içinde), ArrayInitialize().


Bu Simon'a ne diyorsun?


Teşekkür ederim