MQL4 EA에서 코드를 작성하려는 모든 신규 트레이더는 시장가 주문이든 지정가 주문이든 지정가 주문이든 상관없이 OrderSend() 함수를 사용하여 주문하는 방법을 알아야 합니다. MQL4 OrderSend 기능 문서에서 주문을 위해 EA를 프로그래밍하는 방법을 알아보세요.
OrderSend() 함수의 구문은 다음과 같습니다:
int OrderSend (string Symbol, int Type, double Lots, double Price, int Slippage, double StopLoss, double TakeProfit, string Comment = NULL, int MagicNumber = 0, datetime Expiration = 0, col Arrow = CLR_NONE);
쉽게 참조할 수 있도록 위 매개변수에 대한 설명은 다음 표에서 확인할 수 있습니다.
매개변수 | 설명 |
---|---|
기호 | EURUSD와 같은 기호 거래. Symbol()은 통화 차트의 쌍을 나타냅니다 |
유형 | 주문 유형: 매수 또는 매도(시장 가격, 손절매 또는 제한 가격일 수 있음). 각 유형은 정수 값에 해당합니다. < p>OP_BUY – 시장가 주문 매수(정수 값 0)OP_SELL – 시장가 주문 매도(정수 값 1) OP_BUYSTOP – 중지 주문 매수(정수 값 2) OP_SELLSTOP – 매도 중지 주문(정수 값 3) OP_BUYLIMIT – 매수 지정가 주문(정수 값 4) OP_SELLLIMIT – 매도 지정가 주문(정수 값 4) 정수 값 5 ) |
많은 | < 스팬 jsaction="agoMJf:PFBcW;MZfLnc:P7O7bd;nt4Alf:pvnm0e,pfE8Hb,PFBcW;B01qod:dJXsye;H1e5u:iXtTIf;lYIUJf:hij5Wb;bmeZHc:iURhpf;Oxj3Xe:qAKMYb,yaf12 d" jsname=" txFAF" 클래스= "jCAhz ChMk0b" jscontroller="Gn4SMb">거래 로트 크기 . 브로커가 마이크로 랏을 지원하는 경우 마이크로 랏(0.1) 또는 마이크로 랏(0.01)을 지정할 수 있습니다. |
Price | 청구 가격입니다. 일반적으로 Ask에서는 시장가 매수 주문, Bid에서는 시장가 매도 주문입니다. 보류 주문의 경우 현재 가격보다 높거나 낮은 유효한 가격이 적용됩니다. |
미끄러짐 | 주문 통과에 대한 최대 슬리피지 포인트입니다. |
StopLoss | 손실 가격을 중지하고 시가보다 낮게 매수하고 시가보다 높게 매도합니다. 0으로 설정하면 정지 손실이 사용되지 않습니다. |
TakeProfit | 이익 가격을 취하고 시가보다 높게 매수하고 시가보다 낮게 매도합니다. 0으로 설정하면 이익실현이 사용되지 않습니다. |
댓글 | 주문 설명으로 사용될 선택적 문자열입니다. 댓글은 터미널 창의 거래 탭 아래에 표시됩니다. 터미널에서 해당 거래를 보려면 열려 있거나 닫혀 있는 거래를 마우스 오른쪽 버튼으로 클릭하고 열리는 상자의 댓글 옆에 확인 표시를 하면 됩니다. 주문 식별자로 사용됩니다. |
MagicNumber | 이는 특정 EA의 주문을 식별하는 선택적 정수 값입니다. 사용을 권장합니다. |
만료 | 보류 주문의 선택적 만료 시간입니다. |
화살표 | 차트에 그려질 화살표의 색상을 선택하여 시가와 시간을 나타냅니다. 색상을 지정하지 않으면 화살표가 그려지지 않습니다. |
OrderSend() 함수는 주문한 티켓 번호를 반환합니다("티켓"은 주문 일련번호의 고유 번호). 나중에 사용할 수 있도록 이러한 주문 티켓을 정적 변수에 저장할 수 있습니다.
주문이 이루어지지 않은 경우 오류 조건으로 인해 반환 값은 -1이 됩니다. 이를 통해 오류를 분석하고 오류 코드에 따라 적절한 조치를 취할 수 있습니다. 거래 요청 거부 이유에 대한 정보를 얻으려면 GetLastError() 함수를 사용해야 합니다.
다음은 시장 매수 주문의 예입니다:
OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, Bid-StopLoss *Point, Bid+ TakeProfit *Point, “EAName”, MagicNumber, 0, Blue)
이것은 시장 매도 주문의 예입니다:
< br/ >
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask+StopLoss *Point, Ask-TakeProfit*Point, “EAName”, MagicNumber, 0, Blue)
symbol() 함수는 현재 차트 거래 종류를 반환합니다. 대부분의 경우 현재 차트 거래 종류에 주문을 합니다. OP_BUY는 시장가 매수 주문을 의미하며, OP_SELL은 시장가 매도 주문을 의미합니다. Ask는 현재 기호에 대해 알려진 최신 판매자 가격(매도 가격)을 저장하는 MLQ의 사전 정의된 변수입니다.
우리는 일반적으로 슬리피지 매개변수를 설정하기 위해 외부 변수를 사용합니다(예: extern 슬리피지 = 3). 슬리피지 매개변수(및 해당 변수)는 가격이 미끄러질 수 있는 핍 수를 나타냅니다. 즉, 주문이 통과되기 위한 최대 스프레드를 나타냅니다. 적절한 슬리피지 양을 선택하는 것은 좋은 균형이 될 수 있습니다. 좋은 가격을 제공할 수 있을 만큼 작은 핍 값을 선택하는 동시에 재호가를 받지 않고 놓치지 않을 만큼 큰 핍 값을 선택하고 싶습니다. 가격 슬리피지를 0으로 설정하면 자주 재호가가 발생하여 가격을 놓칠 가능성이 높습니다. 3이나 4로 설정하면 채워질 확률이 높아집니다.
OB_BUY에 대한 손절매 및 이익실현 규칙 정보:
질문 – 손절매 = 손절매를 설정합니다. (-) 매도호가 이하로
매도 + TakeProfit = TakeProfit을 (+) 매도호가 이상으로 설정
< /p>
OB_SELL에 대한 정지 손실 및 이익 규칙 정보:
입찰 + 정지 손실 = 정지 손실을 (+) 입찰보다 높게 설정합니다.
입찰 – TakeProfit = TakeProfit을 (-) 입찰 가격 아래로 설정합니다.
< /p>
For 위의 규칙에서는 외부 변수를 사용하여 손절매를 설정하고 이익을 얻습니다. 예:
외부 int 손절매 = 50;
External int TakeProfit = 100;
위 예에서 정지손실은 매수 시장 주문보다 50핍 아래에 있고 이익실현은 100핍에 위치합니다. 위에. 그러나 최근 5자리 브로커가 추가되면서 아래 참고사항과 같이 손절매 및 이익실현 포인트 계산 방식에 문제가 발생했습니다.
위 매수 및 매도 주문 예시의 comment 매개변수(OrderSend 함수의 8번째 매개변수)에 "EAName"을 입력했습니다. , 이 필드에 EA 이름을 입력할 수 있습니다. 따라서 이는 귀하의 EA를 다른 EA와 차별화하는 방법입니다. 외부 MT4 플랫폼에서 개시 및 청산 주문을 표시하는 터미널을 보면 마지막 필드에 설명 필드가 표시되는 것을 볼 수 있습니다. 표시되지 않으면 터미널을 마우스 오른쪽 버튼으로 클릭하고 댓글에 확인 표시를 할 수 있습니다. 동일한 계정에서 여러 EA를 사용하는 경우 설명 필드에 각 EA에 서로 다른 이름을 지정해야 합니다. 그러면 모두가 거래를 생성하기 시작할 때 터미널 필드의 설명을 보고 어떤 EA가 어떤 작업을 수행했는지 구분할 수 있습니다.
설명 필드는 EA를 시각적으로 구별하는 데 도움이 될 수 있지만 자체 매개변수(OrderSend 함수의 9번째 매개변수)에 대해서는 배포된 매직 넘버 프로그램이 EA를 서로 구별하는 데 도움이 됩니다. 이 매개변수에는 "1234"와 같은 정수 값이 있습니다. 대신 "extern double MagicNumber = 1234"를 구성하고 변수 MagicNumber를 이 매개변수에 넣는 것이 좋습니다. 외부 변수를 사용하면 매직 넘버를 쉽게 수정할 수 있습니다. 기본적으로 매직 넘버는 전문 고문이 개설한 주문과 다른 전문 고문이 개설한 주문을 구별하기 위해 프로그램 주문에 할당하는 고유 번호입니다.