언급하신 기사도 유용하지만 제 질문은 트레이더가 자신의 터미널에서 주문한 것이 아니라 다른 시장 참여자의 주문에 대한 조치를 읽을 수 있는 가능성을 의미했습니다. 즉, 제가 언급한 필터를 현재 시장 매매에 적용해야 한다는 뜻입니다. 메타트레이더에서 이러한 정보를 제공하나요? 스택 이벤트 핸들러에서 그런 가능성을 보지 못했습니다.
В статье описываются возможности языка MQL5 с точки зрения событийно-ориентированного программирования. Преимущество данного подхода состоит в том, что программа может получать информацию о поэтапном выполнении торговой операции. Приводится пример того, как с помощью обработчика события TradeTransaction можно получать и обрабатывать информацию о совершаемых торговых действиях. Думаю, что такой подход можно смело применять для целей копирования торговых сделок с терминала на терминал.
Rubick: ...하지만 제 질문은 트레이더가 자신의 터미널에서 주문한 것이 아니라 다른 시장 참가자의 주문에 대한 조치를 읽을 수 있는 가능성을 의미했습니다. 즉, 제가 말한 필터는 현재 시장 운영에 적용되어야 합니다. 메타트레이더에서 이러한 정보를 제공합니까? 스택 이벤트 핸들러에서 그런 가능성을 보지 못했습니다.
스택에는 현재 시장에 있는 모든 현재가 주문이 표시됩니다. "현재가 매매" 란 무슨 뜻인가요?
denkir: 스택에는 현재 시장에 나와 있는 모든 지정가 주문이 표시됩니다. "현재 시장가" 라는 용어가 무슨 뜻인가요?
명확하게 설명하지 못했다면 사과드립니다. 좀 더 자세히 설명해드리겠습니다. ENUM_BOOK_TYPE에는 스택에 나열된 주문 유형이 네 가지뿐입니다. 이들은 제한과 시장의 두 가지 범주로 나눌 수 있습니다. 이제 제가 거래를 어떻게 이해하는지 알려드리겠습니다. 여기서 의심스러운 점이 있으니 제가 잘못 이해한 부분이 있으면 바로 잡아주세요. 여기 있습니다. 여기에는 두 가지 가능한 변형이 있습니다.
지정가 주문이 시장가 주문과 만나 거래인 틱이 발생하는 경우입니다. 또는 두 개의 시장가 호가가 만나 거래가 체결되는 경우 - Tick.
두 개의 지정가 입찰이 만나 마지막 입찰이 거래 - 틱으로 이어지는 경우.
제가 고려하고 있는 작업은 거래를 두 가지 범주로 필터링하는 것입니다. 첫 번째는 지정가 입찰에 의해 생성된 거래, 두 번째는 시장가 입찰에 의해 생성된 거래입니다. 이 작업의 용도는 제게 비공개로 해주세요. 이러한 필터의 구현을 1C를 통해 본 적이 있다고 말할 수 있습니다! 나도 그것을 보았을 때 매우 놀랐습니다. 하지만 아이디어는 마음에 들었습니다. 그리고 이제 OnTick 핸들러를 OnBookEvent 핸들러와 도킹해야한다는 것을 이해했습니다. 어떻게 해야 할지 모르겠어서 도움을 요청합니다.
귀하의 지표 인 BookEventProcessor2.mq5를 사용하려고했지만 mql5 메타 편집기에서 컴파일하려고 할 때 다음과 같은 오류가 발생하므로 이러한 작은 문제를 해결하여 이러한 시간에 어떻게 작동하는지 확인할 수 있습니다. 또한 판매 및 구매 제한 주문을 동시에 다른 색상으로 포함 할 수 있는지 알려주시겠습니까?
귀하의 지표 인 BookEventProcessor2.mq5를 사용하려고했지만 mql5 메타 편집기에서 컴파일하려고 할 때 다음과 같은 오류가 발생하므로 이러한 작은 문제를 해결하여 이러한 시간에 어떻게 작동하는지 확인할 수 있습니다. 또한 판매 및 구매 제한 주문을 동시에 다른 색상으로 포함 할 수 있는지 알려주시겠습니까?
감사합니다 ,
Michael
마이클 님, 질문해 주셔서 감사합니다. 우선, BookEventProcessor2는 지표가 아니라 전문가 어드바이저입니다. 소스 파일과 헤더 파일을 하나의 폴더에 넣기만 하면 됩니다. 아래 첨부된 그림을 참조하세요.
색상을 빠르게 변경하려면 CBookBarsPanel::Init() 메서드로 이동하세요:
//+------------------------------------------------------------------+//| 초기화|//+------------------------------------------------------------------+bool CBookBarsPanel::Init(constuint _width,constuint _height)
{
//--- 패널 크기this.m_width=_width;
this.m_height=_height;
//--- 메모리 할당if(this.m_obj_arr.Reserve(this.m_arr_size))
{
//--- 메모리 관리 플래그 this.m_obj_arr.FreeMode(true);
//--- 패널 레이블
CChartObjectRectLabel *ptr_rect_label=new CChartObjectRectLabel;
if(CheckPointer(ptr_rect_label)==POINTER_DYNAMIC)
if(ptr_rect_label.Create(0,"Panel",0,15,15,this.m_width,this.m_height))
if(ptr_rect_label.BorderType(BORDER_RAISED))
if(this.m_obj_arr.Add(ptr_rect_label))
{
//--- 막대 레이블 uint curr_x=this.m_width/5;
uint curr_y=35;
uint mid_idx=this.m_arr_size/2-1;
for(uint idx=0;idx<this.m_arr_size;idx++)
{
color rec_color=(idx<(mid_idx+1))?clrRed:clrGreen;//---
CBookRecord *ptr_record=new CBookRecord;
if(CheckPointer(ptr_record)==POINTER_DYNAMIC)
if(ptr_record.Create(IntegerToString(idx+1),rec_color,curr_x+15,
curr_y,curr_x*3,10))
if(this.m_obj_arr.Add(ptr_record))
curr_y+=(idx==mid_idx)?24:13;
}
}
}
//---returnthis.m_obj_arr.Total()==(this.m_arr_size+1);
}
또는 다음과 같이 메서드 파라미터를 약간 변경할 수도 있습니다:
//+------------------------------------------------------------------+//| 초기화|//+------------------------------------------------------------------+bool CBookBarsPanel::Init(constuint _width,constuint _height, constcolor_buy_clr, constcolor_sell_clr)
{
//--- 패널 크기this.m_width=_width;
this.m_height=_height;
//--- 메모리 할당if(this.m_obj_arr.Reserve(this.m_arr_size))
{
//--- 메모리 관리 플래그 this.m_obj_arr.FreeMode(true);
//--- 패널 레이블
CChartObjectRectLabel *ptr_rect_label=new CChartObjectRectLabel;
if(CheckPointer(ptr_rect_label)==POINTER_DYNAMIC)
if(ptr_rect_label.Create(0,"Panel",0,15,15,this.m_width,this.m_height))
if(ptr_rect_label.BorderType(BORDER_RAISED))
if(this.m_obj_arr.Add(ptr_rect_label))
{
//--- 막대 레이블 uint curr_x=this.m_width/5;
uint curr_y=35;
uint mid_idx=this.m_arr_size/2-1;
for(uint idx=0;idx<this.m_arr_size;idx++)
{
color rec_color=(idx<(mid_idx+1))?_sell_clr:_buy_clr;
//---
CBookRecord *ptr_record=new CBookRecord;
if(CheckPointer(ptr_record)==POINTER_DYNAMIC)
if(ptr_record.Create(IntegerToString(idx+1),rec_color,curr_x+15,
curr_y,curr_x*3,10))
if(this.m_obj_arr.Add(ptr_record))
curr_y+=(idx==mid_idx)?24:13;
}
}
}
//---returnthis.m_obj_arr.Total()==(this.m_arr_size+1);
}
OrderSend() 함수를 사용하여 거래 요청을 보낼 때 일부 작업에는 주문 유형 표시가 필요합니다. 주문 유형은특수 구조체MqlTradeRequest의유형 필드에 지정되며 ENUM_ORDER_TYPE 열거형 값을 사용할 수 있습니다.
ENUM_ORDER_TYPE
식별자
설명
ORDER_TYPE_BUY
시장가 매수 주문
주문 유형_판매
시장가 매도 주문
주문_유형_구매_제한
지정가 주문 매수 제한
주문유형_매도_제한
매도 지정가 주문
주문_유형_매수_스톱
매수 지정가 주문 중지
주문_유형_매도_스톱
매도 지정가 주문 중지
주문_유형_매수_스톱_제한
주문 가격에 도달하면 지정가 가격으로 지정가 매수 주문이 보류됩니다.
주문_유형_판매_스톱_제한
주문 가격에 도달하면 지정가 주문이 지정가 가격으로 지정가 주문이 체결됩니다.
ORDER_TYPE_CLOSE_BY
반대 포지션으로 포지션을 청산하는 주문
나는 Mql5의 터미널에서 볼 수 있습니다, 실험 고문은 ORDER_TYPE_BUY와 ORDER_TYPE_BUY를 표시하지만 내 질문은 당신이 책 이벤트에 대한 트랜잭션을 표시하고 그 색상을 변경하는 방법을 알고 있기 때문에 구매 주문을 볼 수 있지만 큰 상사는 어디에 돈을 넣고 빙산과 특정 가격 수준에서 주문을 안아 보류중인 주문이 있는지입니다 .
Trade Request Structure - Data Structures - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
텀블러가 아니라 시장 거래 처리기가 필요할 가능성이 높습니다.
...하지만 제 질문은 트레이더가 자신의 터미널에서 주문한 것이 아니라 다른 시장 참가자의 주문에 대한 조치를 읽을 수 있는 가능성을 의미했습니다. 즉, 제가 말한 필터는 현재 시장 운영에 적용되어야 합니다. 메타트레이더에서 이러한 정보를 제공합니까? 스택 이벤트 핸들러에서 그런 가능성을 보지 못했습니다.
스택에는 현재 시장에 나와 있는 모든 지정가 주문이 표시됩니다. "현재 시장가" 라는 용어가 무슨 뜻인가요?
명확하게 설명하지 못했다면 사과드립니다. 좀 더 자세히 설명해드리겠습니다. ENUM_BOOK_TYPE에는 스택에 나열된 주문 유형이 네 가지뿐입니다. 이들은 제한과 시장의 두 가지 범주로 나눌 수 있습니다. 이제 제가 거래를 어떻게 이해하는지 알려드리겠습니다. 여기서 의심스러운 점이 있으니 제가 잘못 이해한 부분이 있으면 바로 잡아주세요. 여기 있습니다. 여기에는 두 가지 가능한 변형이 있습니다.
제가 고려하고 있는 작업은 거래를 두 가지 범주로 필터링하는 것입니다. 첫 번째는 지정가 입찰에 의해 생성된 거래, 두 번째는 시장가 입찰에 의해 생성된 거래입니다. 이 작업의 용도는 제게 비공개로 해주세요. 이러한 필터의 구현을 1C를 통해 본 적이 있다고 말할 수 있습니다! 나도 그것을 보았을 때 매우 놀랐습니다. 하지만 아이디어는 마음에 들었습니다. 그리고 이제 OnTick 핸들러를 OnBookEvent 핸들러와 도킹해야한다는 것을 이해했습니다. 어떻게 해야 할지 모르겠어서 도움을 요청합니다.
외환 시장에서 지정가 주문을 볼 수 있는 예약 이벤트를 만들 수 있나요? 단일 유동성 공급자의 경우 당연히 가능합니다.
"모든 매도 주문 중 6번 주문이 7700루블의 가격과 1011랏의 거래량으로 가장 많은 거래량을 기록했습니다. 39번 주문은 가격 7653 Rub, 거래량 534 랏으로 모든 매수 주문 중 거래량이 가장 많았습니다."
주문 #6도 아니고, 주문 #39도 아닙니다. 이러한 레벨은 다음과 같이 액세스할 수 있습니다.
또는
MqlBookArrays는 [0]에서 [ArraySize(bookArray)/2-1]까지의 매도 오퍼와 [ArraySize(bookArray)/2]에서 [ArraySize(bookArray)-1]까지의 매수 오퍼로 구성됩니다. 제가 알기로는 책에는 2n개의 레벨이 있습니다. 그리고 제가 틀리지 않았다면 레벨은 지수 0(0)으로 시작하므로 수학적 모드(가장 높은 볼륨, 가장 빈번한 매도 오퍼) 지수는 5(볼륨 1011, 레벨/가격 7700)이고, 매수 오퍼 모드는 38(볼륨 534, 레벨/가격 7653)입니다.
매수 오퍼 모드는 지지선으로 간주할 수 있습니다. 그리고 매도 오퍼 모드는 저항이 될 수 있습니다.
레벨 수를 어떻게 늘릴 수 있는지 알고 싶습니다...
마이클 님, 질문해 주셔서 감사합니다. 우선, BookEventProcessor2는 지표가 아니라 전문가 어드바이저입니다. 소스 파일과 헤더 파일을 하나의 폴더에 넣기만 하면 됩니다. 아래 첨부된 그림을 참조하세요.
색상을 빠르게 변경하려면 CBookBarsPanel::Init() 메서드로 이동하세요:
또는 다음과 같이 메서드 파라미터를 약간 변경할 수도 있습니다:
안녕 데니스
빠른 답변 주셔서 감사합니다. 하지만이 참조에 대해 이야기하려고했습니다:
OrderSend() 함수를 사용하여 거래 요청을 보낼 때 일부 작업에는 주문 유형 표시가 필요합니다. 주문 유형은특수 구조체MqlTradeRequest의유형 필드에 지정되며 ENUM_ORDER_TYPE 열거형 값을 사용할 수 있습니다.
ENUM_ORDER_TYPE
식별자
설명
ORDER_TYPE_BUY
시장가 매수 주문
주문 유형_판매
시장가 매도 주문
주문_유형_구매_제한
지정가 주문 매수 제한
주문유형_매도_제한
매도 지정가 주문
주문_유형_매수_스톱
매수 지정가 주문 중지
주문_유형_매도_스톱
매도 지정가 주문 중지
주문_유형_매수_스톱_제한
주문 가격에 도달하면 지정가 가격으로 지정가 매수 주문이 보류됩니다.
주문_유형_판매_스톱_제한
주문 가격에 도달하면 지정가 주문이 지정가 가격으로 지정가 주문이 체결됩니다.
ORDER_TYPE_CLOSE_BY
반대 포지션으로 포지션을 청산하는 주문
나는 Mql5의 터미널에서 볼 수 있습니다, 실험 고문은 ORDER_TYPE_BUY와 ORDER_TYPE_BUY를 표시하지만 내 질문은 당신이 책 이벤트에 대한 트랜잭션을 표시하고 그 색상을 변경하는 방법을 알고 있기 때문에 구매 주문을 볼 수 있지만 큰 상사는 어디에 돈을 넣고 빙산과 특정 가격 수준에서 주문을 안아 보류중인 주문이 있는지입니다 .
그게 가능한가요 ???
최고의 안부 마이클.
rder_type_sell_limit
지정가 주문 매도 제한
주문_유형_매수_스톱
지정가 주문 매수 중지