이 미스터리를 풀도록 도와주세요!!

 

프로그램이 성공적인 이전 줄 이후에 줄을 건너뛰고 해당 줄의 지침을 무시하는 이유를 이해할 수 없습니다.

아래 코드를 보면 Strategy Tester 에서 성공적으로 수행된 Sell 트랜잭션이 있지만 Sell 트랜잭션은 Journal에 기록되지 않으며 OrderSend 이후의 코드 라인도 무시되고 기록되지 않습니다. 저널에 기록.

무슨 일이야?

(많은 라인 중 하나에서 볼 수 있듯이 데이터에 몇 가지 문제가 있습니다. 2012.12.31 11:21:27 TestGenerator: 일치하지 않는 데이터 오류(2012.11.05 06:00에서 볼륨 제한 2430 초과)

다음은 내가 참조하는 코드 스니펫입니다.

 if (IsTradeContextBusy()) Sleep ( 10 );
      SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit, "CCITrendReversal" ,MagicNumber, 0 ,Red);
         Print ( "SellTicket is " ,SellTicket);  
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );
             SellTime = OrderOpenTime();
             SellSignal = false ;
           }
           Print ( "SellSignal2 is " , SellSignal);
 
ernest02 :

프로그램이 성공적인 이전 줄 이후에 줄을 건너뛰고 해당 줄의 지침을 무시하는 이유를 이해할 수 없습니다.

아래 코드를 보면 Strategy Tester에서 성공적으로 수행된 Sell 트랜잭션이 있지만 Sell 트랜잭션은 Journal에 기록되지 않으며 OrderSend 이후의 코드 라인도 무시되고 그렇지 않다는 것을 알 수 있습니다. 저널에 기록.

무슨 일이야?

판매가 작동하지 않았습니다. . . OrderSend(), OrderModify(), OrderClose() 등과 같은 OrderXxxx() 함수가 실패할 때 오류를 인쇄하는 코드를 추가합니다. . . 추가 정보: 함수 반환 값이란 무엇입니까? 어떻게 사용합니까?
 

어네스트02,

아마도 이것이 당신에게 유용할 것입니까?

 Print ( "Error description" , GetLastError ());

고맙습니다.

 

고마워 얘들아....하지만...

전략 테스터 는 여러 매도 거래를 보여줍니다. 거래에 오류가 있는 경우 오류 루틴이 있지만(아래에 표시된 코드) 보고된 오류는 없습니다.


   // Error handling
             if (SellTicket == - 1 )
               {
                ErrorCode = GetLastError ();
                ErrDesc = ErrorDescription(ErrorCode);

                ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc);
                 Alert (ErrAlert);

                ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit);
                 Print (ErrLog);
               }
 
ernest02 :

고마워 얘들아....하지만...

전략 테스터는 여러 매도 거래를 보여줍니다. 거래에 오류가 있는 경우 오류 루틴이 있지만(아래에 표시된 코드) 보고된 오류는 없습니다.

SellTicket은 double 또는 int 입니까? 게시한 2비트의 코드와 그 사이의 모든 코드를 보여주시겠습니까? . .
 

SellTicket은 정수입니다.

다음은 더 많은 코드입니다.

 if (SellSignal == true && CCIReal < (CCILevel - SellLevel) && TotalSellOrders <= MaxTrans && SellTrans == true )

      {
       Print ( "CCI is " ,CCIReal);
       
       for (Count = OrdersTotal ()- 1 ; Count >= 0 ; Count--)
                     if ( OrderSelect (Count, SELECT_BY_POS)
                    && OrderType() == OP_BUY
                    && OrderMagicNumber() == MagicNumber)
                    
                    {
                     int BuyOrder = OrderTicket();
                    
                     while (IsTradeContextBusy()) Sleep ( 10 );
                
                     bool Closed = OrderClose(BuyOrder, OrderLots(), Bid, UseSlippage, Blue);
                                            
                             // Error handling
                   if (Closed == false )
                     {
                        ErrorCode = GetLastError ();
                         string ErrDesc = ErrorDescription(ErrorCode);

                         string ErrAlert = StringConcatenate ( " Close Buy Order Error - Error " ,ErrorCode, ": " ,ErrDesc, " Bid is " , Bid, " SellTakeProfit is " , SellTakeProfit);
                         Alert (ErrAlert);

                         string ErrLog = StringConcatenate ( "OrderTicket: " ,OrderTicket());
                         Print (ErrLog);
                        
                     }
                      
                            }
                       
      
      RefreshRates();
      
      SellPrice = Bid;
      
       if (TrailingStopFunc == false )
      
         
         SellStopLoss = Bid + (StopLoss * UsePoint);
         else SellStopLoss = 0 ;
           
      
      SellTakeProfit = Bid - (TakeProfit * UsePoint);
      
       if (IsTradeContextBusy()) Sleep ( 10 );
      SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit, "CCITrendReversal" ,MagicNumber, 0 ,Red);
         Print ( "SellTicket is " ,SellTicket);  
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );
             SellTime = OrderOpenTime();
             SellSignal = false ;
           }
           Print ( "SellSignal2 is " , SellSignal);
          
           // Error handling
             if (SellTicket == - 1 )
               {
                ErrorCode = GetLastError ();
                ErrDesc = ErrorDescription(ErrorCode);

                ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc);
                 Alert (ErrAlert);

                ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit);
                 Print (ErrLog);
               }
         
         }
 

어니스트02,

나는 당신이 말하는 오류의 원인이 무엇인지 이해하지 못하지만 오류가 존재하지 않는 방식으로 코드를 다시 작성하는 것을 고려할 수 있습니다.

즉, EA가 수행하기를 원하는 작업에 대한 설명을 게시할 수 있다면 저(및/또는 다른 사람)가 솔루션을 제공하는 것이 더 쉬울 것입니다.

오류를 분리하는 대신 오류를 찾는 데 너무 많은 시간이 소요되는 경우 코드를 다시 작성하여 오류를 제거 하는 것이 좋습니다. 그것은 전적으로 당신에게 달려 있습니다. 이것이 유용하기를 바랍니다.

고맙습니다.

 
ernest02 :

SellTicket은 정수입니다.

다음은 더 많은 코드입니다.

고맙습니다 . . . Sell 가 효과가 있었다면 어떤 일이 일어났는지 분명히 하기 위해서입니다. . .

 Print ( "SellTicket is " ,SellTicket);     //  <---  this will be printed to the journal
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );     //  <---  PlaySound does not work in the Strategy Tester 
             SellTime = OrderOpenTime();   //  <---  if the Sell worked this variable will be set (or do we first need an OrderSelect() ?)
             SellSignal = false ;           //  <---  if the Sell worked this variable will be set
           }
           Print ( "SellSignal2 is " , SellSignal);     //  <---  this will be printed to the journal
 

이것이 너무 이상한 것입니다!

전략 테스터 는 많은 판매 거래를 기록하지만 저널에는 아무것도 표시되지 않습니다.

코드를 처음부터 다시 살펴보고 몇 가지를 변경하고 어떤 일이 일어나는지 살펴보겠습니다.

도움을 주셔서 감사합니다. 매우 감사.

(오류의 원인을 찾으면 다시 보고하겠습니다. 그렇지 않으면 코드를 다시 작성하겠습니다.)

 
ernest02 :

이것이 너무 이상한 것입니다!

전략 테스터는 많은 판매 거래를 기록하지만 저널에는 아무것도 표시되지 않습니다.

코드를 처음부터 다시 살펴보고 몇 가지를 변경하고 어떤 일이 일어나는지 살펴보겠습니다.

도움을 주셔서 감사합니다. 매우 감사.

(오류의 원인을 찾으면 다시 보고하겠습니다. 그렇지 않으면 코드를 다시 작성하겠습니다.)

기이한 . . . 실수로 Experts 탭을 보고 있지 않다면? tester/logs/ 에서 로그인을 보셨습니까?
 
ernest02 : Strategy Tester는 많은 Sell 거래를 기록하지만 저널에는 아무것도 표시되지 않습니다.
테스터에서 비주얼 모드를 사용하지 않는 한 저널에는 아무 것도 없을 것입니다.