OnTicaretİşlem - sayfa 2

 
Игорь Герасько :

Bir yandan, evet. Öte yandan: istek sunucuya gönderildiğinde ancak işlem henüz tamamlanmadığında ne yapmalı? Yalnızca bir emir ve pozisyon listesi (ve hesap geçmişi) ile çalışırsak hangi durumda olduğumuzu nasıl belirleyebiliriz?

MT4'te böyle bir sorun yok çünkü oradaki tüm ticaret işlemleri senkronize. Ama sonunda daha düşük performans alıyoruz.

Asenkron işlemlerin senkronize olanlardan daha hızlı olduğu gerçeği, ne olduğunu anlamamaktan kaynaklanan bir efsanedir. Eşzamansız işlemler için, bir ticaret eylemi gerçekleştirmenin tam döngüsü birkaç bölüme ayrılırken, eşzamanlı bir işlem için birdir. Eşzamansız bir işlem için sunucu yanıtı da gereklidir, değişimdeki yürütme aynıdır, yani. asenkron ve senkronize bir işlem için geçen toplam süre pratik olarak aynıdır. Asenkron siparişlerin avantajı, paralel gönderimlerini organize etme olasılığıdır, yani. Neredeyse aynı anda iki veya daha fazla sipariş gönderebilirsiniz. Bu nedenle, yüksek çalışma hızına (toplamda) ulaşılır. Her Expert Advisor eşzamansız gönderme modu gerektirmez. Her şeyden önce, aynı anda iki veya daha fazla enstrüman satın almanız gereken farklı arbitrajcılar veya HFT algoritmaları için bu gereklidir. Örneğin bir HFT bot piyasaya girmek için emir gönderebilir ve 3-4 ms sonra tam tersi emir verebilir, bu durumda ilk emir hakkında sunucudan cevap beklemek çok uzun bir işlemdir, bu nedenle sonucu beklemeden eşzamansız bir gönderme modu gerektirir. Uzmanların büyük çoğunluğunda bu tür hızlara ihtiyaç yoktur.

 
Vasiliy Sokolov :
Sen de bilmiyorsun. OnTradeTransaction konusunda şimdiden düzinelerce sayfa yazıldı, ancak bir şey anlaşılmadı: OnTradeTransaction son derece spesifik görevleri çözmek için bir hizmet işlevidir, sizin yaptığınız gibi ticarette kullanılamaz. Çeşitli akıllı insanlar çalışmalarınızı okur ve sonra benzer konular yaratır: "Gördüğünüz gibi, OnTradeTransaction garanti edilmez" - evet, çünkü uzman ticaret ortamını sizin yaptığınız gibi OnTradeTransaction aracılığıyla yaratmamalı, sadece içindekilere güvenmelidir. sistem, özellikle siparişlerin ve işlemlerin geçmişinde .

Ve sonra Ostap acı çekti ....

Benden kişisel olarak hoşlanmadığınız bir şey varsa, bunu tartışmaya açmanıza gerek yok.

"güçlü bir şekilde yüzdüğünüz" teknik sorunlar ...

İddialı tavırlarınla insanları yanıltıyorsun!

 
Михаил :

Ve sonra Ostap acı çekti ....

Benden kişisel olarak hoşlanmadığınız bir şey varsa, bunu tartışmaya açmanıza gerek yok.

"güçlü bir şekilde yüzdüğünüz" teknik sorunlar ...

İddialı tavırlarınla insanları yanıltıyorsun!

Mişa, merhaba! Formula 1'e nasıl gittiniz? Soçi'de hava nasıl?
 
Vasiliy Sokolov :
Mişa, merhaba! Formula 1'e nasıl gittiniz? Soçi'de hava nasıl?

Hey!

İyi! Denizde yüzdüm (su 24 dereceydi).

 
Михаил :

Hey!

İyi! Denizde yüzdüm (su 24 dereceydi).

Serin, çok sıcak su!

Cidden, hiçbir şikayetim yok. Esas hakkında tartışmak istiyorsanız - hoş geldiniz. Kimseye öğretme arzusu yoktur. Herkesin kare tekerlekli kendi bisikleti vardır.

 
Vasiliy Sokolov :

Emrin gönderilmesi ile piyasaya girmek için bir sonraki sinyal arasındaki süre, emrin gerçekleşme süresini aşarsa, hiçbir şey yapılmasına gerek yoktur. Buradaki mantık basit: asenkron bir sipariş gönderdik, konuyu bıraktık ve unuttuk. Bir sonraki sinyal doğrulama anını bekliyoruz. Bu ana kadar ticaret ortamı değişmediyse, Uzman Danışman tekrar bir giriş sinyali arar ve piyasaya girmek için emri tekrarlar. Aksine, her şey yolunda giderse ve emir yerine getirilirse, ortamı analiz eden uzman, bir pozisyonu olduğunu anlayacak ve yeni bir pozisyon açmayacaktır. Onlar. bu yaklaşımda, uzmanın durumunun piyasa ortamının durumuna karşılık gelmesi garanti edilir .

Durum, bir emrin yerine getirilmesine (6-100 ms) benzer bir süre sonra yeni bir sinyalin gelebileceği yüksek frekanslı ticarette daha karmaşıktır. Bu durumda, engelleme vazgeçilmezdir. Uzman, siparişin en son ne zaman gönderildiğini hatırlamalıdır. OnTransaction'da bir hata oluşursa, kilit sıfırlanır ve Expert Advisor yeniden alım satım işlemlerini gerçekleştirebilir.

Birçok insanın dua etmeyi sevdiği OnTradeTransacton'un HFT'ye hiçbir şekilde yardımcı olmadığını not ediyorum. Yeni bir giriş sinyali, OnTradeTransaction'da başarılı bir işlem yanıtının gelmesinden daha hızlı gelebilir. OnTradeTransacton kullansanız da kullanmasanız da kilitleme gereklidir.

OnTradeTransaction'da ortaya çıkan hataları kontrol etmeyi nasıl istersiniz? Bu, bir karşı soruyla yanıtlanabilir: Bir hata aldığınızda, bir Expert Advisor'ın işlem mantığını anında nasıl değiştirirsiniz? - Mümkün değil. Uygun kontrolleri (para durumu, hacim miktarı vb.) önceden yapmazsanız hatalar oluşur. Ama ortaya çıktıysa, hiçbir şeyi düzeltemezsiniz. Bu nedenle, OnTradeTransaction'da yapılacak en iyi şey, bu hatayı günlükte görüntülemek (daha sonra EA mantığını düzeltmek için) ve kullanılıyorsa kilidi sıfırlamaktır. Bunun için ve başka hiçbir şey için OnTradeTransaction kullanılmalıdır.

Şimdi Mikalas'ın çeşitli taraftarları koşarak gelecek ve bana domates fırlatmaya başlayacak - öyle olsun. Ancak, güvenilir ticaret mantığının ancak terminalin ticaret ortamına dayanması halinde organize edilebileceğini tekrarladım ve tekrar edeceğim. Diğer her şey - çalışmıyor.

Tam olarak belli değil, sinyallerin meydana gelmesi arasındaki süre nerede? Her ticaret sinyalinin kendi kayıt süresi vardır. Sinyal kaydedildikten (ortaya çıktıktan) sonra bir ticaret işlemi yapmak gerekir. Sonuç olarak, danışman sunucuya bir ticaret talebi gönderir ve çalışmaya devam eder. Sipariş henüz sunucu tarafından yürütülmedi. Yeni bir tik geliyor. Uzman Danışman, durumunu tekrar analiz eder ve açık bir sinyal olduğunu ancak çalışma emirleri arasında karşılık gelen bir pozisyon (veya emir) olmadığını öğrenir.

Soru : Bir danışman, OnTrade veya OnTradeTransaction'dan gelen verilere başvurmadan neden pozisyon olmadığını nasıl belirleyebilir? Ve birkaç neden olabilir:

1. Sunucuya açma talebi gönderilmiştir, ancak sunucu siparişin sonucu hakkında henüz bir yanıt vermemiştir. Bir cevap beklememiz gerekiyor.

2. İstek henüz sunucuya gönderilmedi. Bir sipariş göndermeniz gerekiyor.

3. İstek gönderildi, sunucudan siparişi yürütmenin imkansızlığı hakkında bir yanıt geldi. Hata mesajını işlemeniz ve daha sonra ne yapacağınıza karar vermeniz gerekir.

4. İstek gönderildi fakat sunucu uzun süre cevap vermiyor (bu süreyi herkes kendisi ayarlıyor, 1 dakikam var) (zaman aşımı).

OnTrade veya OnTradeTransaction kullanmadan soruna bir çözüm göremiyorum. Ama sen öyle olduğunu iddia ediyorsun. Hangisini açıklayın. MQL4/5'te iş parçacığı engelleme hakkında konuşmak garip olduğu için - burada iki veya daha fazla iş parçacığı yoktur, yalnızca bir iş parçacığı vardır. Ayrıca, "eğer her şey yolunda gittiyse ve sipariş yerine getirildiyse" ifadeleri ile işlem yapıyorsunuz, ancak bunun nasıl belirlendiğini hiç açıklamıyor. Ve sorumun amacı da tam olarak bu.

 
Игорь Герасько :

Tam olarak belli değil, sinyallerin meydana gelmesi arasındaki süre nerede? Her ticaret sinyalinin kendi kayıt süresi vardır. Sinyal kaydedildikten (ortaya çıktıktan) sonra bir ticaret işlemi yapmak gerekir. Sonuç olarak, danışman sunucuya bir ticaret talebi gönderir ve çalışmaya devam eder. Sipariş henüz sunucu tarafından yürütülmedi. Yeni bir tik geliyor. Uzman Danışman durumunu tekrar analiz eder ve açık bir sinyal olduğunu ancak çalışma emirleri arasında karşılık gelen bir pozisyon (veya emir) olmadığını öğrenir.

Soru : Bir danışman, OnTrade veya OnTradeTransaction'dan gelen verilere başvurmadan neden pozisyon olmadığını nasıl belirleyebilir? Ve birkaç neden olabilir:

1. Sunucuya açma talebi gönderilmiştir, ancak sunucu siparişin sonucu hakkında henüz bir yanıt vermemiştir. Bir cevap beklememiz gerekiyor.

2. İstek henüz sunucuya gönderilmedi. Bir sipariş göndermeniz gerekiyor.

3. İstek gönderildi, sunucudan siparişi yürütmenin imkansızlığı hakkında bir yanıt geldi. Hata mesajını işlemeniz ve daha sonra ne yapacağınıza karar vermeniz gerekir.

4. İstek gönderildi fakat sunucu uzun süre cevap vermiyor (bu süreyi herkes kendisi ayarlıyor, 1 dakikam var) (zaman aşımı).

OnTrade veya OnTradeTransaction kullanmadan soruna bir çözüm göremiyorum. Ama sen öyle olduğunu iddia ediyorsun. Hangisini açıklayın. MQL4/5'te iş parçacığı engelleme hakkında konuşmak garip olduğu için - burada iki veya daha fazla iş parçacığı yoktur, yalnızca bir iş parçacığı vardır. Ayrıca, "eğer her şey yolunda gittiyse ve sipariş yerine getirildiyse" ifadeleri ile işlem yapıyorsunuz, ancak bunun nasıl belirlendiğini hiç açıklamıyor. Ve sorumun amacı da tam olarak bu.

Yani bir akışı engellemek değil, ticaret talebinin gönderilmesini engellemek.

Karşı soru : Danışmanın ticaret emrinin neden gerçekleştirilemeyeceğini belirlediğini varsayalım (piyasa kapalı, para yok vb.) Sırada ne var ? Danışman mevcut durumu nasıl düzeltebilir? Hesaba para eklemek mi yoksa piyasayı açmak mı? Son siparişi gönderirken hatanın nedenini bilmek EA'nın daha fazla ticaret yapmasına nasıl yardımcı olacak?

 
Vasiliy Sokolov :

Bir akışı engellemekten değil, bir ticaret talebinin gönderilmesini engellemekten bahsediyorum.

İşte soru: sunucu siparişin yürütülmesinde bir hata döndürürse, ikinci bir sipariş gönderme olasılığının kilidini açmak için bunu nasıl öğrenebilirim? Yine, OnTrade ve OnTradeTransaction kullanılmadığı sürece.

Karşı soru : Danışmanın ticaret emrinin neden gerçekleştirilemeyeceğini belirlediğini varsayalım (piyasa kapalı, para yok vb.) Sırada ne var ? Danışman mevcut durumu nasıl düzeltebilir? Hesaba para eklemek mi yoksa piyasayı açmak mı? Son siparişi gönderirken hatanın nedenini bilmek EA'nın daha fazla ticaret yapmasına nasıl yardımcı olacak?

Çok yardımcı olacak. Para eksikliğini bırakalım, çünkü danışman bir ticaret emri göndermeden önce bile bu anı belirlemeli ve tüccarı bir mesajla (veya başka bir şekilde) bilgilendirmelidir. Buna göre, ticaret emri hiç gönderilmez.

Hata mesajı, siparişi göndermeye çalışmaya devam edip etmeme konusunda bilgi verebilir. Örneğin, piyasa kapalıysa hemen ikinci bir talep göndermemelisiniz. Ticareti bir süreliğine durdurmalısınız (danışmanın geliştiricisi tarafından belirlenir) ve ancak ondan sonra tekrar yeni bir istek göndermelisiniz (eğer ticaret sinyali hala aktifse). Bir teklif varsa, hemen yeni bir istek gönderebilirsiniz. Durakların ayarlanmasında bir hata varsa (Siparişin gönderildiği sırada Durdurma Seviyesi veya Dondurma Seviyesi değişti), yeni verilere göre duraklar ayarlanır ve hemen yeni bir talep gönderilir.

Bu nedenle, bir ticaret hatası (ve genel olarak - herhangi bir hata) bilgisi ve doğru işlenmesi, herhangi bir "normal" programın çalışması için vazgeçilmez bir koşuldur.

 
Игорь Герасько :

İşte soru: sunucu siparişin yürütülmesinde bir hata döndürürse, ikinci bir sipariş gönderme olasılığının kilidini açmak için bunu nasıl öğrenebilirim? Yine, OnTrade ve OnTradeTransaction kullanılmadığı sürece.

Çok yardımcı olacak. Para eksikliğini bırakalım, çünkü danışman bir ticaret emri göndermeden önce bile bu anı belirlemeli ve tüccarı bir mesajla (veya başka bir şekilde) bilgilendirmelidir. Buna göre, ticaret emri hiç gönderilmez.

Hata mesajı, siparişi göndermeye çalışmaya devam edip etmeme konusunda bilgi verebilir. Örneğin, piyasa kapalıysa hemen ikinci bir talep göndermemelisiniz. Ticareti bir süreliğine durdurmalısınız (danışmanın geliştiricisi tarafından belirlenir) ve ancak ondan sonra tekrar yeni bir istek göndermelisiniz (eğer ticaret sinyali hala aktifse). Bir teklif varsa, hemen yeni bir istek gönderebilirsiniz. Durakların ayarlanmasında bir hata varsa (Siparişin gönderildiği sırada Durdurma Seviyesi veya Dondurma Seviyesi değişti), yeni verilere göre duraklar ayarlanır ve hemen yeni bir talep gönderilir.

Bu nedenle, bir ticaret hatası (ve genel olarak - herhangi bir hata) bilgisi ve doğru işlenmesi, herhangi bir "normal" programın çalışması için vazgeçilmez bir koşuldur.

Piyasa kapalıysa, siparişi göndermeden önce bunu kontrol etmeniz gerekir.

Sizin tarafınızdan listelenen diğer durumlarda, işlem emri tekrar gönderilmelidir. Böylece, tüm hatalar iki kategoriye ayrılabilir:

  1. Oluşumu sipariş gönderilmeden önce bile tahmin edilebilen hatalar;
  2. Requotes gibi siparişin gönderildiği anda tahmin edilemeyen hatalar.

EA ikinci türden bir hata aldıysa, eylemleri her zaman aynı olmalıdır ve hatanın türüne bağlı olmamalıdır: yani, bu sefer gerçekleştirileceği umuduyla ticaret emrini tekrarlaması gerekir. EA, bir ticaret talebi göndermeden önce bile birinci türden hataları kontrol etmelidir. Bu nedenle, Expert Advisor'ın davranışını OnTradeTransaction'da döndürülen hatanın türüne göre ayarlamasına gerek yoktur. Ancak OnTradeTransaction'da, kullanıcıya hatalar hakkında yazabilir ve önceki ticaret işlemi tip 2 hatasıyla sona ermişse yeni bir ticaret işlemi için bloğu sıfırlayabilirsiniz. Aynı zamanda, herhangi bir nedenle OnTradeTransaction gerçekleşmezse, kilidin yine de zaman aşımı ile sıfırlanması gerekir. Bu nedenle OnTradeTransaction'ın gelip gelmemesi önemli değil, sadece OnTradeTransaction ile yeniden denemeler mümkün olduğunca hızlı gerçekleştirilecek.

ps FreezeLevel siparişi göndermeden önce de iyi bir şekilde analiz edilmelidir.

 
OnTradeTransaction'da () SL/TP'nin çalıştığını nasıl öğrenebilirim?