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 .
- www.mql5.com
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)
Ş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 :)
Başka bir başlıktaki bir tartışmaya bağlantılardan oluşan bir koleksiyon:
https://www.mql5.com/ru/forum/2236/page13/#comment_27472
https://www.mql5.com/ru/forum/2236/page13/#comment_27486
https://www.mql5.com/ru/forum/2236/page13/#comment_27503
https://www.mql5.com/en/forum/2236/page14/#comment_27531 (eşzamansızlık hakkında)
https://www.mql5.com/ru/forum/2236/page14/#comment_27552
- www.mql5.com
İ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.
İ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; } //+------------------------------------------------------------------+
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 ( "Не купили...." ); }
... 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:
Bir duraklamanın her derde deva olmadığını unutmayın:
KimV'nin Sipariş Verme Doğrulama özelliği yardımcı olmayacak mı?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Ş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:
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?