OrderSend() Soruları

 

Şampiyonanın ilk günü, Uzman Danışmanımın istendiği gibi çalışmadığını gösterdi, yani: bekleyen bir emir yerine, birkaç tek yönlü bekleyen emir veriyor. Aşağıdaki yapıyı kullanır:

 bool flag_order= false ;
...
if (OrderSend(request,result)) flag_order= true ;   //из блока обработки (модификации) имеющихся отложенных ордеров
...
if (flag_order== false )                             //из блока выставления отложенных ордеров
  {
   ...
   OrderSend(request,result);
  }                                           
Soru: Terminal, ilk bloktan [ör. istek mi bekliyor] yoksa sunucuya bir ticaret isteği gönderdikten sonra hemen bir sonraki operatöre mi (blok) gidiyor?
 

Elbette durumunuzu kontrol edeceğiz.

Ancak genel olarak OrderSend işlevi yardıma göre çalışır.

Возвращаемое значение

Başarılı bir temel yapı kontrolü durumunda (işaretçilerin kontrolü), true döndürülür - bu, bir ticaret işleminin başarılı bir şekilde yürütüldüğünü göstermez . İşlev yürütme sonucunun daha ayrıntılı bir açıklamasını elde etmek için sonuç yapısının alanlarını analiz etmelisiniz .

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

Elbette durumunuzu kontrol edeceğiz.

Ancak genel olarak OrderSend işlevi yardıma göre çalışır.

Hayır, şikayet etmiyorum, sadece anlamak istiyorum. Belki başka bir yerde batırmışımdır... Sonuç yapısının alanları da gerekli gördükleri yerlerde [öğrettikleri gibi :)] incelenir.

Ancak, anladığım kadarıyla, en azından bir sonraki ifadeye geçişin, yalnızca terminalin OrderSend () işlevini [sonuç yapısının alanlarını alma ve işleme dahil] tamamen işlemesinden sonra gerçekleşmesi gerektiği varsayılıyor ?

(Özür dilerim, önceki soruda yazım hatası yaptım: Sonuç yerine istek belirttim)

 
Yedelkin :

Şampiyonanın ilk günü, Uzman Danışmanımın istendiği gibi çalışmadığını gösterdi, yani: bekleyen bir emir yerine, birkaç tek yönlü bekleyen emir veriyor. Bunun gibi bir şey kullanır:

Soru: Terminal, ilk bloktan [ör. istek mi bekliyor] yoksa sunucuya bir ticaret isteği gönderdikten sonra hemen bir sonraki operatöre mi (blok) gidiyor?

Sorunu onaylıyorum. Bekleyen bir siparişin OrderSend() ayarını yaptıktan sonra OrdersTotal bunu her zaman görmez.

OrderSend()'den sonra bir duraklama ayarladım. Ama bugün şampiyonada robota yardım etmedi :)

 

İyi günler Hepsi.

Sadece piyasa için bir sipariş açacak bir program yapmaya çalışıyorum. onlar. Sembol, Hacim ve Emir Tipini oraya, ihtiyacım olan yöne sahip Pozisyon görünene kadar bir döngü içinde gönderirim.

Dergi Sayıları

2012.01.09 16:08:42 İşlemler '9066293' : 0.0000'den 1.00 EURUSD anında satın alma başarısız oldu (sapma: 103117312) [Geçersiz duraklar]

Peki piyasada açarsam neden açılış fiyatını belirteyim? Ve ayaklara ihtiyacım yok.

F9'da her şey harika bir şekilde açılır.

Bana nerede hata yaptığımı söyle ya da bir sipariş açmak için bir kod.

Yapıyı böyle bir minimumla dolduruyorum:

 uint zOrderSend ( string zSymbol, double zVolume, string zORDER_TYPE)
  {
zSymbol = "EURUSD" ;
zVolume = 1 ;
zORDER_TYPE = "Buy" ;
   Alert ( "*****************" , zSymbol, " " , zVolume, " " , zORDER_TYPE);
//--- готовим запрос
   MqlTradeRequest request;
   request.action= TRADE_ACTION_DEAL ;
//   request.magic=0;
   request.symbol=zSymbol;
//   request.volume=zVolume;
   request.volume=zVolume;
//   request.price=0;
//   request.sl=0;
//   request.tp=0;
//   request.deviation=SymbolInfoInteger("EURUSD",SYMBOL_SPREAD);                                         // slippage                           
//   request.deviation=50;
//--- сформируем тип ордера
if (zORDER_TYPE == "Buy" ) {request.type =   ORDER_TYPE_BUY ;}     // тип ордера = 0
if (zORDER_TYPE == "Sell" ) {request.type =   ORDER_TYPE_SELL ;}     // тип ордера = 1
Alert ( "Тип ордера: request.type = " ,request.type);
   request.type_filling = ORDER_FILLING_FOK ;
   request.type_time = ORDER_TIME_GTC ;
//   request.comment = "";
Dosyada bir pozisyon açmak için Uzman Danışmanın tüm testi.
Dosyalar:
 
awkozlov :

İyi günler Hepsi.

Sadece piyasa için bir sipariş açacak bir program yapmaya çalışıyorum. onlar. Sembol, Hacim ve Emir Tipini oraya, ihtiyacım olan yöne sahip Pozisyon görünene kadar bir döngü içinde gönderirim.

Ve bir şey çıkıyor = Geçersiz Duraklar ve bir piyasa emri için herhangi bir durdurmaya ihtiyacım yok. Nereye gittiğimi bile bilmiyorum...

Dosyada bir pozisyon açmak için Uzman Danışmanın tüm testi.


her şeyi çalışır durumda tut

 //+------------------------------------------------------------------+
//|                                                         Deal.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- create timer
   EventSetTimer ( 1 );

//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

   if (zOrderSend( _Symbol , 0.1 , ORDER_TYPE_BUY )== 10009 ) // 10009 TRADE_RETCODE_DONE Заявка выполнена
     {
       Alert ( "Купили!" );
     }
   else Alert ( "Не купили...." );
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---

  }
//+------------------------------------------------------------------+
uint zOrderSend( string zSymbol, double zVolume, ENUM_ORDER_TYPE zORDER_TYPE)
  {
   MqlTradeRequest       request;
   MqlTradeCheckResult   ch_result;
   MqlTradeResult        result;

// обнулим структуру запроса перед заполнением
   ZeroMemory (request);

   Alert ( "*****************" ,zSymbol, " " ,zVolume, " " ,zORDER_TYPE);
// заполняем структуру
   request.action= TRADE_ACTION_DEAL ;
   request.type_filling= ORDER_FILLING_AON ;
   request.symbol=zSymbol;
   request.type=zORDER_TYPE;
   request.deviation= 30 ;
   request.sl= 0.0 ;
   request.tp= 0.0 ;
   request.volume=zVolume;
   if (zORDER_TYPE== ORDER_TYPE_BUY )request.price= NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );
   if (zORDER_TYPE== ORDER_TYPE_SELL )request.price= NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits );

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

// отправляем структуру запроса на проверку
   if ( OrderCheck (request,ch_result)== false )
     {
       Alert ( "OrderCheck выявил ошибку: " + IntegerToString (ch_result.retcode)+ "/" +ch_result.comment);
       return ch_result.retcode;
     }
// отправляем запрос на торговый сервер
   if ( OrderSend (request,result)== false )
     {
       Alert ( "OrderSend возвратил ошибку: " + IntegerToString (result.retcode)+ "/" +result.comment);
       return result.retcode;
     }
// выводим на печать структуру ответа сервера
   Alert ( "Код результата операции сервера: " + IntegerToString (result.retcode));
   Alert ( "deal Тикет сделки "                 + IntegerToString (result.deal));
   Alert ( "order Тикет ордера "                + IntegerToString (result.order));
   Alert ( "volume Объем сделки "               + DoubleToString (result.volume));
   Alert ( "price Цена в сделке "               + DoubleToString (result.price));
   Alert ( "bid(цены реквоты) "                 + DoubleToString (result.bid));
   Alert ( "ask(цены реквоты) "                 + DoubleToString (result.ask));
   Alert ( "Комментарий: " +result.comment);

   return result.retcode;
  }
//+------------------------------------------------------------------+
 
sergey1294 :

her şeyi çalışır durumda tut


Teşekkür ederim. İşler. Ve o kadar hızlı ki, Pozisyon hakkındaki bilgilerin güncellenmesi için zaman kalmıyor.

Sonuç olarak, 2 sipariş verilir.

1 milisaniyelik bir duraklama ile tedavi edilir!


   if (zOrderSend( _Symbol , 0.1 , ORDER_TYPE_BUY )== 10009 ) // 10009 TRADE_RETCODE_DONE Заявка выполнена
     {
Sleep (1);
       Alert ( "Купили!" );
     }
   else Alert ( "Не купили...." );
  }
 
awkozlov :

... Pozisyonla ilgili bilgilerin güncellenmesi için zaman yoktur.

Sonuç olarak, 2 sipariş verilir.

1 milisaniyelik bir duraklama ile tedavi edildi!

Bir duraklamanın her derde deva olmadığını unutmayın:

 
Yedelkin :

Bir duraklamanın her derde deva olmadığını unutmayın:

KimV'nin Sipariş Verme Doğrulama özelliği yardımcı olmayacak mı?
 
-Alexey- :
KimV'nin Sipariş Verme Doğrulama özelliği yardımcı olmayacak mı?
Muhtemelen bu başlığı gözden kaçırmıştır. KimV'nin Sipariş Verme Doğrulama özelliğini nerede bulabilirim?