mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 11

 
레오59 :
고맙습니다!
"주문은 거래 를 수행하는 주문"이므로 보류 중인 주문만 "활성 주문"으로 분류될 수 있으며 "포지션 - 매수 및 매도"는 거래를 수행하라는 지시가 아닙니다. 아니면 내가 뭔가를 놓치고 있습니까?

러시아어로 번역된 주문은 주문입니다. 주문(주문)을 하면 8 중 하나가 될 수 있습니다.

1, 2, 3, 4 - 매수-정지, 매도-정지, 매수 제한 및 매도 제한 - 트리거 후 포지션이 나타납니다.

5, 6 - 매수 또는 매도 - 더 이상 주문이 아닙니다.

7, 8 - 손절매 및 이익실현 - 주문, 시장 퇴출을 위한 DC 주문

1, 2, 3, 4의 경우 - 대기 중인 주문

5, 6-시장을 장악하기 위해), 즉 전쟁에서와 같이 시장에서 특정 위치를 차지하는 모든 사람은 명령 (명령) 사령관이 보낸 전선에서 자신의 위치를 가집니다.

 
레오59 :
고맙습니다!
"주문은 거래 를 수행하는 주문"이므로 보류 중인 주문만 "활성 주문"으로 분류될 수 있으며 "포지션 - 매수 및 매도"는 거래를 수행하라는 지시가 아닙니다. 아니면 내가 뭔가를 놓치고 있습니까?
링크에서 첫 번째 섹션 "거래 조건" 도 볼 수 있습니다.
 
비탈리 무지첸코 :

5, 6 - 매수 또는 매도 - 더 이상 주문이 아닙니다.

아래 코드는 유효한 주문임을 보여줍니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2017.02.25 16:30

// Триггер срабатывания SL/TP - работает только на демо/реале (не в тестере).
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
   if ((Trans.type == TRADE_TRANSACTION_ORDER_ADD ) &&
       PositionSelectByTicket (Trans.position) && OrderSelect (Trans.order) &&
       ( PositionGetInteger ( POSITION_TYPE ) == 1 - OrderGetInteger ( ORDER_TYPE )))
  {
     const double Price = OrderGetDouble ( ORDER_PRICE_OPEN );
    
     if (Price == PositionGetDouble ( POSITION_TP ))
       Print ( "Position #" + ( string )Trans.position + " - triggered TP." );    
     else if (Price == PositionGetDouble ( POSITION_SL ))
       Print ( "Position #" + ( string )Trans.position + " - triggered SL." );    
  }
}
 
fxsaber :
활성 주문은 TP/SL 및 MarginCall 주문을 제외하고 실행 또는 취소가 보류 중인 거래 주문 입니다. 유효한 주문은 BUY 및 SELL일 수 있습니다.
고맙습니다!
내가 이해하는 바에 따르면 "활성 주문"이라는 용어에는 BUY 및/또는 SELL 포지션과 보류 중인 주문(브로커가 수락함)이 포함됩니다.
내가 open: LongShort 포지션을 가지고 있고 Buy Limit Sell Stop 도 설정하면 OrdersTotal ()은 값 =4를 반환합니다. 그래서?
 
레오59 :
고맙습니다!
내가 이해하는 바에 따르면 "활성 주문"이라는 용어에는 BUY 및/또는 SELL 포지션과 보류 중인 주문(브로커가 수락함)이 포함됩니다.
내가 open: LongShort 포지션을 가지고 있고 Buy Limit Sell Stop 도 설정하면 OrdersTotal ()은 값 =4를 반환합니다. 그래서?
아니요. OrdersTotal ()은 2(구매 제한 및 판매 중지 보류 주문 )를 반환하고 PositionsTotal()도 2(구매 및 판매 위치)를 반환합니다.
 
블라디미르 카르푸토프 :
아니요. OrdersTotal ()은 2(구매 제한 및 판매 중지 보류 주문 )를 반환하고 PositionsTotal()도 2(구매 및 판매 위치)를 반환합니다.
)) 이제 멋지다!!!! OrdersTotal () 함수는 여전히 무엇을 반환합니까?
 
레오59 :
)) 이제 멋지다!!!! OrdersTotal () 함수는 여전히 무엇을 반환합니까?
다음과 같은 용어를 사용할 수 있습니다. 포지션은 이미 매수/매도되었거나 수동으로 또는 보류 중인 주문 이 트리거된 것입니다. 그리고 주문은 가격이 특정 수준에 도달하면 포지션을 여는 보류 중인 주문입니다.
 
레오59 :
)) 이제 멋지다!!!! OrdersTotal () 함수는 여전히 무엇을 반환합니까?

마지막으로 이미 읽기를 도와주세요 :).

배우다:

//+------------------------------------------------------------------+
//|                                    OrdersTotalPositionsTotal.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
CPositionInfo  m_position;                   // trade position object
COrderInfo     m_order;                       // pending orders object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   int total= 0 ;
   for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
       if (m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
        {
         //if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
         Print ( "position " ,total, ": " ,m_position. Symbol (), " " , EnumToString (m_position.PositionType()),
               " " , DoubleToString (m_position. Volume (), 2 ), " " , DoubleToString (m_position.PriceOpen(), 8 ));
         total++;
        }
   total= 0 ;
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of current orders
       if (m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
        {
         //if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
         Print ( "pending order " ,total, ": " ,m_order. Symbol (), " " , EnumToString (m_order. OrderType ()),
               " " , DoubleToString (m_order.VolumeInitial(), 2 ), " " , DoubleToString (m_order.PriceOpen(), 8 ));
         total++;
        }
  }
//+------------------------------------------------------------------+

"거래" 탭의 상태는 다음과 같습니다.

거래

보시다시피 2개의 포지션(EURUSD 매수 0.03 및 USDCAD 매수 0.02)이 열려 있고 3개의 보류 주문 (USDJPY 매수 한도, USDJPY 매도 한도 및 EURUSD 매수 한도)이 있습니다.

및 스크립트 출력:

2017.02 . 28 20 : 14 : 43.804 OrdersTotalPositionsTotal (EURUSD,H1)   position 0 : USDCAD POSITION_TYPE_BUY 0.02 1.32797000
2017.02 . 28 20 : 14 : 43.804 OrdersTotalPositionsTotal (EURUSD,H1)   position 1 : EURUSD POSITION_TYPE_BUY 0.03 1.06088000
2017.02 . 28 20 : 14 : 43.804 OrdersTotalPositionsTotal (EURUSD,H1)   pending order 0 : EURUSD ORDER_TYPE_BUY_LIMIT 0.03 1.05879000
2017.02 . 28 20 : 14 : 43.804 OrdersTotalPositionsTotal (EURUSD,H1)   pending order 1 : USDJPY ORDER_TYPE_SELL_LIMIT 0.01 112.71100000
2017.02 . 28 20 : 14 : 43.804 OrdersTotalPositionsTotal (EURUSD,H1)   pending order 2 : USDJPY ORDER_TYPE_BUY_LIMIT 0.01 111.74500000
 
막심 크롤렌코 :
다음과 같은 용어를 사용할 수 있습니다. 포지션은 이미 매수/매도되었거나 수동으로 또는 보류 중인 주문 이 트리거된 것입니다. 그리고 주문은 가격이 특정 수준에 도달하면 포지션을 여는 보류 중인 주문입니다.
모든 것이 오랫동안 받아들여져 왔으며 문서를 작성하기 전에 Sergey Kovalev의 자습서를 읽는 것이 불필요하지 않을 것입니다(MQL4에 내장됨).


다음은 시장 및 보류 중인 주문이 분석되는 블록을 구축하는 방법입니다.

   for ( int i= 1 ; i<= OrdersTotal (); i++)       //Цикл по всем ордерам,..
     {                                         //отражённым в терминале
       if ( OrderSelect (i- 1 , SELECT_BY_POS )== true ) //Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                         //Конец тела цикла

순환 연산자의 머리글은 초기값 i=1을 포함하고 순환 종료 조건은 표현식 i<=OrdersTotal()입니다. OrdersTotal() 함수는 시장 및 보류 중인 주문의 총 수를 반환합니다. 거래 탭의 터미널에 반영된 주문. 따라서 사이클은 거래의 주문 수만큼 반복됩니다.

 
레오59 :
모든 것이 오랫동안 받아들여져 왔으며 문서를 작성하기 전에 Sergey Kovalev의 자습서를 읽는 것이 불필요하지 않을 것입니다(MQL4에 내장됨).


다음은 시장 및 보류 중인 주문이 분석되는 블록을 구축하는 방법입니다.

순환 연산자의 머리글은 초기값 i=1을 포함하고 순환 종료 조건은 표현식 i<=OrdersTotal()입니다. OrdersTotal() 함수는 시장 및 보류 중인 주문의 총 수를 반환합니다. 거래 탭의 터미널에 반영된 주문. 따라서 사이클은 거래의 주문 수만큼 반복됩니다.

어닐링 할 필요가 없습니다)

이것은 MT4 코드이며 그 안에 주문과 위치의 구분이 없습니다. 모든 것이 함께 섞여 있습니다.

사유: