OnTradeTransaction() mql4'te nasıl değiştirilir? - sayfa 4

 

Tüm olayları kene ile yakalarım, önceden kaydedilmiş verilerle karşılaştırırım.

hepsi dizilerde.

Aslında, çok fazla kene olduğunda bazen frenler vardır. Bu nedenle kontroller arasındaki gecikmeyi 1 saniye yaptım.

Bu, birçok pozisyonu izlemekle ilgilidir.

Ve sadece belirli bir robotun pozisyonları ise, o zaman elbette orada daha kolaydır.

 

Neyse ki, görevim zor değil ve toplamda iki veya üç düzineden fazla sipariş yok.

Ve bu nedenle, zamanlayıcıda OrdersTotal() içinde ne olduğunu tıngırdatacağım ve hacimleri her yinelemede yeni ve eski değişkenlere yazacağım ve eğer hacim değiştiyse, daha ileri adımlar atacağım.

 
Aleksandr Volotko :

Neyse ki, görevim zor değil ve toplamda iki veya üç düzineden fazla sipariş yok.

Ve bu nedenle, zamanlayıcıda OrdersTotal() içinde ne olduğunu tıngırdatacağım ve hacimleri her yinelemede yeni ve eski değişkenlere yazacağım ve eğer hacim değiştiyse, daha ileri adımlar atacağım.

Bekleyen bir sipariş tetiklendiğinde hacim değişmez.

 
Artyom Trishkin :

Bekleyen bir sipariş tetiklendiğinde hacim değişmez.

Pekala, bir döngüde emirleri türe göre filtreliyorum ve açık toplam pozisyonun hacmini hesaplıyorum.

MT5'te belirli bir olayı beklemek için zorlanmadan basit bir şekilde yapabilirsinizken, böyle aptalca tıngırdatmak ve kaynakları boşa harcamak zorunda olmanız üzücü.

 
Aleksandr Volotko :

Pekala, bir döngüde emirleri türe göre filtreliyorum ve açık toplam pozisyonun hacmini hesaplıyorum.

MT5'te belirli bir olayı beklemek için zorlanmadan basit bir şekilde yapabilirsinizken, böyle aptalca tıngırdatmak ve kaynakları boşa harcamak zorunda olmanız üzücü.

Eh, MT5, MT4'ten daha yüksek bir büyüklük sırasıdır.

Bu, diğer işlevler için de geçerlidir.

 
Benim özel durumumda günde bir kez işlem, günde bir etkinlik olmak üzere 60*60*24=86.400 ekstra hareket yapılacak. Ve başka bir şekilde, henüz değil.

 
Aleksandr Volotko :
Benim özel durumumda günde bir kez işlem, günde bir etkinlik olmak üzere 60*60*24=86.400 ekstra hareket yapılacak. Ve başka bir şekilde, henüz değil.

Göreve bağlı.

Bir pozisyonun açılışını/kapanışını (kısmi değil) ve emir verme/silme işlemlerini yakalamanız gerekiyorsa, bir döngüde her seferinde listeyi aceleye getirmenize gerek yoktur.

OrdersTotal()'ın mevcut ve geçmiş değerini kontrol edebilirsiniz. Bir fark tespit edildiğinde - bir tür olayımız var - o zaman orada ne olduğuna bakarız.

Her şeyi emirlerin ve pozisyonların özelliklerinin karma toplamını kullanarak yaptım. Değiştiği anda - bir tür olayımız var - o zaman orada tam olarak neyin değiştiğine bakıyoruz.

Ama her şeyi ve değişiklikleri takip etme görevim vardı.

 
Aleksandr Volotko :
Benim özel durumumda, günde bir kez işlem ve günde bir etkinlik ile 60*60*24=86.400 ekstra hareket yapılacak. Ve başka bir şekilde, henüz değil.

Başka bir yaklaşım daha var (eğer yeni bir düzenin ortaya çıkması yalnızca uzman tarafından mümkünse):

  1. Danışmanın başlangıcında, listedeki tüm siparişler atlanarak bir dizi sipariş oluşturulur.
  2. Her yeni onay işaretinde, bir siparişin varlığı kullanılarak kontrol edilir.

 if ( OrderSelect (nTicket, SELECT_BY_TICKET) && OrderCloseTime() == 0 )

3. Bir sipariş varsa, gerekirse verilerini güncelleyin. Bu, SL/TP/hacim takibinin gerekli olması durumunda geçerlidir. Gerekli değilse, başka hiçbir şey yapmıyoruz.

4. Sipariş kapalı listede bulunursa (OrderCloseTime() > 0), diziden silin. Diziyi yalnızca danışman bir sipariş açtığında yenileriz.

Sonuç olarak, her bir onay işareti için tüm sipariş listesini atlamanız gerekmeyecektir. Yalnızca kendi dizisiyle işlemler.

 

Şimdilik OrdersTotal() değerlerinin bir karşılaştırmasını yapmaya çalışacağım (saygı @Artyom Trishkin ), teorik olarak bu yeterli olacaktır. Kısmi kapanma olmayacak.

Başlatma sırasında, piyasadaki siparişlerin varlığından bağımsız olarak, başlangıçta her zaman tam bir kontrol yapılması için -1 değerini eskisine atayacağım.

Ve sonra ya yeni bir düzen belirecek (olay) ya da eskisi silinecek (olay) ve burada enstrümanın sembolü bile önemli değil - herkes için tam bir kontrol yapabilirsiniz ve yapacaksınız, hala emirler sonsuz bir şekilde tıngırdatmaktan daha az büyüklük.

 
Aleksandr Volotko :

Şimdilik OrdersTotal() değerlerinin bir karşılaştırmasını yapmaya çalışacağım (saygı @Artyom Trishkin ), teorik olarak bu yeterli olacaktır. Kısmi kapanma olmayacak.

Başlatma sırasında, piyasadaki siparişlerin varlığından bağımsız olarak, başlangıçta her zaman tam bir kontrol yapılması için -1 değerini eskisine atayacağım.

Ve sonra ya yeni bir düzen belirecek (olay) ya da eskisi silinecek (olay) ve burada enstrümanın sembolü bile önemli değil - herkes için tam bir kontrol yapabilirsiniz ve yapacaksınız, hala emirler sonsuz bir şekilde tıngırdatmaktan daha az büyüklük.

Sadece bununla dikkatli çalışmanız gerekiyor, bugün bir pozisyonun kapatıldığı ve ikincisinin başka bir çiftte ve aynı zamanda keneler arasında neredeyse aynı anda açıldığı gerçeğiyle karşılaştım.

Sonuç olarak, OrdersTotal(), 8 ile aynı kaldı. Uzmanın mantığı yoldan çıktı - yeni verileri yeniden hesaplamadı