시장가 주문을 올바르게 여는 방법은 무엇입니까? - 페이지 2

 
Gennady Mazur :
그러나 표준 기능은 주문 실행, 채우기를 지원합니까? 이전에 CiTrade를 사용하여 열었기 때문에 주문이 실행되기를 원하지 않는 거래소에 도착할 때까지. 충전량을 결정하는 것은 불가능했습니다.

필요한 것을 설치하십시오.
 
Gennady Mazur :
예, 그리고 이 포럼의 전문가인 이전 주제에서 이 정보는 항상 ... 거의 즉시 제공된다고 확신했습니다. 그리고 티켓이 서버에서 긍정적인 응답으로 발행되지 않으면 주문이 이루어지지 않았습니다. 일어나다
무슨 말도 안되는 소리?

또한 OnTradeTransaction 이벤트를 사용해 보십시오. 어딘가에 모든 거래 작업에 대한 도청의 예가 있습니다. 내가 틀리지 않았다면 Rosh가 설명했습니다. 바라보다...

일반적으로 좋은 톤은 거래 작업 사이에 일시 중지를 삽입하는 것입니다 ;-)
 
Sergey Chalyshev :

바로 지금, 그리고 여기에서 전문가들이 가르칠 것입니다))

귀하의 경험에 비추어 볼 때 여기에서 그러한 질문을 하는 것은 부적절합니다.

Sergey, 예, 충분한 경험이 있습니다 ... 그러나 배우기에 너무 늦은 것은 없습니다 ... 이전에 뭔가를 잘못 이해했거나 새로운 것을 소개했을 수도 있습니다 ... 묻는 것은 어렵지 않습니다. 아마도 다른 사람이 도움이 될 것입니다. ... 또는 이미 일종의 prablochkoy에 직면했을 수 있으며 이제 모든 것이 5 분 안에 결정됩니다.
 
Dennis Kirichenko :
무슨 말도 안되는 소리?

또한 OnTradeTransaction 이벤트를 사용해 보십시오. 어딘가에 모든 거래 작업에 대한 도청의 예가 있습니다. 내가 틀리지 않았다면 Rosh가 설명했습니다. 바라보다...
수신 예제는 OrderSendAsync 에 있어야 합니다.
 
Vladimir Karputov :

필요한 것을 설치하십시오.
글쎄 .... 질문에 의미가 있음이 밝혀졌습니다 .... 감사합니다
 
Dennis Kirichenko :
무슨 말도 안되는 소리?

또한 OnTradeTransaction 이벤트를 사용해 보십시오. 어딘가에 모든 거래 작업에 대한 도청의 예가 있습니다. 내가 틀리지 않았다면 Rosh가 설명했습니다. 바라보다...

일반적으로 좋은 톤은 거래 작업 사이에 일시 중지를 삽입하는 것입니다 ;-)
나는 이미 최대 절전 모드에 대해 생각했지만 이것은 최적의 솔루션이 아닙니다 ....
 
Gennady Mazur :
나는 이미 최대 절전 모드에 대해 생각했지만 이것은 최적의 솔루션이 아닙니다 ....
최대 절전 모드는 이후가 아니라 거래 작업 사이에 필요합니다. 그렇지 않으면 서버(브로커)가 트레이더의 활동을 좋아하지 않을 것입니다 :-))

가장 좋은 방법은 거래가 올 때까지 기다리는 것입니다. 트랜잭션 측면에서 이것은 "TRADE_TRANSACTION_DEAL_ADD"입니다.

Vladimir Karputov는 이것에 대해 여러 번 썼습니다 . 스레드도 찾아보세요...

여기에서 제 오디션을 찾았습니다.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
 
Dennis Kirichenko :

일반적으로 좋은 톤은 거래 작업 사이에 일시 중지를 삽입하는 것입니다 ;-)

당신의 미소가 무엇을 의미하는지 이해하지 못하셨나요?

당신에게서 그런 소식을 들을 줄은 몰랐습니다. 무슨 일시 중지 또는 농담입니까?

 
Dennis Kirichenko :
가장 좋은 방법은 거래가 올 때까지 기다리는 것입니다. 트랜잭션 측면에서 이것은 "TRADE_TRANSACTION_DEAL_ADD"입니다.

여기에서 제 오디션을 찾았습니다.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
공포((
 
Dennis Kirichenko :
가장 좋은 방법은 거래가 올 때까지 기다리는 것입니다. 트랜잭션 측면에서 이것은 "TRADE_TRANSACTION_DEAL_ADD"입니다.

여기에서 제 오디션을 찾았습니다.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
네, 아주 유용한 정보입니다... 감사합니다...
그리고 당신이 듣지 않고 잠을 자지 않는다면, 명령의 긍정적인 결과와 함께 다른 방법이 있습니까? 하지만 자리가 없더라도 고문에게 우리가 기다리고 있는 것을 알릴 수 있습니까?