개요 | |
MQL5 의 주문함수. - 1개의 함수 OrderSend 에서 인자를 달리하여 진입, 정정, 취소, 청산이 이뤄진다. 비교 : MQL4의 주문함수 는 진입, 정정, 취소, 청산 목적의 함수들이 개별적으로 정의되어있다. 함수 OrderSend : 본 함수 호출하면 브로커 서버의 응답을 받아야 리턴되는 함수. 함수 OrderSendAsync : 브로커 서버 응답대기없이 함수 호출 즉시 리턴된다. 함수 OrderSelect : 주문 선택하는 함수. | |
|
함수 OrderSend | ||
- 주문의 진입, 수정, 취소, 청산. 함수정의.
반환값.함수 실행성공시 : true - 실행성공의 의미는 거래업체 서버에서 정상적으로 주문 "접수" 했다는 의미. <- 거래(=체결) 되었다는 의미 아님. 함수 실행 실패시 : false - OrderSend fail 시 다양한 원인및 해결책 : http://igotit.tistory.com/1833
- 실패의 사유는 아래 함수인자의 구조체 MqlTradeResult 로 제공됨. 함수인자.request - 구조체 MqlTradeRequest 변수의 포인터. - 구조체 MqlTradeRequest 아래 박스글에 별도 정리. result - 구조체 MqlTradeResult 타입의 포인터. OrderSend 반환값이 True 일때 주문 처리의 결과 정보들. - 구조체 MqlTradeResult 아래 박스글에 별도 정리. | ||
|
구조체 MqlTradeRequest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
상기 함수 OrderSend 인자로 사용되는 구조체 MqlTradeRequest 상세 정리. 구조체 MqlTradeRequest 타입 정의.
구조체 MqlTradeRequest 멤버변수 상세. action - 주문 타입. 아래 값들 중 1개 지정. ENUM_TRADE_REQUEST_ACTIONS
magic 사용자 정의 주문 아이디. 활용은 개발자 목적에 맞게 임의로 숫자 할당하면됨. - 주용도 : 동일 종목에 2개 이상의 다른 EA 를 적용하여 주문하는 경우 어떤 EA 에서의 주문인지 식별 용도 . order 신규진입주문 아이디. 지정가 신규진입주문 수정주문시 주로 활용됨. symbol 주문 종목. 주문수정이나 청산에서는 필요없음. volume 주문수량. 랏단위. price 주문가격. stoplimit Limit 지정가 주문에서 가격이 stoplimit 가 된 경우 주문시행됨. sl 손절가격. tp 익절가격. deviation 최대 가격차 포인트 단위. MQL4 에서의 slippage 에 해당하는것. type 주문타입. 아래 값들중 1개 지정.
type_filling 주문 시행 타입. 아래 값 중 1개 지정.
type_time 주문 expiration 타입. 아래 값 중 1개 지정.
expiration 주문 expiration 시간. 앞의 type_time 에서 지정한 형식의 시간을 기록해야함. comment 주문 관련 커멘트. 사용자 필요에 맞게 아무거나 기록해도됨. position 포지션의 티켓(고유아이디) . 포지션 수정시 혹은 청산시 필수 기록되어야 함. 변수 order 의 티켓(고유아이디)과 동일하다. position_by 반대 포지션의 티켓(고유아이디). 어떤 포지션을 동일종목의 반대 포지션으로 청산하려고 할 때의 필요함. 주문 타입별 필수 구조체 멤버변수.Request Execution
This is a trade order to open a position in the Request Execution mode (trade upon requested prices). It requires to specify the following 9 fields:
Also it is possible to specify the "magic" and "comment" field values. Instant Execution
This is a trade order to open a position in the Instant Execution mode (trade by current prices). It requires specification of the following 9 fields:
Also it is possible to specify the "magic" and "comment" field values.
Market Execution
This is a trade order to open a position in the Market Execution mode. It requires to specify the following 5 fields:
Also it is possible to specify the "magic" and "comment" field values.
Exchange Execution
This is a trade order to open a position in the Exchange Execution mode. It requires to specify the following 5 fields:
Also it is possible to specify the "magic" and "comment" field values. SL & TP Modification Trade order to modify the StopLoss and/or TakeProfit price levels. It requires to specify the following 4 fields:
Pending Order Trade order to place a pending order. It requires to specify the following 11 fields:
Also it is possible to specify the "magic" and "comment" field values. Modify Pending Order Trade order to modify the prices of a pending order. It requires to specify the following 7 fields:
Delete Pending Order Trade order to delete a pending order. It requires to specify the following 2 fields:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
구조체 MqlTradeResult | ||||||||||||||||||||||||
구조체 MqlTradeResult 타입 정의.
구조체 멤버변수.
| ||||||||||||||||||||||||
|
함수 OrderSendAsync | |
- 비동기함수 라는 점외에는 OrderSend 와 동일. | |
함수 OrderSelect | |
|
///1815
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
메타트레이더 5. MQL5. 클래스 CTrade. 주문처리. (2) | 2018.08.25 |
---|---|
메타트레이더 5. MQL5 Storage. 원격저장소. 버전 관리. (0) | 2018.08.25 |
메타트레이더 5. MQL5.Code Example. OnChartEvent. mouse, key. (0) | 2018.08.24 |
메타트레이더 5. MQL5 주문함수. (9) | 2018.08.23 |
메타트레이더 5. MQL5 문자열 출력함수들. (0) | 2018.08.23 |
메타트레이더 5. MetaEditor. MQL5 EA 생성. (0) | 2018.08.19 |
포지션 티켓은 각 주문별로 갖는 건가요? 아니면 포지션 별로 가지는 건가요? 어떤 외국 유튜버가 mql5 설명 잘해놔서 기본 틀은 잡았는데요. 저는 주문 하나하나를 세세하게 관리하고 싶은데 포지션 티켓 가져오는 걸로 되는 건가요? 아님 따로 주문 티켓 가져오는 법이 있나요?
저는 주로 후입 선출 식의 청산을 하고싶어서요..
답글
포지션 티겟은 포지션별 로 가집니다. 포지션 여러개인 경우 식별 수단으로 사용됩니다. 그리고 MT5 에서 주문 은 위 함수보다는 CTrade 라는 클래스를 이용하는게 많이 편리 합니다.
CTRade 상세 : https://igotit.tistory.com/1827,
CTrade 활용한 포지션 청산 코딩 예 : https://igotit.tistory.com/1832
매수 포지션도 같은방향으로
나눠서 들어가면
각각을 식별할수가 있나요?
답글
네 매수포지션 여러 개 개별적으로 식별됩니다. 메타트레이더의 하단 Toolbox 에 보이는 Trade 탭에 보이는 개별적인 포지션들을 MQL 코드내에서 각각의 포지션에 접근 가능합니다.
같은 종목을,
ea2개 동시에 돌릴 수 있나요?
매수 포지션 진입횟수 세야하고
매도 포지션 진입횟수 세야하는데
지금 제가 아는게
orderstotal()
이거 밖에 없거든요.
그래서 그냥 저거 이용해서 진입횟수 세려면
매수 매도가 섞여있으면 힘들거 같아서
그냥따로 만들고 따로 돌리려는데 가능한가요?
답글
챠트 1개당 1개의 ea만 배치 가능하며, 동일종목 챠트를 2개 이상 실행시킨상태에서 각각의 챠트에 다른 ea 를 배치시키면 동일종목에 서로다른 ea 가 실행됩니다.
즉, 같은 종목에 다른 ea 2개 이상 실행가능합니다.
진입회수 의미 가 어떤 종목의 매수 혹은 매도의 실제 거래된 "보유" 건별 보유 수량 의미 아닌가요? 이 경우에는 주문정보 가 아닌 포지션 정보를 이용해야 합니다.
https://igotit.tistory.com/2132 의 Position 관련 함수들 참조하면됩니다.
포지션 ticket으로 진입횟수 관리하고
오더 ticket으로 부분 청산 관리하면 되는건가요?
답글
네 포지션정보로 실제 거래되어 보유중인 포지션 건수 및 각 포지션건별 종목 보유 수량, 평균체결가등의 정보가 확보되고, 주문한것들 중에서 미체결 수량등을 확인하려면 order 정보를 참조 해야 합니다.
통상, 시장가 주문이 아닌 경우 포지션과 주문 수량 관리 코드 복잡도가 증가 하다보니, 처음 작업시에는 주문시 시장가 주문으로 하면 미체결 주문이 발생하지 않기때문에 주문 포지션 관리부분 코드가 현격히 단순화 됩니다.
코드골격 1차 완성 이후 세밀한 부분 로직 추가 하는 방식을 추천합니다~
포지션 닫을때 스탑 주문을 걸고 싶은데요
order type close by
쓰고
오픈한 포지션 티켓을 주면 되나요??
그리고 그 스탑 주문을 수정할때
다시 동일한 포지션 티켓을 주면 되나요?
아니면 오더를 했을 당시의 오더 티켓을 추적해야 하나요?
답글