OrderSend() 질문

 

챔피언십 첫날에 내 Expert Advisor가 의도한 대로 작동하지 않는 것으로 나타났습니다. 다음과 같은 것을 사용합니다.

 bool flag_order= false ;
...
if (OrderSend(request,result)) flag_order= true ;   //из блока обработки (модификации) имеющихся отложенных ордеров
...
if (flag_order== false )                             //из блока выставления отложенных ордеров
  {
   ...
   OrderSend(request,result);
  }                                           
질문: 터미널은 첫 번째 블록[즉. 요청을 기다리나요] 아니면 서버 에 거래 요청을 보낸 후 즉시 다음 오퍼레이터(블록)로 넘어가나요?
 

우리는 물론 귀하의 사례를 확인할 것입니다.

그러나 일반적 으로 OrderSend 기능 은 도움말에 따라 작동합니다.

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

구조의 기본 검사(포인터 검사)가 성공한 경우 true가 반환 됩니다. 이는 거래 작업의 성공적인 실행을 나타내지 않습니다 . 함수 실행 결과에 대한 자세한 설명을 얻으려면 결과 구조의 필드를 분석해야 합니다 .

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

우리는 물론 귀하의 사례를 확인할 것입니다.

그러나 일반적 으로 OrderSend 기능 은 도움말에 따라 작동합니다.

아니요, 불평하는 것이 아닙니다. 단지 이해하고 싶을 뿐입니다. 내가 다른 곳에서 망쳤을 수도 있습니다 ... 결과 구조의 필드는 [그들이 가르친대로 :)] 필요하다고 생각한 곳에서도 분석됩니다.

하지만 내가 알기로는 최소한 터미널이 OrderSend() 함수[결과 구조의 필드 수신 및 처리 포함]를 완전히 처리한 후에야 다음 문으로의 전환이 발생해야 한다고 가정 합니다.

(죄송합니다, 이전 질문에서 오타를 냈습니다: 결과 대신 요청을 지정했습니다)

 
Yedelkin :

챔피언십 첫 날 내 Expert Advisor가 의도한 대로 작동하지 않는 것으로 나타났습니다. 즉, 하나의 보류 주문 대신 여러 단방향 보류 주문을 배치합니다. 다음 구성을 사용합니다.

질문: 터미널은 첫 번째 블록[즉. 요청을 기다리나요] 아니면 서버 에 거래 요청을 보낸 후 즉시 다음 오퍼레이터(블록)로 넘어가나요?

문제를 확인합니다. 보류 중인 주문의 OrderSend()를 설정한 후 OrdersTotal은 항상 그것을 볼 수 없습니다.

OrderSend() 후에 일시 중지를 설정했습니다. 하지만 오늘 그녀는 로봇 챔피언십을 돕지 않았습니다 :)

 

좋은 오후입니다.

나는 단순히 시장에 대한 주문을 여는 프로그램을 만들려고 해요. 저것들. 필요한 방향의 위치가 나타날 때까지 루프에서 기호, 볼륨 및 주문 유형을 보냅니다.

저널 이슈

2012.01.09 16:08:42 거래 '9066293' : 0.0000에서 1.00 EURUSD 즉시 구매 실패 (편차: 103117312) [잘못된 정지]

그렇다면 시장에 공개한다면 왜 시가를 표시해야 합니까? 그리고 나는 발이 필요하지 않습니다.

F9에서는 모든 것이 훌륭하게 열립니다.

내가 엉망인 곳이나 주문을 여는 코드를 알려주십시오.

구조를 채우는 최소값은 다음과 같습니다.

 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 = "";
파일에서 포지션을 열기 위한 Expert Advisor의 전체 테스트.
파일:
 
awkozlov :

좋은 오후입니다.

나는 단순히 시장에 대한 주문을 여는 프로그램을 만들려고 해요. 저것들. 필요한 방향의 위치가 나타날 때까지 루프에서 기호, 볼륨 및 주문 유형을 보냅니다.

그리고 뭔가가 나온다 = Invalid Stops, 그리고 나는 시장가 주문에 대해 어떤 스탑도 필요하지 않습니다. 어디로 가는지도 모르겠고...

파일에서 포지션을 열기 위한 Expert Advisor의 전체 테스트.


모든 작업을 계속

 //+------------------------------------------------------------------+
//|                                                         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 :

모든 작업을 계속


고맙습니다. 공장. 그리고 너무 빨리 위치에 대한 정보를 업데이트할 시간이 없습니다.

그 결과 2건의 주문이 접수되었습니다.

1밀리초의 일시 중지로 처리됩니다!


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

... 위치에 대한 정보를 업데이트할 시간이 없습니다.

그 결과 2건의 주문이 접수되었습니다.

1밀리초의 일시 중지로 처리됩니다!

일시 중지가 만병 통치약이 아님을 명심하십시오.

 
Yedelkin :

일시 중지가 만병 통치약이 아님을 명심하십시오.

KimV의 주문 확인 기능이 도움이 되지 않습니까?
 
-Alexey- :
KimV의 주문 확인 기능이 도움이 되지 않습니까?
아마 이 스레드를 놓쳤을 것입니다. KimV의 주문 확인 기능은 어디에서 찾을 수 있나요?