시장가 주문을 종료하면 현재 시장 가격으로 거래를 종료합니다. 이는 매수 주문의 현재 입찰가와 매도 주문의 현재 요청가가 됩니다. 전체 MQL4 OrderClose 함수 문서에서 종료 조건이 충족될 때 미결 주문을 마감하도록 EA를 프로그래밍하는 방법을 알아보세요.
시장 주문을 종료하기 위해 사용되는 코드는 OrderClose() 함수이며 구문은 다음과 같습니다.
bool OrderClose(int Ticket, double Lots, double Price, int Slippage, color Arrow);
다음 표에서는 각 항목에 대해 설명합니다. 다음 매개변수 중 a:
범위 | 설명 |
---|---|
티켓< /strong> | 시장 마감 주문의 티켓 번호 |
랏 | 포지션을 청산할 랏 수입니다. |
가격 | 거래를 종료하기 위한 우선 가격입니다. |
미끄러짐 | 종가에 허용되는 스프레드입니다. |
색상 | 닫힌 화살표의 색상 상수입니다. |
다음 예에서는 슬레이브를 닫습니다. MACD의 차용 시장가 주문 예시:
for(cnt=0; cnt<total ;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;< br/>if(OrderType()<=OP_SELL && // 오픈 포지션 확인
OrderSymbol()==Symbol()) // 심볼 확인
{
if (OrderType()==OP_BUY) // 롱 포지션 오픈
{
// 청산해야 할까요?
if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 포지션 닫기
return(0) ; / / 종료
}
여기서 닫는 코드는 for 연산자로 시작하며, 코드 블록은 닫는 조건을 계산하기 위해 계속 반복됩니다.
OrderSelect() 함수는 열려 있는 주문 풀을 확인하고 일치하는 거래 기호 및 주문 유형(OP_BUY 또는 OP_SELL)을 찾는 데 사용됩니다.
이 코드 블록의 마지막이자 가장 중요한 조건은 출구 전략 조건을 관찰하는 것입니다. 위 예에서는 MACD 출구 조건입니다.
개설 품종과 주문 유형이 결정되고 MACD 청산 조건이 충족되면 OrderClose() 함수를 배포할 수 있으며 해당 매개변수가 결정됩니다. 위의 표에 나와 있습니다.
일련의 조건에 따라 주문을 마감해야 할 때마다 Start() 함수에서 쉽게 호출할 수 있도록 사용자 정의 마감 함수를 사용하는 것이 유용할 수 있습니다. 사용자 정의 마감 기능은 현재 진행 중인 주문 풀을 확인하여 주문 유형과 매직 넘버를 식별해야 합니다.
void close(int type){
if(OrdersTotal()>0){
for(Counter=OrdersTotal()-1; 카운터>=0;카운터–){
OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);
if(type==OP_BUY && OrderType()==OP_BUY){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits ), vSlippage);
} }
if(type==OP_SELL && OrderType()==OP_SELL){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates(); OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),vSlippage);
}}
}}}
if (OType==0 && CloseBuy==true)
{
close (OP_BUY); // 구매 닫기
우리는 사용자 정의 닫기 함수의 이름으로 close()를 선택하고 이를 호출하고 싶을 때마다 위의 사용 예와 같이 닫기 조건 뒤에 단어를 삽입하기만 하면 됩니다.
두 번째 줄은 총 오픈 포지션이 0보다 큰 경우 기능을 시작합니다. 세 번째 라인은 현재 열려 있는 주문 풀을 확인하여 계산합니다. 네 번째 줄에서는 OrderSelect() 함수를 호출하여 추가 처리를 위해 계산된 주문을 선택합니다.
우리는 사용자 정의 닫기 함수에 대해 괄호() 안의 변수 int 유형인 하나의 매개변수만 구성했습니다. 이 매개변수는 주문 유형의 식별자가 됩니다. 사용자 정의 함수에서 유형이 OP_BUY 또는 OP_SELL과 동일(==)함을 나타내므로 close()를 호출할 때 다음과 같이 close()가 close(OP_BUY)인지 close(OP_SELL)인지 나타내야 합니다. 위의 사용 예. 함수에서 type==OP_BUY 및 OrderType==OP_BUY를 기호(&&)와 연관시킵니다.
또한 6행에서 했던 것처럼 올바른 코드와 매직 넘버가 있는 구매 주문을 선택했는지 확인하고 싶습니다.
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
Refresh Rates()는 통화쌍의 환율을 새로 고쳐 최신 환율로 채워지는 기능입니다.
마지막으로 OrderClose() 함수를 배포합니다. 해당 함수의 매개변수는 위 표에서 찾을 수 있습니다.