OnTicaretİşlem

 
Geliştiricilerin yanıtıyla ilgileniyorum - OnTradeTransaction olayı neden garanti edilmiyor?
 
Alexey Oreshkin :
Geliştiricilerin yanıtıyla ilgileniyorum - OnTradeTransaction olayı neden garanti edilmiyor?

Muhtemelen geliştiriciler cevap vermekten bıkmışlardır. Onlara cevap vermeye çalışacağım: OnTradeTransaction tanım gereği garanti edilemez, çünkü bu bir olaydır . Bir olayın gönderileceği garanti edilse bile, alınacağı garanti edilemez. Olay gönderildiği anda, kullanıcı terminalinin kapalı olduğunu veya İnternet bağlantısının koptuğunu hayal edin - olay işlenemiyor. Bunun olasılığı kesinlikle düşüktür, ancak dışlanmaz.

Olayları analiz etmek yerine , ticaret ortamının durumunu analiz etmek gerekir ve sadece ticaret ortamı değiştiyse gerekli kararları verin. OnTransaction yalnızca çok sınırlı durumlarda kullanılabilir ve kural olarak, işinizde onsuz yapmak daha iyidir. MetaTrader 4'e bakın, OnTransaction'a sahip değil ve onsuz herkes gayet iyi geçiniyor.

 
Vasiliy Sokolov :

Muhtemelen geliştiriciler cevap vermekten bıkmışlardır. Onlara cevap vermeye çalışacağım: OnTradeTransaction tanım gereği garanti edilemez, çünkü bu bir olaydır . Bir olayın gönderileceği garanti edilse bile, alınacağı garanti edilemez. Olay gönderildiği anda, kullanıcı terminalinin kapalı olduğunu veya İnternet bağlantısının koptuğunu hayal edin - olay işlenemiyor. Bunun olasılığı kesinlikle düşüktür, ancak dışlanmaz.

Olayları analiz etmek yerine , ticaret ortamının durumunu analiz etmek gerekir ve sadece ticaret ortamı değiştiyse gerekli kararları verin. OnTransaction yalnızca çok sınırlı durumlarda kullanılabilir ve kural olarak, işinizde onsuz yapmak daha iyidir. MetaTrader 4'e bakın, OnTransaction'a sahip değil ve onsuz herkes gayet iyi geçiniyor.

MT4'te ağ olmaması nedeniyle, MT5'in aksine pozisyonları yönetmek genellikle çok daha kolaydır, bu nedenle orada OnTransaction'dan ne soğuk ne de sıcaktır.
Onlar. olay sadece teknik nedenlerle garanti edilmez ? Her şey çalışıyorsa, terminal bu olayı %100 garanti etmeli mi?

 
Alexey Oreshkin :

MT4'te ağ olmaması nedeniyle, MT5'in aksine pozisyonları yönetmek genellikle çok daha kolaydır, bu nedenle orada OnTransaction'dan ne soğuk ne de sıcaktır.
Onlar. olay sadece teknik nedenlerle garanti edilmez ? Her şey çalışıyorsa, terminal bu olayı %100 garanti etmeli mi?

Netleştirme, OnTradeTransaction ihtiyacını hiçbir şekilde etkilemez.

İkinci soruyu yalnızca geliştiricilerin kendileri cevaplayabilir. Sadece OnTrasaction'ın son derece stabil çalıştığı fark edilir. Olayı alırken kayıplar tespit edilmedi.

 
Vasiliy Sokolov :

Netleştirme, OnTradeTransaction ihtiyacını hiçbir şekilde etkilemez.

Netleştirme, pozisyon muhasebesini etkiler ve bu nedenle bu kadar basit bir soruyla ilgili çok fazla sorun vardır ve pozisyon muhasebesi için OnTradeTransaction'a da ihtiyaç vardır.

 
Alexey Oreshkin :

MT4'te ağ olmaması nedeniyle, MT5'in aksine pozisyonları yönetmek genellikle çok daha kolaydır, bu nedenle orada OnTransaction'dan ne soğuk ne de sıcaktır.
Onlar. olay sadece teknik nedenlerle garanti edilmez ? Her şey çalışıyorsa, terminal bu olayı %100 garanti etmeli mi?

Geliştiriciler, ürünün öncelikli özelliklerini seçer. MT4'ün öncelikli özelliği, MQL4 ile çalışmanın basitliğiydi.

MT5 ile ilk seviyenin bariz önceliği hızdır (ve esnekliktir). Ürünün tüm özelliklerini maksimumda alamazsınız. Bu teoriye aykırıdır.

En hızlı ürün, kaçınılmaz olarak müşteri programcısından çok daha fazlasını (bilgi, deneyim ve çaba) gerektirecektir.


Bu teknik sorunlarda Allah onların yanında olsun. Ayık düşünelim.

Diyelim ki MT5 geliştiriyorsunuz ve göreviniz alım satım işlemleri için bir HFT bloğu yazmak.

Bir yandan işlem kayıtları sunucudan sıraya alınırken, diğer yandan bu kayıtların XXX uzmanına iletilmesi gerekir.

XXX Expert Advisor'da, OnTradeTransaction() işleyicisinin içinde, kullanıcı her türlü "pornografiye" sahip olabilir!

Bu işlevin ne kadar süreyle gerçekleştirileceği kesinlikle belirsizdir.

Kuyruk, sunucudan alınan ancak henüz XXX uzmanına aktarılmayan yüzlerce kaydı biriktirebilir.

Bu durumda ne garanti edilebilir? Hız mı yoksa veri bütünlüğü mü?

Doğası gereği yalnızca HFT'ye katkıda bulunan bir işlev için son derece eski bilgileri "depolamak" mantıklı mı?

 

Çocuklar!

Okumak ve merak etmek...

OnTradeTransaction , herhangi bir yeri "kazmadan" EN güncel bilgileri almanızı sağlar

siparişlerde ve fırsatlarda!

Bu özelliği nasıl kullanacağınızı bilmiyorsunuz.

 
Михаил :

Çocuklar!

Okumak ve merak etmek...

OnTradeTransaction, herhangi bir yeri "kazmadan" EN güncel bilgileri almanızı sağlar

siparişlerde ve fırsatlarda!

Bu özelliği nasıl kullanacağınızı bilmiyorsunuz.

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 .
 
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 .

Bir yandan, evet. Öte yandan: isteğin sunucuya gönderildiği ancak işlemin henüz tamamlanmadığı durumlarda 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.

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

Bir yandan, evet. Öte yandan: isteğin sunucuya gönderildiği ancak işlemin henüz tamamlanmadığı durumlarda 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.

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.

Pek ç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ın kontrol edilmesini 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.

 
Alexey Oreshkin :
Geliştiricilerin yanıtıyla ilgileniyorum - OnTradeTransaction olayı neden garanti edilmiyor?

OnTradeTransaction, sunucunun OrderSendAsinc isteğine verdiği yanıtın sonucudur.

OrderSendAsinc işlevinin kendisi eşzamansızdır ve bu, adında bile belirtilir. Bu, işlevin sunucuya bir istekte bulunduğu ve göndermenin sonuçları hakkında programa bir yanıt döndürdüğü (göndermenin başarılı olup olmadığı) anlamına gelir.

Yani, ilkeye göre, horoz öttü ve en azından orada şafak sökmedi. Bu nedenle OnTradeTransaction'da sunucu yanıtı garanti edilmez. Orada çok az şey olabilir.

OrderSend ve OrderSendAsinc gibi iki benzer fonksiyon vardır.

Birincisi senkronizedir ve ne kadar sürerse sürsün sessizce sunucudan bir yanıt bekler (isteğin sunucu tarafından işlenmesinin sonucunu döndürür).

İkinci eşzamansız olan, sunucunun yanıtını beklemez, ancak işlemin sonucunu hemen döndürür (ancak isteği işlemenin sonucunu değil, isteğin sunucuya başarıyla gönderilip gönderilmediğinin sonucunu döndürür).

OrderSendAsinc, kararların hızlı bir şekilde alınması gerektiğinde basitçe gereklidir. Testler, OrderSendAsinc'in saniyede yüzlerce istek göndermeyle kolayca başa çıktığını gösteriyor (ancak bu hız, bir sunucu yanıtını beklememesinden kaynaklanmaktadır).

OnTradeTransaction olayının üretildiği terminal tarafından "geç" bir yanıt almak içindir (program daha ileri gittiği ve eşzamanlı olarak bir yanıt almadığı için koşullu olarak gecikmiştir, aslında gecikme saniye ve bir milisaniyedir).

OrderSend'in çalışmasından farkı, OnTradeTransaction'ın bir sipariş için birkaç kez oluşturulabilmesi ve terminale, isteğin sunucu tarafından işlenmesi hakkında yeni alınan bilgileri bildirebilmesidir. Bu, OnTradeTransaction'da sipariş işleme aşamalarını gördüğümüz anlamına gelir.

OnTradeTransaction sunucusu tarafından kabul edilen sipariş

Sipariş,TradeTransaction'da sıraya alındı

Sipariş ... OnTradeTransaction

Sipariş ... OnTradeTransaction vb

OnTradeTransaction olayına hangi siparişin yanıt geldiğinin tam olarak belirlenmesi için, siparişin ilk etkinliği dışındaki tüm etkinlikler bir bilet ile imzalanır.

İlk olay hem bilet hem de request_id tarafından imzalanır. request_id kullanıcı, OrderSendAsinc işlevinden siparişi gönderdikten hemen sonra alır. Bu nedenle, belirli bir OrderSendAsinc yinelemesi, OnTradeTransaction'da elde edilen sonuçlarla bağlantılıdır.