ontimer periyodunu nasıl ayarlayabilirim?
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 2.498 görüntülenme
- Durum
- Cevaplandı
1-Oninit içerisinde SetTimerInterval(60) ile periyodu 60 saniyeye ayarlıyorum.
2-timer fonksiyonu içerisinde global bir değişken ile fonksiyonun aktif olup olmadığını kontrol ettiriyorum.
Soru:
Ben timer fonksiyonunu aktif hale getirdiğim andan itibaren 60 saniye geçsin istiyorum. Yani kendi 60 saniyelik çalışma periyodunu geçersiz kılıp, benim aktif ettiğim andan 60 saniye sonra işleme-döngüye başlasın istiyorum. Nasıl yapabilirim?
Yorumlar (3)
- ▲0
- ▲0gercek zaman (dakika) ile senkronize mi etmek istiyorsunuz? Orn. 00:17:00'da calismaya baslasin seklinde.
- ▲0Hayır, öyle değil.
Şimdi ontimer fonksiyonunu başlatma durdurma olayı yok. oninite yazdığımız SetTimerInterval(60) ile çalışma periyodunu 60 saniyeye ayarlayarak başlıyor çalışmaya.
Ben stratejiyi 10:45:25 de çalıştırdım diyelim. ontimer her dakikanın 25. saniyesinde içindeki kodu çalıştıracak.
Stratejimin içinde sinyal geldi ve ben artık emir gönderdim. timer=true yaptım(ontimer başlangıcında yaptığım bir kontrol). Saat:11:00:20 diyelim. Ontimer her dakikanın 25. saniyesinde işleme girdiği için ve ben artık timer=true yaptığım için 5 saniye sonra ontimer içindeki kodlarım işleme girecek. Ben, emir gönderdikten, yani ontimer=true yaptıktan 60 saniye(ontimer için belirlediğim periyot kadar) sonra ontimer içindeki kod devreye girsin istiyorum.
//60 saniye sadece bir örnek, 75 saniye de olabilir, 120 saniye de.
Ontimer konusunda diğer durumlar:
1-Tüm stratejilerime ontimer kodu ekledim ve işlemci kullanımı artık %40 a seviyesinde. Bellek kullanımı da aynı oranda arttı. Ontimer kodu eklenmemiş statejilerim çalışırken işlemci kullanımı %3-5 civarındaydı. (Ek: Yaklaşık 4 saat geçtikten sonra iq dondu, prime bile işlem yapamaz duruma geldi.)
2-Sanıyorum oninit dışında veya bir kez belirlendikten sonra artık periyodu değiştirmemize izin vermiyor sistem. oninit içerisine SetTimerInterval(600000) gibi büyük bir sayı yazdım (işlemci kullanımı azalır umuduyla). Emir sonrasında ise SetTimerInterval(60) yazdım, periyodu değişmedi, yani oninit içerisine yazdığım uzun periyot devam etti.
3-Yapmak istediğim şey, belirlediğim periyotta (örneğin 60 saniyede bir) çalışan bir döngü kurup, istediğim şart oluştuğunda bu döngüden çıkmak. Bu olayı ontimer harici bir fonksiyonla yapabilir miyim?



SetTimerInterval(1)//60 saniyelik periyodu sıfırlamak amacıyla
SetTimerInterval(60)
timer_aktif=true;