MAGIC NUMBER를 사용한 ORDER CLOSE 오류 처리에 대한 코드가 무엇인지 알아야 합니다.
Order OPEN 오류 처리로 그렇게 할 수 있습니다.
하지만 Order CLOSE 오류 처리로 내 코드가 맞는지 확인해야 합니다.
이것은 잘 작동하는 구매 주문에 대한 내 주문 열기 오류 처리 코드입니다.
//구입
if (Order == SIGNAL_BUY ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {
if(!IsTrade) {
//여백 확인
if (AccountFreeMargin() lt; (1000 * 랏)) {
Print(돈이 없습니다. Free Margin = , AccountFreeMargin());
반환(0);
}
if (UseStopLoss) StopLossLevel = 묻기 - StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Point; 그렇지 않으면 TakeProfitLevel = 0.0;
티켓 = OrderSend(Symbol(), OP_BUY, 로트, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy(# MagicNumber ), MagicNumber, 0, DodgerBlue);
if(티켓 gt; 0) {
if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {
Print(BUY 주문 열림 : , OrderOpenPrice());
if (SignalMail) SendMail([신호 경고], [ Symbol() ] DoubleToStr(Ask, Digits) 매수 열기);
} 또 다른 {
Print(BUY 주문 열기 오류 : , GetLastError());
인트레이드 = 거짓;
buyFlag = 거짓;
}
}
else/*** if(Ticket gt;0)에 ELSE 추가
{
//거래를 여는 중 오류가 발생했으므로 처리하십시오.
Print(BUY 주문 열기 오류 : , GetLastError());
인트레이드 = 거짓;
buyFlag = 거짓;
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = 바;
반환(0);
}
}
이것은 구매 주문에 대한 내 주문 닫기 오류 처리 코드입니다.
// ------------------ -------------------
//| 신호 종료(매수 종료) |
// ------------------ -------------------
if (Order == SIGNAL_CLOSEBUY ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {
for (cnt = 합계; cnt gt;=0; cnt--)
{
주문선택(cnt,SELECT_BY_POS,MODE_TRADES);
{
if (OrderMagicNumber() == MagicNumber)
{
nomoretrades = 참;
인트레이드 = 거짓;
티켓 = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if(티켓 gt; 0) {
if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {
Print(SELL 주문 마감 : , OrderClosePrice());
if (SignalMail) SendMail([신호 알림], [ Symbol() ] DoubleToStr(Bid, Digits) Open Sell);
} 또 다른 {
Print(BUY 주문 종료 오류 : , GetLastError());
nomoretrades = 거짓;
인트레이드 = 참;
}
}
else/*** if(Ticket gt;0)에 ELSE 추가
{
//거래를 종료하는 중에 오류가 발생했으므로 처리하세요.
Print(BUY 주문 종료 오류 : , GetLastError());
nomoretrades = 거짓;
인트레이드 = 참;
}
}
}
}
if (SignalMail) SendMail([신호 알림], [ Symbol() ] DoubleToStr(Bid, Digits) Close Buy);
if (!EachTickMode) BarCount = 바;
IsTrade = 거짓;
계속하다;
}
//후행 정지
if(UseTrailingStop TrailingStop gt; 0) {
if(Bid - OrderOpenPrice() gt; 포인트 * TrailingStop) {
if(OrderStopLoss() lt; 입찰 - 포인트 * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = 바;
계속하다;
}
}
}
} 또 다른 {
누구든지 내 ORDER CLOSE 오류 처리 코드가 올바른지 말해 줄 수 있습니까?
또한 인쇄된 가격이 잘못되어 OrderClosePrice()를 인쇄하는 데 문제가 있는 것 같습니다. 주문 개시 코드에 대한 OrderOpenPrice()를 인쇄하는 데 문제가 없습니다.