OrderSend ile MT5'te nasıl düzgün çalışılır - sayfa 5

 
Andrey Khatimlianskii :

Resmi gördüm. Değişim için her şey açıktır (limit emriyle).

Forex ve piyasa emirlerini bilmiyorsunuz. Temiz.

Bir piyasa emriyle aynı (Borsa'da)

Katma

Bir piyasa emri gönderilirse, bir bilet aldıktan sonra onunla tarihe gideriz ve

ona ne olduğuna bak. Ayrıca OnTradeTransaction'a da bakabilirsiniz.

 TRADE_TRANSACTION_HISTORY_ADD
 
Andrey Khatimlianskii :

Peki ya "OrderSend bileti iade ettiyse, o zaman bitti"?

Hala tarihe geçmeniz mi yoksa olayları beklemeniz mi gerekiyor? Peki, bu konu bununla ilgili!

Doğru şekilde. Ve "banka masasına" ne demedim?

Örnek olarak bir danışman bile gönderdim (Değişim için)

 
Andrey Khatimlianskii :

Evet, genel olarak her şey pek alakalı değil) Ama katıldığınız için teşekkürler.

Mesele şu ki, "senkronize" OrderSend, danışman hesap üzerindeki etkisini görmeden önce sona eriyor (geçmişte anlaşma yok ve pozisyon değişmiyor).

Ve normal çalışma için, bir olayı beklemek (çok kullanışlı bir özellik! Ama bu durumda değil) veya geçmişe bakmak (ayrıca beklemekle) şeklinde koltuk değnekleri bulmanız gerekir.

Gerçekten de, FOREX için bir sorun var (aynı danışmanı FOREX'te başlattı)

 2016.10 . 14 02 : 18 : 20.229 Trades   '3941932' : buy limit 1.00 GBPUSD at 1.22374
2016.10 . 14 02 : 18 : 20.276 Trades   '3941932' : accepted buy limit 1.00 GBPUSD at 1.22374
2016.10 . 14 02 : 18 : 20.292 Trades   '3941932' : order # 102956267 buy limit 1.00 / 1.00 GBPUSD at market done in 62.769 ms
2016.10 . 14 02 : 18 : 20.292 Trades   '3941932' : failed cancel order # 102956267 buy limit 1.00 GBPUSD at 1.22374 [Invalid request]
2016.10 . 14 02 : 18 : 20.292 Trades   '3941932' : cancel order # 102956267 buy limit 1.00 GBPUSD at 1.22374
2016.10 . 14 02 : 18 : 20.354 Trades   '3941932' : accepted cancel order # 102956267 buy limit 1.00 GBPUSD at 1.22374
2016.10 . 14 02 : 18 : 20.354 Trades   '3941932' : cancel # 102956267 buy limit 1.00 GBPUSD at market done in 66.823 ms

2016.10 . 14 02 : 18 : 20.229 TestOrders (GBPUSD,H1)  OnChartEvent Send Order Sync mode
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  SendOrderSyncMode Order sent in sync mode
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  RemoveOrderSyncMode Order not sent (remove) in sync mode.
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_ADD
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  OnTradeTransaction Order update state = ORDER_STATE_PLACED
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  OnTradeTransaction Order plased done. Ticket = 102956267
2016.10 . 14 02 : 18 : 20.292 TestOrders (GBPUSD,H1)  RemoveOrderAsyncMode Order sent (remove) in async mode
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Order update state = ORDER_STATE_REQUEST_CANCEL
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_DELETE
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_HISTORY_ADD
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Order remove done. Ticket = 102956267
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 14 02 : 18 : 20.354 TestOrders (GBPUSD,H1)  OnTradeTransaction Order get ticket done. Ticket = 102956267
 

Ancak asenkron modda (FOREX) her şey yolunda gidiyor

 2016.10 . 14 02 : 31 : 26.145 Trades   '3941932' : sell limit 1.00 GBPUSD at 1.22604
2016.10 . 14 02 : 31 : 26.206 Trades   '3941932' : accepted sell limit 1.00 GBPUSD at 1.22604
2016.10 . 14 02 : 31 : 26.208 Trades   '3941932' : order # 102958649 sell limit 1.00 / 1.00 GBPUSD at market done in 63.027 ms
2016.10 . 14 02 : 31 : 26.208 Trades   '3941932' : cancel order # 102958649 sell limit 1.00 GBPUSD at 1.22604
2016.10 . 14 02 : 31 : 26.271 Trades   '3941932' : accepted cancel order # 102958649 sell limit 1.00 GBPUSD at 1.22604
2016.10 . 14 02 : 31 : 26.273 Trades   '3941932' : cancel # 102958649 sell limit 1.00 GBPUSD at market done in 64.700 ms

2016.10 . 14 02 : 31 : 26.145 TestOrders (GBPUSD,H1)  OnChartEvent Send Order Acync mode
2016.10 . 14 02 : 31 : 26.145 TestOrders (GBPUSD,H1)  SendOrderAsyncMode Order sent in async mode
2016.10 . 14 02 : 31 : 26.207 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_ADD
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  OnTradeTransaction Order get ticket done. Ticket = 102958649
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  OnTradeTransaction Order update state = ORDER_STATE_PLACED
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  OnTradeTransaction Order plased done. Ticket = 102958649
2016.10 . 14 02 : 31 : 26.208 TestOrders (GBPUSD,H1)  RemoveOrderAsyncMode Order sent (remove) in async mode
2016.10 . 14 02 : 31 : 26.272 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 14 02 : 31 : 26.272 TestOrders (GBPUSD,H1)  OnTradeTransaction Order update state = ORDER_STATE_REQUEST_CANCEL
2016.10 . 14 02 : 31 : 26.272 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_DELETE
2016.10 . 14 02 : 31 : 26.273 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 14 02 : 31 : 26.273 TestOrders (GBPUSD,H1)  OnTradeTransaction Order get ticket done. Ticket = 102958649
2016.10 . 14 02 : 31 : 26.273 TestOrders (GBPUSD,H1)  OnTradeTransaction Transaction type: TRADE_TRANSACTION_HISTORY_ADD
2016.10 . 14 02 : 31 : 26.273 TestOrders (GBPUSD,H1)  OnTradeTransaction Order remove done. Ticket = 102958649
 
Andrey Khatimlianskii :
Elbette herkes mesajı alacak. Ancak, birisinin aynı mesajı bir saat önce almadığını ve yeni bir emir-gönderme başlatmadığını bilmeyecekler.

Yeni fikir.

Bir danışman -eşleyici yazın. Bir OrderSend yapıldığında, veriler bu EA'ya gönderilir ve yanıt verene kadar beklenir.

Bununla birlikte, slip versiyonundaki fark aynı yumurtalardır. Genel olarak, seçeneğiniz ne yazık ki en iyisidir.

 
prostotrader :

Bir piyasa emriyle aynı (Borsa'da)

Katma

Bir piyasa emri gönderilirse, bir bilet aldıktan sonra onunla tarihe gideriz ve

ona ne olduğuna bak.

CTrade::ResultDeal() sıfır ve CTrade::ResultOrder() 0 döndürdüğünde teorik olarak mümkün mü? Örneğin, TRADE_RETCODE_TIMEOUT ile.
 
prostotrader :

OrderSend() kesinlikle eşzamanlı bir işlevdir - bir bilet alırsanız her şey yerine getirilir.

Aşağıda bir örnek

Eklendi ve işte günlükler

https://www.mql5.com/en/forum/38456/page85#comment_2888263

Bağlantı için teşekkürler. Ama soru biraz farklıydı. Aksine, bu bir soru değil, OnTrade() olayının işlenmesini beklemeden sipariş durumunu yerinde kontrol etme lehine bir argümandı.
 
Oleg Shenker :
Bağlantı için teşekkürler. Ama soru biraz farklıydı. Aksine, bu bir soru değil, OnTrade() olayının işlenmesini beklemeden sipariş durumunu yerinde kontrol etme lehine bir argümandı.

Örnek koda bakmamışsınız.

if (SendOrderSyncMode())
           {
             if (order_ticket> 0 )
              {
               if ( OrderSelect (order_ticket))
                 {
                  RemoveOrderSyncMode(order_ticket);
                 }
               else
                 {
                   Print ( __FUNCTION__ , " Order not select! Ticket = " ,order_ticket);
                 }
              }
           }

Eşzamanlı modda (OrderSend()) bir siparişin silinmesi, bir yanıt aldıktan sonra yapılmış olmalıdır.

SendOrserSyncMode işlevi , ancak bu olmadı.

2016.10 . on dört 02 : 18 : 20.292 İşlemler '3941932' : başarısız emir # 102956267 satın alma limiti 1.22374'te 1.00 GBPUSD [Geçersiz istek]

Hata burada yatıyor. Belgelere göre, bir bilet aldıysak, sipariş ticaret sistemine verildi,

Ancak bu (FOREX'te) gerçekleşmez ve silme, RemoveOrderAsyncMode işlevinin gövdesinde, yani .

OnTradeTransaction'da bir mesaj aldıktan sonra

Katma

OrderSend() komutu ile sipariş gönderdikten sonra konu başlatan kişinin sorusuna cevap verilmesi,

OntradeTransaction'da (OnTrade) bir olay aldıktan sonra bir emirle işlem yapabilirsiniz.

Görünüşe göre geliştiriciler sorunu çözecek.

Katma

Şimdi FORTS'a baktım - bu problem bende de var

2016.10 . 17 18 : 45 : 19.074 Trades   '1007932' : buy limit 1.00 GAZR- 12.16 at 12847
2016.10 . 17 18 : 45 : 19.081 Trades   '1007932' : accepted buy limit 1.00 GAZR- 12.16 at 12847
2016.10 . 17 18 : 45 : 19.081 Trades   '1007932' : buy limit 1.00 GAZR- 12.16 at 12847 placed for execution
2016.10 . 17 18 : 45 : 19.091 Trades   '1007932' : order # 52178167 buy limit 1.00 / 1.00 GAZR- 12.16 at 12847 done in 17.440 ms
2016.10 . 17 18 : 45 : 19.091 Trades   '1007932' : failed cancel order # 52178167 buy limit 1.00 GAZR- 12.16 at 12847.00000 [Invalid request]
2016.10 . 17 18 : 45 : 19.091 Trades   '1007932' : cancel order # 52178167 buy limit 1.00 GAZR- 12.16 at 12847
2016.10 . 17 18 : 45 : 19.098 Trades   '1007932' : accepted cancel order # 52178167 buy limit 1.00 GAZR- 12.16 at 12847
2016.10 . 17 18 : 45 : 19.099 Trades   '1007932' : cancel order # 52178167 buy limit 1.00 GAZR- 12.16 at 12847 placed for execution in 7.215 ms

2016.10 . 17 18 : 45 : 19.074 TestOrders (GAZR- 12.16 ,M1)      OnChartEvent Send Order Sync mode
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      SendOrderSyncMode Order sent in sync mode
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      RemoveOrderSyncMode Order not sent (remove) in sync mode.
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_ADD
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order update state = ORDER_STATE_REQUEST_ADD
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order update state = ORDER_STATE_PLACED
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order plased done. Ticket = 52178167
2016.10 . 17 18 : 45 : 19.091 TestOrders (GAZR- 12.16 ,M1)      RemoveOrderAsyncMode Order sent (remove) in async mode
2016.10 . 17 18 : 45 : 19.098 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 17 18 : 45 : 19.098 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order update state = ORDER_STATE_REQUEST_CANCEL
2016.10 . 17 18 : 45 : 19.099 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 17 18 : 45 : 19.099 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order get ticket done. Ticket = 52178167
2016.10 . 17 18 : 45 : 19.099 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_UPDATE
2016.10 . 17 18 : 45 : 19.099 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order update state = ORDER_STATE_REQUEST_CANCEL
2016.10 . 17 18 : 45 : 19.108 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_REQUEST
2016.10 . 17 18 : 45 : 19.108 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_ORDER_DELETE
2016.10 . 17 18 : 45 : 19.108 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Transaction type: TRADE_TRANSACTION_HISTORY_ADD
2016.10 . 17 18 : 45 : 19.108 TestOrders (GAZR- 12.16 ,M1)      OnTradeTransaction Order remove done. Ticket = 52178167
 
prostotrader :

OrderSend() komutu ile sipariş gönderdikten sonra konu başlatan kişinin sorusuna cevap verilmesi,

OntradeTransaction'da (OnTrade) bir olay aldıktan sonra bir emirle işlem yapabilirsiniz.

Bir sembol üzerinde iki Uzman Danışman olması durumunda?
 
fxsaber :
Bir sembol üzerinde iki Uzman Danışman olması durumunda?

Evet, bir sembolde iki danışman.

struct MqlTradeRequest
  {
   ENUM_TRADE_REQUEST_ACTIONS     action;           // Тип выполняемого действия
   ulong                          magic;             // Штамп эксперта (идентификатор magic number)
   ulong                          order;             // Тикет ордера
   string                         symbol;           // Имя торгового инструмента
   double                         volume;           // Запрашиваемый объем сделки в лотах
   double                         price;             // Цена  
   double                         stoplimit;         // Уровень StopLimit ордера
   double                         sl;               // Уровень Stop Loss ордера
   double                         tp;               // Уровень Take Profit ордера
   ulong                          deviation;         // Максимально приемлемое отклонение от запрашиваемой цены
   ENUM_ORDER_TYPE                type;             // Тип ордера
   ENUM_ORDER_TYPE_FILLING        type_filling;     // Тип ордера по исполнению
   ENUM_ORDER_TYPE_TIME           type_time;         // Тип ордера по времени действия
   datetime                       expiration;       // Срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED)
   string                         comment;           // Комментарий к ордеру
   ulong                          position;         // Тикет позиции
   ulong                          position_by;       // Тикет встречной позиции
  };

"kendine ait olmayan" pozisyonları, emirleri ve anlaşmaları elemek.