OrderSendAsync() işlevi - sayfa 3

 

Teknik mesaj. Bir konuda ilginç ifadeler topluyoruz.

sergeev :

Yedelkin :
Yürütme kuyruğundaki eşzamanlı isteklerin sınırından hesabın hangi özelliği sorumlu olacak? Bu göstergeyi programlı olarak bulmak mümkün olacak mı?

sadece OrderSendAsync = false işlevinin sonucu olacaktır.

onu takip et ve gezin

 
Rosh :

Konuyu ilgiyle yeniden okudum ve hatta pratikte kontrol ettim ve şimdi otomatik ticarete karşı aşırı ayrımcılık buldum.

İşte pozisyonu manuel olarak kapatma günlüğü: (kronoloji aşağıdan yukarıya açıktır)

2012.04.26 22:32:05     Trades  '686934': deal #9256820 sell 0.02 EURUSD at 1.32391 done (based on order #10091825)
2012.04.26 22:32:05     Trades  '686934': order #10091825 sell 0.02 / 0.02 EURUSD at 1.32391 done
2012.04.26 22:32:05     Trades  '686934': accepted instant sell 0.02 EURUSD at 1.32391
2012.04.26 22:32:04     Trades  '686934': instant sell 0.02 EURUSD at 1.32391

Burada gördüğümüz: sipariş gönderilir, sipariş kabul edilir, siparişe bilet atanır ve nihayet sipariş gerçekleştirilir (yorumlamada bazı kaymalar olabilir, ancak bunun gibi bir şey). Her şey klasik.

Kafa karıştırıcı olan tek şey, Trades olayının (terminalin içinde) hangi kategori için tetiklendiğini ve ayrıca hangi sipariş için (son iki kategori için) tetiklendiğini kesinlikle bilmesidir, aksi takdirde böyle bir yorumu görüntülemek imkansız olurdu, ancak programcı Bu bilgiyi elde etmek için tekerleği yeniden icat etmesi gerekiyor. Ve OrderSendAsync işlevindeki durum hiç basitlik katmadı.

Her ne kadar sipariş yürütme hızının arttığına dikkat edilmelidir. Artık siparişin sıraya yerleştirildiğini fark etmek için zamanınız yok ve sipariş zaten uygulandı.


Not Görünüşe göre bir sürü emir gönderdim, her biri için teorik olarak 4 İşlem gelecek, İşlemlerin her birinde her emri kontrol etmeniz gerekiyor.

Mavi 4*Sipariş_Sayısı* kontrol noktamız bitti, 10 sipariş için 400, 100 için 40000. Ve Allah korusun, bazı siparişlerde 4'ten daha az Ticaret olacak, o zaman tüm kontrol mantığı çöküyor, 4 numarada olduğu için ikinci bir sipariş göndermeden önce beklemeye devam edin (ilk istek yerine getirilmezse).

 

Burada sunucuya bir paket ticaret emri gönderdik.

Her siparişin ayrı ayrı izlenmesi gerekiyor mu? Ve bir yanıt almak ne kadar sürer?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
joo :

Her siparişin ayrı ayrı izlenmesi gerekiyor mu?

Evet

Ve bir yanıt almak ne kadar sürer?

Farklı brokerler farklıdır. STP ise, bu daha çok likidite sağlayıcısı için bir sorudur.
 
sergeev :

Evet

Farklı brokerler farklıdır. STP ise, bu daha çok likidite sağlayıcısı için bir sorudur.

Hayır, hayır, bunların hepsi kahve telvesi üzerine yapılan faldır, elle açtığınızda bir pencere var, satın al'a basıyorsunuz, requote olayını bekliyorsunuz veya gerçekleşiyor, tamam'a basıyorsunuz ve bu kadar.

Otomatik modda, tekrarlanan bir istek veya her tür top göndermek için dans etmeniz gereken bir referans noktası da olmalıdır.

Tehdit ekledim yukarıdaki yazıyı tekrar okuyun.

 
Urain :

Hayır, hayır, bunların hepsi kahve telvesiyle tahmin, manuel olarak açtığınızda bir pencere var, satın al'a basıyorsunuz, requote olayını bekliyorsunuz veya yürütülüyor, tamam'a basıyorsunuz ve bu kadar.

hayır. DONE (10009) dönüş kodunda bir vakayı açıklarsınız. senkron diyelim.

Ancak ticaretinizi sağlayıcıya devreden komisyoncular var. Ve bu durumda size hemen YERLEŞTİRİLDİ (10008) iade edecekler. Ve bu arada, eğer bu bir piyasa emriyse, bu cevapta Anlaşma bileti olmayacak. Sadece bilet sipariş edin .

Ve OrderSendAsync durumunda, bir sipariş bileti bile olmayacak.

Otomatik modda, tekrarlanan bir istek veya her tür top göndermek için dans etmeniz gereken bir referans noktası da olmalıdır.

Örneğin, MT4'te bile yeniden alıntıların dayanak noktası nedir? Sonsuz bir döngü yapıp bir emrin kaldırılmasını veya açılmasını beklemeyeceksiniz.

Her şey, kontrol edilen durumlarla, vb.

Документация по MQL5: Торговые функции / OrderGetTicket
Документация по MQL5: Торговые функции / OrderGetTicket
  • www.mql5.com
Торговые функции / OrderGetTicket - Документация по MQL5
 

OrderSendAsync() işlevini çalıştırmaya çalıştı

 //+------------------------------------------------------------------+
//|                                               OrderSendAsync.mq5 |
//+------------------------------------------------------------------+
MqlTradeResult   res={ 0 };
MqlTradeRequest req={ 0 };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   req.action= TRADE_ACTION_PENDING ;
   req.symbol= _Symbol ;
   req.volume= 1.0 ;
   req.price= 3.0 ;
   req.type= ORDER_TYPE_BUY_STOP ;
   req.type_filling= ORDER_FILLING_RETURN ;
   switch (OrderSendAsync(req,res))
     {
       case    true :
         Print ( "retcode=" ,res.retcode, ", order=" ,res.order, ", deal=" ,res.deal);
         break ;
       default : Print ( "Неудача при отправке запроса функцией OrderSendAsync()" );
     }
  }

Yanıt olarak alındı

2012.05.02 21:12:33 OrderSendAsync (USDCHF,M1) retcode=10008, order=0, deal=0

Hemen şu soru ortaya çıktı: OrderSendAsync() işlevi tarafından gönderildiğinde, sipariş bileti bilinmese bile , bir ticaret talebinin sonraki kaderini nasıl takip edecek? Yorum - ve bu komisyoncu doldurulmalıdır.

 
Eşzamansız mod, siparişlerin toplu toplu gönderimi için tasarlanmıştır, ancak tek bir işlem için değildir. Tek kişi için senkron modu kullanmak daha iyidir - her şey aynı hızda ve hatta tam hizmetle yürütülür.

OnTrade'de eşzamansız işlemlerin yürütülmesini izlemeniz gerekir. Evet, daha karmaşık, ama asenkronun bedeli bu.
 
Renat :
Eşzamansız mod, siparişlerin toplu toplu gönderimi için tasarlanmıştır, ancak tek bir işlem için değildir. Tek kişi için senkron modu kullanmak daha iyidir - her şey aynı hızda ve hatta tam hizmetle yürütülür.

OnTrade'de eşzamansız işlemlerin yürütülmesini izlemeniz gerekir. Evet, daha karmaşık, ama asenkronun bedeli bu.
Pekala, soruyu açıklığa kavuşturmama izin verin: toplu sipariş gönderme durumunda beş yüz ticaret talebinin sonraki kaderini kim takip edecek? Herhangi bir toplu sipariş gönderimi birçok tek işlemden oluştuğu için, herkes gerçekten önceki ve mevcut durumları karşılaştırma ilkesini kullanacak mı? Başka yaklaşımlar yok mu?
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Anlayışın kökü, süreçlerin eşzamansızlığıdır.
1) bir yanıtın güncelliğini ve hatta kullanılabilirliğini garanti etmez
2) geliştirici tarafında muhasebe işlemleri için açıkça ayrı kuyruklar gerektirir

Yani, yazarın kendisi, daha sonra OnTrade girişini yeniden kontrol edip doldurarak başvuru listesinin oluşturulmasına özen göstermelidir. Tabii ki acı verici.

Bizim açımızdan, asenkron işlemlerin sıralarını şeffaf bir şekilde koruyabilir, bunları yanıtlarla doldurabilir ve tüccarlara kuyruktan işlenmiş kayıtları kontrol etmek ve çıkarmak için uygun işlevler sağlayabiliriz. Kuyruklar, OnTrade'de eşzamansız olarak veya gönderilen bir toplu siparişten hemen sonra bir döngüde yoklama yoluyla eşzamanlı olarak kontrol edilebilir.

Böyle bir mekanizma hakkında düşüneceğiz - uzman geliştiriciler için hayatı bir büyüklük sırasına göre kolaylaştıracak ve rutini onlardan kaldıracaktır.
Neden: