어떤 주문이 닫힐 때 다른 모든 보류 중인 주문 을 닫는 코드를 작성했는데 문제는 4개의 주문을 2, 3, 4, 5 순서로 작성했다는 것입니다. 열릴 것이다. 그러면 닫히지 않습니다. 빨간색으로 강조 표시된 주문 번호는 보류 중인 모든 주문이 마감될 주문으로 변경되어야 합니다.
어떤 주문이 닫힐 때 다른 모든 보류 중인 주문 을 닫는 코드를 작성했는데 문제는 4개의 주문을 2, 3, 4, 5 순서로 작성했다는 것입니다. 열릴 것이다. 그러면 닫히지 않습니다. 빨간색으로 강조 표시된 주문 번호는 보류 중인 모든 주문이 마감될 주문으로 변경되어야 합니다.
여기에 질문이 있습니다. 증가된 로트와 함께 개설된 주문 자체에서 어떤 이유로 TP 및 SL 변경으로 인해 이익실현 및 손절매에 문제가 있습니다. 그리고 그것은 제비를 늘리고 TP로 마감하면 손실 금액을 반환 할 수 없습니다. 왜 이런 일이 일어나는지, 무엇이 잘못되었는지
어떤 주문이 닫힐 때 다른 모든 보류 중인 주문 을 닫는 코드를 작성했는데 문제는 4개의 주문을 2, 3, 4, 5 순서로 작성했다는 것입니다. 열릴 것이다. 그러면 닫히지 않습니다. 빨간색으로 강조 표시된 주문 번호는 보류 중인 모든 주문이 마감될 주문으로 변경되어야 합니다.
무효 시작(){
//----
이중 Take1 = Ask+20 *포인트;
이중 Take2 = 묻기+0 *포인트;
이중 Take3 = Ask-20 *포인트;
이중 Take4 = Ask-40 *포인트;
이중 Take5 = Ask-60 *포인트;
더블 스탑 = Bid-StopLoss*Point;
if(OrdersTotal()==0){
OrderSend(Symbol(),0,0.01,Ask,30,Stop,Take1,"",0,0,CLR_NONE);
OrderSend(Symbol(),2,0.02,Ask-20*Point,30,Stop,Take2,"",0,0,CLR_NONE);
OrderSend(Symbol(),2,0.04,Ask-40*Point,30,Stop,Take3,"",0,0,CLR_NONE);
OrderSend(Symbol(),2,0.08,Ask-60*Point,30,Stop,Take4,"",0,0,CLR_NONE);
OrderSend(Symbol(),2,0.16,Ask-80*Point,30,Stop,Take5,"",0,0,CLR_NONE);
}
if(OrdersTotal()==4)
{
주문 삭제( 2 );
}
if(OrdersTotal()==3)
{
주문 삭제( 3 );
}
if(주문 총계()==2)
{
주문 삭제( 4 );
}
if(OrdersTotal()==1)
{
주문 삭제( 5 );
리턴(0);
}
어떤 주문이 닫힐 때 다른 모든 보류 중인 주문 을 닫는 코드를 작성했는데 문제는 4개의 주문을 2, 3, 4, 5 순서로 작성했다는 것입니다. 열릴 것이다. 그러면 닫히지 않습니다. 빨간색으로 강조 표시된 주문 번호는 보류 중인 모든 주문이 마감될 주문으로 변경되어야 합니다.
먼저 루프에서 포지션이 최근에 마감되었는지 여부를 확인합니다. 이에 대해 OrdersHistoryTotal이 필요합니다. 위치 마감 시간 OrderCloseTime 을 확인하는 곳에서 변수의 마지막 시간보다 크면 열려 있는 모든 OrdersTotal 을 반복합니다. 그리고 우리는 그것들을 닫습니다.
PS Alt + S 또는 아이콘을 통해 코드 삽입
![](https://c.mql5.com/3/228/editor_tip.gif)
예를 들어 이
void MaxMinProfit() { int i, N, MaxTic, MinTic; double MinProf= 0 , MaxProf= 0 , OP, g, a[][ 2 ]; string MinSym, MaxSym; ArrayResize (a, 0 ); for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) { if ( OrderType ()== OP_SELL || OrderType ()== OP_BUY ) { OP = NormalizeDouble ( OrderProfit ()+ OrderSwap ()+ OrderCommission (), 2 ); if (MinProf>OP) { MinProf=OP; MinTic= OrderTicket (); MinSym= OrderSymbol (); } if (OP> 0 ) { N++; ArrayResize (a, N); a[N- 1 ][ 0 ]=OP; a[N- 1 ][ 1 ]= OrderTicket (); } } } } ArraySort (a, WHOLE_ARRAY , 0 , MODE_DESCEND ); //MODE_ASCEND); for (i= 0 ; i<Level; i++) { g+=a[i][ 0 ]; //int ti=a[i-2][1]; } if (MinProf < 0 && (g+MinProf)>=ProcMax) { for (i= 0 ; i<Level; i++) { if ( OrderSelect (a[i][ 1 ], SELECT_BY_TICKET , MODE_TRADES )) { //Alert(a[i][1]); if ( OrderType ()== OP_BUY ) { OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ), Slip, CLR_NONE); } if ( OrderType ()== OP_SELL ) { OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ), Slip, CLR_NONE); } } } if ( OrderSelect (MinTic, SELECT_BY_TICKET , MODE_TRADES )) { if ( OrderType ()== OP_BUY ) { OrderClose (MinTic, OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ), Slip, CLR_NONE); } if ( OrderType ()== OP_SELL ) { OrderClose (MinTic, OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ), Slip, CLR_NONE); } }} return ; }
모든 주문이 0인 경우의 조건은 if(OrdersTotal()==0) 입니다. 그리고 bais라는 이름이 0이면 조건을 작성하는 방법은 무엇입니까?
(OP_BUY==0)인 경우
(OP_BUY==0)인 경우