여러 주문 문제 - 페이지 4

 
luisneves :

안녕하세요 크로닌님

수정 사항이 작동 중입니다. 당신은 최대 주문을 제한했습니다. 대신 모든 주문을 닫을 수 있습니까?

다음 코드로 시도했지만 작동하지 않는 것 같습니다.

친애하는

루이스

흠 무슨 말인지 이해가 잘 안가네요...
마지막 주문을 여는 대신(MaxOrders가 7로 설정된 경우 주문 7) 모든 주문을 닫으라는 뜻입니까?

MaxOrders에 도달할 때까지 기다렸다가 즉시 모두 닫고 싶지 않을 것이라고 확신합니다. 마지막 주문은 대부분(또는 항상) 손실로 끝납니다.
ㅋ 스프레드 컨트롤러 에 대한 PM을 보셨습니까?

 
kronin :

흠 무슨 말인지 이해가 잘 안가네요...
마지막 주문을 여는 대신(MaxOrders가 7로 설정된 경우 주문 7) 모든 주문을 닫으라는 뜻입니까?

MaxOrders에 도달할 때까지 기다렸다가 즉시 모두 닫고 싶지 않을 것이라고 확신합니다. 마지막 주문은 대부분(또는 항상) 손실로 끝납니다.
ㅋ 스프레드 컨트롤러에 대한 PM을 보셨습니까?


안녕하세요 크로닌님

귀하의 신속한 응답에 감사드립니다.

n 주문(MaxOrders)의 핑퐁 사이클 후에 모든 미결 주문이 마감되어야 한다고 말하면서 그것이 말이 되지 않는다는 것을 알고 있지만 그렇다고 해도 그렇습니다.

IsContextBusy() Sleep(10) 코드가 이미 있기 때문에 실패하고 그것이 의미가 있는지 의심되는 경우를 대비하여 주문 재진입에 대한 코드를 포함시키려고 합니다. 내가 이해하는 한 의미는 "서버가 사용 중이거나 플랫폼의 다른 장치가 통신을 시도하는 경우 10밀리초를 기다렸다가 다시 시도하십시오"입니다. 따라서 EA는 티켓을 받을 때까지 이 동작을 유지할 것이라고 생각합니다. 맞습니까?

PM 문제와 관련하여 이 경우 주말에 테스트를 사용하지 않거나 플랫폼을 오프라인으로 사용하는 것이 좋습니다....

5행을 삽입했지만 1행에서 이미 그렇게 했기 때문에 필요하지 않다고 생각합니다. 맞습니까?

 int LastClosedTicket=GetTicketFromHistory( Symbol (),MagicNumber);  //1  
   if (LastClosedTicket> 0 )
    {                                                                 
       Print ( "LastClosedTicket=" ,LastClosedTicket);                   
       if ( OrderSelect (LastClosedTicket,SELECT_BY_TICKET))
      {
       if (OrderSymbol()== Symbol () && OrderMagicNumber()== MagicNumber)  //5            
       {            
         if (OrderType()==OP_BUY)
         {
         BuyAllowed= false ;SellAllowed= true ;
         } 
         else                    
         {
         BuyAllowed= true ;SellAllowed= false ;
         } 
        }   
      }
    }             
   return ( 0 );   
  }
 
   //+---------------------------------------------------------------------------+

또 다른 문제,

다음 코드에서 sym 및 mn이 있는 Bold 줄은 Symbol() 및 MagicNumber로 대체해서는 안 됩니까?

GetTicketFromHistory

int GetTicketFromHistory( string sym, int mn, int orderposinhistory= 0 ) // <------------------------Should replace sym and mn with Symbol () and MagicNumber ?
 {
   bool debug= false ;
   if (debug) Print ( "Orders in history: " , OrdersHistoryTotal());
   int ticket,count= 1 ,i;
   datetime orderclosedates[];
   for (i=OrdersHistoryTotal()- 1 ;i>= 0 ;i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)) continue ;
       if (debug) Print ( "OrderSymbol: " ,OrderSymbol(), "; OrderMagicNumber: " ,OrderMagicNumber(),
                     " ;OrderType: " ,OrderType(), "; OrderTicket: " ,OrderTicket(),
                     "; OrderCloseTime: " ,TimeToStr(OrderCloseTime()), ";" ); 
       if ((OrderMagicNumber()  ==mn) // <---------------------------------------------------------Should replace  mn with  MagicNumber ?
         &&(OrderSymbol()     ==sym) // <---------------------------------------------------------Should replace sym with Symbol () ?
         &&(OrderType()==OP_BUY||OrderType()==OP_SELL))
         {                       
         ArrayResize (orderclosedates,count);
         orderclosedates[count- 1 ]=OrderCloseTime();
         count++;

여기에 다음 코드에서 귀하의 조언에 따라 필터를 삽입했습니다.

(//필:

//총 주문량을 확인합니다. 나는 시장, 마법 및 기호에 대한 필터를 추가할 것입니다...//<----------- 시장 필터가 무엇을 의미하는지 잘 모르겠습니다..... (Phil: 시장 주문, 보류 중인 주문 없음 )

//....하지만 나는 지금 게으르다.....그것은 당신이 할 일입니다.

그 맞습니까 ?

 int start()
 { //0 
                                         
  OTLastTick = OTCurrentTick;                      
  OTCurrentTick = OrdersTotal ();
     if (OrderSymbol() == Symbol ()           //<--------filter for symbol and magic number, but for market (suppose market orders can't understand how....)
      && OrderMagicNumber() == MagicNumber) //<-|
     if (OTCurrentTick == 0 && OTLastTick > 0 )
      {
      BuyTrigger = Ask + OpenDistance * pt;
      SellTrigger = Bid - OpenDistance * pt;
      }             
     if (OTCurrentTick > 0 )Trail();                   
     if (OTLastTick >= 2                      //<------could you comment the meaning of this line ?                            
     &&OTCurrentTick < OTLastTick
     && OTCurrentTick > 0 )
     {
      CloseAllOnSL(); return ;
     }      
     if (OTCurrentTick >= MaxOrders) return ;                                                            
     if (OTCurrentTick > 0 )OpenOppositeOrder();                        
     if (OTCurrentTick == 0 )
     {
      BuyAllowed = true ;
      SellAllowed = true ;


친애하는

루이스

 

나는 함수 의 사용에 대해 논평하지 않는다. RaptorUK는 이전에 이미 몇 가지 게시물을 작성했습니다. 다시 읽고 주어진 코드에서 아무것도 변경할 필요가 없는 이유를 이해하십시오. 더 좋은 점은 다른 EA에서 그대로 사용할 수 있는 이유를 이해하는 것입니다.

OrdersTotal()은 주문 금액을 반환합니다. 주문이 EA 또는 수동 거래에 속하거나 주문이 보류 중이거나 이미 시장 주문인지 알고 싶을 것입니다. EA가 생성한 주문의 양을 돌려주는 함수(int)를 생성할 것입니다.

if (OTLastTick >= 2 //<------이 줄의 의미를 설명할 수 있습니까?
열린 주문이 2개 미만인 경우 CloseAllOnSL 함수를 호출하는 것은 의미가 없습니다. ..... 유일한 열린 주문은 분명히 중단되지 않습니다.

 
kronin :

나는 기능의 사용에 대해 논평하지 않는다. RaptorUK는 이전에 이미 몇 가지 게시물을 작성했습니다. 다시 읽고 주어진 코드에서 아무것도 변경할 필요가 없는 이유를 이해하십시오. 더 좋은 점은 다른 EA에서 그대로 사용할 수 있는 이유를 이해하는 것입니다.

OrdersTotal()은 주문 금액을 반환합니다. 주문이 EA 또는 수동 거래에 속하거나 주문이 보류 중이거나 이미 시장 주문인지 알고 싶을 것입니다. EA가 생성한 주문량을 돌려주는 함수(int)를 생성하겠습니다.

if (OTLastTick >= 2 //<------이 줄의 의미를 설명할 수 있습니까?
열린 주문이 2개 미만인 경우 CloseAllOnSL 함수를 호출하는 것은 의미가 없습니다. ..... 유일한 열린 주문은 분명히 중단되지 않습니다.


안녕하세요 크로닌님

제 문제에 대한 답변에 감사드립니다.

귀하의 코드와 이전에 제공된 RaptorUK 조언에 가장 많은 관심을 기울일 것입니다.

친애하는

루이스

 

안녕하세요 크로닌님

두 개의 EA를 사용하는 것과 관련된 문제가 발생했습니다. 나는 두 개의 EA를 다른 차트에 넣고 다른 매직 넘버를 사용하면 동시에 작동하지 않습니다. 단위 이유 5로 오류가 수신되지만 포럼을 살펴봐도 해당 문제를 처리할 올바른 방향으로 안내하는 정보를 찾을 수 없습니다.

보완 정보가 있습니까?

친애하는

루이스

 
luisneves :

안녕하세요 크로닌님

두 개의 EA를 사용하는 것과 관련된 문제가 발생했습니다. 나는 두 개의 EA를 다른 차트에 넣고 다른 매직 넘버를 사용하면 동시에 작동하지 않습니다. 단위 이유 5로 오류가 발생합니다.

https://docs.mql4.com/constants/unitit
 

안녕하세요 RaptorUK입니다.

귀하의 신속한 응답에 감사드립니다.

내가 찾은 링크에서,

REASON_PARAMETERS 5 입력 매개변수가 사용자에 의해 변경되었습니다.

그러나 그 정보로는 아무것도 할 수 없습니다(내가 아는 한). 어떤 입력 매개변수가 변경되었는지 이해할 수 없습니다. ea는 동일하며 다른 ea 간의 충돌을 피하기 위해 매직 번호만 변경합니다.

그건 그렇고 일단 당신이 여기에 오면 다음 코드에서 주문을 다시 보내기 위해 코드를 도입해야 하는 반면 티켓은 마감 주문에 대해 동일하게 수신되지 않았는지 알려주실 수 있습니까?

 while (IsTradeContextBusy()) Sleep ( 10 );
          RefreshRates();       
                       
     BuyTicket= OrderSend ( Symbol (),OP_BUY,LotSize,Ask,RealSlippage, 0 , 0 , "Buy Order" ,MagicNumber, 0 ,Green);
     if (BuyTicket > - 1 )

친애하는

루이스

 
luisneves :

안녕하세요 RaptorUK입니다.

귀하의 신속한 응답에 감사드립니다.

내가 찾은 링크에서,

REASON_PARAMETERS 5 입력 매개변수가 사용자에 의해 변경되었습니다.

그러나 그 정보로는 아무것도 할 수 없습니다(내가 아는 한). 어떤 입력 매개변수가 변경되었는지 이해할 수 없습니다. ea는 동일하며 다른 ea 간의 충돌을 피하기 위해 매직 번호만 변경합니다.

매직넘버를 변경한 경우. . .

 extern int     MagicNumber    = 08012013 ;

. . . 그리고 그것은 extern이고 매개 변수 를 변경하면 EA가 다시 시작되고 이유 5를 제공합니다.

여러 쌍에서 EA를 실행하려면 2가지를 수행하는 것이 좋습니다. 먼저 한 쌍에서 EA가 올바르게 작동하도록 하고 완전히 테스트하여 작동하는지 확인하십시오. 그런 다음 두 번째로 Mutex를 도입하여 다른 EA가 동일한 작업을 시도하지 않을 때 거래가 처리되도록 합니다.

 
RaptorUK :

매직넘버를 변경한 경우. . .

. . . 그리고 그것은 extern이고 매개 변수를 변경하면 EA가 다시 시작되고 이유 5를 제공합니다.

여러 쌍에서 EA를 실행하려면 2가지를 수행하는 것이 좋습니다. 먼저 한 쌍에서 EA가 올바르게 작동하도록 하고 완전히 테스트하여 작동하는지 확인하십시오. 그런 다음 두 번째로 Mutex를 도입하여 다른 EA가 동일한 작업을 시도하지 않을 때 거래가 처리되도록 합니다.


안녕하세요 RaptorUk입니다.

오류에 대한 귀하의 응답에 감사드립니다. 이름과 매직 번호가 변경되고 플랫폼을 닫지 않고 두 번째 ea를 차트에 넣을 수 있습니다.

시간 초과로 오류를 반환한 주문 마감 실패와 관련된 재입장 주문에 대한 다른 문제에 대해. 그렇기 때문에 코드가 있는 그대로 주문 마감 또는 주문 보내기를 다시 입력할지 모르겠습니다.

친애하는

루이스

 
luisneves :


안녕하세요 RaptorUk입니다.

오류에 대한 귀하의 응답에 감사드립니다. 이름과 매직 번호가 변경되고 플랫폼을 닫지 않고 두 번째 ea를 차트에 넣을 수 있습니다.

시간 초과로 오류를 반환한 주문 마감 실패와 관련된 재입장 주문에 대한 다른 문제에 대해. 그렇기 때문에 코드가 있는 그대로 주문 마감 또는 주문 보내기를 다시 입력할지 모르겠습니다.

친애하는

루이스

실행 오류 코드 를 읽고 코드가 여기에 제공된 정보(예: . . .

ERR_TRADE_TIMEOUT 128 거래 시간 초과에 도달했습니다. 재시도 전( 최소 1분 이내 ) 거래 조작이 실제로 성공하지 않았는지(새 포지션이 열리지 않았는지, 기존 주문이 수정 또는 삭제되지 않았는지, 기존 포지션이 있는지 확인하는 것이 필요합니다. 닫히지 않았습니다)
사유: