도움말: EA가 거래를 마감하지 않는 이유 - 페이지 5

 
crossy :

확인 여기에 수정된 버전이 있습니다. 동일한 실수가 있습니다.

와이.

기능 이 전혀 필요하지 않습니다. . . . . . 그것을 제거.

 

2부 다시 해보자 :(

 ...
   for ( int cnt = OrdersTotal ()- 1 ; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         // Do the selection and OrderClose() INSIDE HERE ..., please
         
         
         /*
         CodeY    = true;
         OrderS   = OrderSymbol();
         OrderT   = OrderTicket();
         OrderM   = OrderMagicNumber();
         OrderTyp = OrderType();
         OrderL   = OrderLots();
         */
      }   
       // if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... ) // this selection goes up there
    
         //CLOSE_Single_P(Pair1,"LONG",OrderT,OrderL);

//-----------------------------------------------+
/*
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt=0; cntt<20000; cntt++ )
   {
      if ( Check )
      {
         Check_Ini();
         return;
      }
      Check = false;
      if ( TREN == "LONG" )
         PRC = MarketInfo(SYMB,MODE_BID);
      else
      if ( TREN == "SHORT" )
         PRC = MarketInfo(SYMB,MODE_ASK);
         
       Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow); // close it up there, and you have to rewrite the parameters
   }
   */
 

이 작업을 수행 . . . ( 여기에서 반복: https://www.mql5.com/en/forum/139543 )

 if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
   {
   Print ( "Trying to close Order: " , OrderTicket ());                             // <---- tells you that the   if  returned true
   if ( ! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), Slippage, Yellow )
       Print ( "OrderClose failed, error # " , GetLastError ());                           // <------- reports the error if the OrderClose failed . . 
   } 

. . . 기능이 전혀 필요하지 않습니다.

 
onewithzachy :

2부 다시 해보자 :(


나는 당신의 exuss를 원합니다. 나는 휴일이 있기 때문에 일요일 밤에 돌아올 것입니다.

나는 당신이 제안한대로 할 것이고 성공하기를 바랍니다.

둘 다 감사합니다.

와이.

 
crossy :


나는 당신의 exuss를 원합니다. 나는 휴일이 있기 때문에 일요일 밤에 돌아올 것입니다.


네, 즐거운 휴가 보내세요 :-)
 
crossy :


나는 당신의 exuss를 원합니다. 나는 휴일이 있기 때문에 일요일 밤에 돌아올 것입니다.

나는 당신이 제안한대로 할 것이고 성공하기를 바랍니다.

둘 다 감사합니다.

와이.

좋은 시간 되세요 :D

이번 일요일에 볼 F1 모나코가 있어요 :D

 
onewithzachy :

좋은 시간 되세요 :D

이번 일요일에 볼 F1 모나코가 있어요 :D

그리고 내일, FP3 및 예선 ;-)
 
crossy :


onewithzachy님, 감사합니다.

먼저 다음과 같은 작은 실수가 있다고 생각합니다.

for(int cnt = OrdersTotal() -1 ; cnt >= 0; cnt--)

녹색과 굵은 수정을 추가해야 합니다.

그러나 다음 줄이 어떻게 우리를 도울 수 있는지 이해하지 못합니까?

#include "..\libraries\stdlib.mq4"

고마워, Y.

나는 이것이 훨씬 더 간단하고 저에게 효과적입니다.

//---------------------------------------------------------+

무효 CheckForClose()
{
int i, res, order_id;

//-------+
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) 계속;
order_id= 주문티켓();


//---후행 및 닫기
if (OrderType() == OP_BUY)
{
if (Is_Close_Buy==true) //-- 종료 신호
{
RefreshRates();// 새로 고침 빈도
해상도 = 0;
res= OrderClose(order_id,Lots,Bid,3,Gold);
while(IsTradeAllowed() == false) 절전(100); //---서버로부터 응답을 받기 위해 조금 기다리십시오.
if (res>0){
PlaySound("cash_register.wav");} //--행복한 소리, 돈 벌기 바랍니다!!!!
만약 (res<0)
{
PlaySound("삐.wav");
Print("오류 #로 인해 OrderSend가 실패했습니다.",GetLastError());
리턴(0);
}
반품;
}
}// 주문 구매 확인 닫기 종료
//---
if (OrderType() == OP_SELL)
{
if (Is_Close_Sell==true) //--닫기 위한 신호
{
RefreshRates();// 새로 고침 빈도
해상도 = 0;
res= OrderClose(order_id,Lots,Ask,3,Gold);
while(IsTradeAllowed() == false) 절전(100); //---서버로부터 응답을 받기 위해 조금 기다리십시오.
if (res>0){
PlaySound("cash_register.wav");}
if(res<0)
{
플레이사운드("삐.wav");
Print("오류 #로 인해 OrderSend가 실패했습니다.",GetLastError());
리턴(0);
}
반품;
}
}//종료 매도 주문 확인
}//--------+
반품;
}

//------------------------------------------------------------+

 
RaptorUK :
그리고 내일, FP3 및 예선 ;-)

@ RaptorUK, 적어도 지금보다 더 나은 미래를 생각할 수 있도록 헬멧을 쓰는 것을 고려하고 있습니다. 그 운전자들은 미리 잘 생각하지 않습니까? :디


@ skaboy, 여기서 정중하게 여쭤봅니다. 실례가 되지 않으시면 SRC 버튼을 사용하여 코드를 게시해 주시겠습니까? 우리는 이 스레드에서만 너무 많이 묻고 있습니다.


@ crossy, 첫 게시물 이후로 거의 일주일이 지났습니다. 분명히 나는 당신이 지금 4000줄을 다루는 명확한 머리를 가지고 있지 않을 수도 있다는 것을 이해합니다. 바로 지금 나 자신도 여기에 있습니다. 그래도 이해가 되지 않는다면, - 흠 - 저희에게 Close 코드를 작성해 달라고 요청할 수 있습니다. 그러나 여전히 코드를 약간만 작성하여 보여줘야 합니다. :D, 바로 위에 있는 RaptorUK의 코드는 내 것보다 더 직접적입니다. 그것에 대해 생각한 다음 EA로 이동할 수 있습니다.

여기에 코드를 작성하는 방식(불필요하게 반복되는 코드가 너무 많음)으로 인해 4000줄의 코드로 인해 EA가 느려지고 EA가 틱을 놓칠 수 있다는 약간의 걱정이 있어야 합니다. 몇 점을 놓치는 것은 괜찮습니다. 하지만 10핍 정도 떨어진 곳에서 놓치면 어떻게 될까요? 그리고 아마도 4000줄은 여전히 400줄로 줄일 수 있습니다. 당신의 EA가 더 가볍고 빨라질지 누가 압니까? :디

 
skaboy :

나는 이것이 훨씬 더 간단하고 저에게 효과적입니다.


마감할 주문이 여러 개인 경우 작동하지 않습니다. . . 이것을 읽고 배우십시오: 루프 및 주문 마감 또는 삭제