오류, 버그, 질문 - 페이지 818

 
sion :

주문이 접수되었는지 확인하기 위해 OnTradeTransaction을 사용하는 사람이 있습니까?

전략 테스터에서 3틱 이내에 1개의 거래와 2개의 주문을 보낼 때 마지막으로 보낸 주문에는 1개의 TRADE_TRANSACTION_REQUEST만 옵니다.

테스터 로그 또는 에이전트 로그를 보고 계십니까? 서비스 데스크에 편지를 써서 세부 정보를 제공할 수 있습니까?
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Rosh :
테스터 로그 또는 에이전트 로그를 보고 있습니까? 서비스 데스크에 편지를 써서 세부 정보를 제공할 수 있습니까?

에이전트에서 로그를 봤는데 너무 큰 로그 조각이 인쇄되어야 합니다. 나는 대략적인 코드를 던졌는데 서비스 데스크를 다루기에는 너무 게으르다. 저는 2011.10.10부터 roboforex에서 3개 중 1개 TRADE_TRANSACTION_REQUEST가 표시되는 메타따옴표 3개 중 2개에서 실행하고 있습니다. 분명히 진드기의 발생 빈도에 달려 있습니다.

2012.08.22 09:43:15 터미널 SIGrader 5 x64 빌드 687 시작

파일:
test5.mq5  8 kb
 
sion :

에이전트에서 로그를 봤는데 너무 큰 로그 조각이 인쇄되어야 합니다. 나는 대략적인 코드를 던졌는데 서비스 데스크를 다루기에는 너무 게으르다. 저는 2011.10.10부터 roboforex에서 3개 중 1개 TRADE_TRANSACTION_REQUEST가 표시되는 메타따옴표 3개 중 2개에서 실행하고 있습니다. 분명히 진드기의 발생 빈도에 달려 있습니다.

2012.08.22 09:43:15 터미널 SIGrader 5 x64 빌드 687 시작

OnTradeTransaction 은 틱에 전혀 의존하지 않으며 거래 이벤트 핸들러입니다.

그리고 자체 대기열인 거래 이벤트 대기열을 처리합니다.

 
Urain :

OnTradeTransaction은 틱에 전혀 의존하지 않으며 거래 이벤트 핸들러입니다.

그리고 자체 대기열인 거래 이벤트 대기열을 처리합니다.

이 예에서 주문 속도는 눈금에 따라 달라지며 각 눈금마다 새 주문이 이루어집니다.

흥미롭게도 TRADE_TRANSACTION_REQUEST의 부재는 개발자에 의해 반복되었거나 서비스 데스크 없이는 방법이 없습니다(

 
sion :

이 예에서 주문 속도는 틱에 따라 달라지며, 각 틱마다 새로운 주문이 이루어집니다.

흥미롭게도 TRADE_TRANSACTION_REQUEST의 부재는 개발자에 의해 반복되었거나 서비스 데스크 없이는 방법이 없습니다(

아마 SD가 없어도 기능이 새롭고 버그가 있을 수 있습니다. 자세히 이해해야 합니다.

ZY 여기에서 이 기능의 적용에 대한 기사를 작성했지만 그런 상황은 저에게 발생하지 않았습니다.

ZZY는 정말 Alpari와 MQ 서버에서만 확인했고,

정확한 서버 이름을 알려주시면 확인하겠습니다.

 
Urain :

아마 SD가 없어도 기능이 새롭고 버그가 있을 수 있습니다. 자세히 이해해야 합니다.

ZY 여기에서 이 기능의 적용에 대한 기사를 작성했지만 그런 상황은 저에게 발생하지 않았습니다.

ZZY는 정말 Alpari와 MQ 서버에서만 확인했고,

정확한 서버 이름을 알려주시면 확인하겠습니다.

RoboForex-MetaTrader 5

MetaQuotes-데모

EURUSD는 통화이지만 위의 로그에 표시되어 있습니다.

위에 첨부된 파일에서는 10일에 런칭이 되어서 테스트 시작일을 2011.10.10으로 설정했습니다. 지금 다시 확인해보니 roboforex stable에서는 마지막 TRADE_TRANSACTION_REQUES가 1개만 나옵니다.

 
sion :

RoboForex-MetaTrader 5

MetaQuotes-데모

EURUSD는 통화이지만 위의 로그에 표시되어 있습니다.

위에 첨부된 파일에서는 10일에 런칭이 되어서 테스트 시작일을 2011.10.10으로 설정했습니다. 지금 다시 확인해보니 roboforex stable에서는 마지막 TRADE_TRANSACTION_REQUES가 1개만 나옵니다.

버그는 재현할 수 없습니다.

MQ와 RoboForex 모두 실시간 및 테스터에서 모든 TRADE_TRANSACTION_REQUEST가 정상적으로 수신됩니다.

시스템이 x86인데 지금 x64에서 확인할 수 없습니다.

 

2개의 로그를 비교하면 OnTradeTransaction이 새로운 주문이 나타나기 전에 해결할 시간이 없었다면 TRADE_TRANSACTION_REQUEST가 떨어졌음을 알 수 있습니다.

여기 1/3

GM 0 Trade 03:35:28 2011.10.10 02:00:00 instant sell 1.00 EURUSD at 1.3385 (1.3385 / 1.3387 / 1.3385)
OL 0 Trades 03:35:28 2011.10.10 02:00:00 deal #2 sell 1.00 EURUSD at 1.3385 done (based on order #2)
JQ 0 Trade 03:35:28 2011.10.10 02:00:00 deal performed [#2 sell 1.00 EURUSD at 1.3385]
RJ 0 Trade 03:35:28 2011.10.10 02:00:00 order performed sell 1.00 at 1.3385 [#2 sell 1.00 EURUSD at 1.3385]       <== 1
MH 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_DEAL Установлен 1 ордер
HE 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3234 (1.3384 / 1.3386 / 1.3384)                    <== 2
MP 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
QN 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3285 (1.3385 / 1.3387 / 1.3385)                    <== 3
MM 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
HI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==6----- n=0
GE 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
GD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==2----- n=1
CF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
MF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==3----- n=2
OS 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
OQ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=3
KL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
JL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=4
GN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
EO 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=5
CK 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
PI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=6
OD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
LG 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==10----- n=7
OJ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 EnumToString(type)=TRADE_TRANSACTION_REQUEST
QN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST

여기 2/3

CL 0 거래 03:36:07 2011.10.10 02:00:00 즉석 매도 1.00 EURUSD at 1.33989 (1.33989 / 1.34003 / 1.33989)
NP 0 거래 03:36:07 2011.10.10 02:00:00 거래 #2 1.33989에 1.00 EURUSD 매도 완료(주문 #2 기준)
QR 0 거래 03:36:07 2011.10.10 02:00:00 거래 수행 [#2 매도 1.00 EURUSD at 1.33989]
DJ 0 거래 03:36:07 2011.10.10 02:00:00 주문 수행 1.00 매도 1.33989 [#2 매도 1.00 EURUSD 1.33989] <== 1
RK 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_DEAL 1개 주문 완료
QE 0 거래 03:36:07 2011.10.10 02:00:00 구매 한도 1.50 EURUSD at 1.32490 (1.33990 / 1.34004 / 1.33990) <== 2
LS 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_PENDING 2차 주문 접수
GP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ////////////////////// trans.type==6-- ---n=0
JM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
DM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==2-- ---n=1
JH 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
FJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ////////////////////// trans.type==3-- ---n=2
JG 0 테스트5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
DG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ////////////////////// trans.type==0-- - --n=3
JR 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
ID 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ////////////////////// trans.type==0-- ---n=4
JQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
IR 0 테스트5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ////////////////////// trans.type==10-- ---n=5
RP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 EnumToString(유형)=TRADE_TRANSACTION_REQUEST
RG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST
...
FD 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ***************************** *********************************************** **
OG 0 거래 03:36:07 2011.10.10 02:00:01 구매 제한 1.50 EURUSD at 1.32992 (1.33992 / 1.34006 / 1.33992) <== 3
QQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 TRADE_ACTION_PENDING 2차 주문 접수
RQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ///////////////////// trans.type==0-- - -- n=6
OO 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ***************************** *********************************************** **
RM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ///////////////////// trans.type==10-- ---n=7
CF 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 EnumToString(유형)=TRADE_TRANSACTION_REQUEST
CJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ------------trans===
TRADE_TRANSACTION_REQUEST

...

 
Urain :

버그는 재현할 수 없습니다.

MQ와 RoboForex 모두 실시간 및 테스터에서 모든 TRADE_TRANSACTION_REQUEST가 정상적으로 수신됩니다.

시스템이 x86인데 지금 x64에서 확인할 수 없습니다.

나는 오래된 노트북에서 그것을 시도했고 순차적으로 작동했습니다 : 순서 설정 - 답변 - 순서 설정 - 답변 - 순서 설정 - 답변

1틱에 2개 주문하면 재생산해야 한다고 생각합니다. 그러면 OnTradeTransaction 은 제시간에 해결할 시간이 없습니다.

파일을 약간 수정했습니다.

파일:
test5.mq5  8 kb
 

안녕하세요.

봉투 라인의 히트 수를 계산하는 블록을 만들었습니다. 모든 것이 올바르게 계산되는 것처럼 보이지만 일부 항목이 로그에 누락되었습니다. 예를 들어, 로그에 count[Number] =3이 있습니다.   그리고 다음 카운트[숫자] = 5. 계산이 정확하지만 어떤 이유로 로그에 누락 된 것을 볼 수 있습니다. count[Number] = 4 에 대한 항목입니다. 때로는 저널에 모든 항목이 있습니다. 왜 이런 일이 일어나는지 명확하지 않습니까? 코드에 오류가 있는 경우 코드 수정할 수 있습니까?

그러나 때때로 테스터를 시작하면 "OnTick critical error" 오류가 발생하지만 다음에 테스트를 시작할 때 오류가 발생합니다. 무엇이 문제가 될 수 있습니까?

 input string             Symb0 = "EURUSD" ;
input    bool             Trade0 = true ;
int MA_Shift0= 1 ;
input int MA_Per0 = 11 ;
input double      Envelopes_Deviation0     = 0.1 ; 
//+-----------------------------------+
input string             Symb1 = "USDCHF" ;
input    bool             Trade1 = true ;
int MA_Shift1= 1 ;
input int MA_Per1 = 11 ;
input double      Envelopes_Deviation1     = 0.1 ; 

bool MA ( int Number,
         string   Symbol_,           // имя символа
         bool     Trade,
         int      MA_Per,         // период для расчета средней линии
         int      MA_Shift,           // смещение индикатора по горизонтали   
         double   Envelopes_Deviation,           // отклонение границ от средней линии    
         double   &Bid[],
         int &env[],
         int &count[],
         bool &flagenv[],
         bool &flagenv1[]      
        )

  {
   if (!Trade) return ( true );

   static int Size_= 0 ;

   static int Handle[];
   static int Recount[],MinBars[];
   double ma[];
   double Env_Up[ 2 ];  
double Env_Dn[ 2 ];   
 double   norm_Env_Dn;
 double   norm_Env_Up;

 
     if (Number+ 1 >Size_) 
     {
      Size_=Number+ 1 ; 

       ArrayResize (Handle,Size_);
       ArrayResize (Recount,Size_);
       ArrayResize (MinBars,Size_);

      MinBars[Number]= 3 *MA_Per;

       ArraySetAsSeries (Env_Dn, true );

      Handle[Number]= iEnvelopes (Symbol_, 0 ,MA_Per,MA_Shift, MODE_SMA , PRICE_CLOSE ,Envelopes_Deviation); 
         
     }

   if ( Bars (Symbol_, 0 )<MinBars[Number]) return ( true );

       if ( CopyBuffer (Handle[Number], LOWER_LINE , 0 , 2 ,Env_Dn)< 0 || CopyBuffer (Handle[Number], UPPER_LINE , 0 , 2 ,Env_Up)< 0 )
        {
         Recount[Number]= true ; 

         return ( false );  
        }
      
     
   int Digits_= int ( SymbolInfoInteger (Symbol_, SYMBOL_DIGITS )+ 1 );
  norm_Env_Dn = NormalizeDouble (Env_Dn[ 0 ], Digits_);
  norm_Env_Up = NormalizeDouble (Env_Up[ 0 ], Digits_);   
     
 Bid[Number]= SymbolInfoDouble (Symbol_, SYMBOL_BID ); 
    
if (Bid[Number] < norm_Env_Dn && !flagenv1[Number]) env[Number] += 1 ;
if (Bid[Number] > norm_Env_Up && !flagenv[Number]) env[Number] += 2 ;      
if (env[Number]<= 2 )env[Number] *= 10 ;

if (env[Number]== 20 )flagenv[Number] = true ;
if (env[Number]== 10 )flagenv1[Number] = true ;

if (env[Number]== 3 || env[Number]== 12 || env[Number]== 21 || env[Number]> 21 ) 
{
env[Number]= 0 ;
flagenv[Number] = false ;
flagenv1[Number] = false ;
count[Number]++;

Print ( "+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@ count---------= " , count[Number], "      Number= " ,Number);
}
  
   return ( true );
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static double Bid[ 2 ];
   static int env[ 2 ],count[ 2 ];
   static bool flagenv[ 2 ],flagenv1[ 2 ]; 
MA( 0 ,Symb0,Trade0,MA_Per0,MA_Shift0,Envelopes_Deviation0,Bid,env,count,flagenv,flagenv1);
MA( 1 ,Symb1,Trade1,MA_Per1,MA_Shift1,Envelopes_Deviation1,Bid,env,count,flagenv,flagenv1);

  }
//+------------------------------------------------------------------+