エラー、バグ、質問 - ページ 818

 
sion:

注文が発注されたかどうかを判断するために、OnTradeTransactionを使用している人はいますか?

ストラテジーテスターで、3ティック以内に1トレード2オーダーを送信した場合、TRADE_TRANSACTION_REQUESTは、最後に送信されたオーダーにのみ、1回発生します。

テスターのログ、エージェントのログ、どちらを見ているのでしょうか?サービスデスクに 連絡して、詳細を教えてください。
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Rosh:
テスターのログ、エージェントのログ、どちらをご覧になっていますか?サービスデスクに 連絡して、詳細を教えてください。

エージェントでログを見たところ、あまりに大きなログが印刷されているはずです。私はサービスデスクに対応するのが億劫なので、おおよそのコードをスケッチしてみました。2011.10.10以降のRoboForexではTRADE_TRANSACTION_REQUESTが3つ中1つ、Metakvotでは3つ中2つ表示されるので、それを実行しました。ダニの出現頻度によるらしい。

2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 を起動しました。

ファイル:
test5.mq5  8 kb
 
sion:

エージェントでログを見たところ、あまりに大きなログが印刷されているはずです。私はサービスデスクに対応するのが億劫なので、おおよそのコードをスケッチしてみました。2011.10.10以降のRoboForexではTRADE_TRANSACTION_REQUESTが3つ中1つ、Metakvotでは3つ中2つ表示されるので、それを実行しました。どうやら、ダニの発生頻度にもよるようです。

2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 を起動しました。

考え方としては、OnTradeTransaction はティックに全く依存せず、取引イベントハンドラーです。

そして、自分の番、トレードイベントのキューを処理する。

 
Urain:

OnTradeTransactionは全くティックに依存しない、トレードイベントハンドラであると思われる。

そして、その順番を処理する、トレードイベントの行列。

この例では、注文を設定するのはティックに依存し、各ティックで 新しい注文が設定されます。

TRADE_TRANSACTION_REQUESTがないのは、開発者が繰り返してきたことなのか、Service Deskがないとできないのか。

 
sion:

この例では、注文の発注スピードはティックに依存し、ティックごとに新しい注文が発注されます。

TRADE_TRANSACTION_REQUESTがないのは、開発者が繰り返したのか、Service Deskでないとできないのか?

おそらくSDがないと無理、機能が新しいのでバグの可能性あり。詳しく調べる必要がある。

SZY この機能の使い方について記事を書いているところですが、そのような場面に遭遇したことはありません。

ZZZY AlpariとMQのサーバーでしかテストしていないんです。

正しいサーバー名を教えていただければ、確認してみます。

 
Urain:

おそらくCDがないと無理でしょう、機能が新しく、バグもあるかもしれません。詳しく調べる必要がありますね。

この機能の使い方について記事を作っているのですが、このような事態は一度もありませんでした。

ZZZY AlpariとMQのサーバーだけで確認しました。

正しいサーバー名を教えてください。

ロボフォレックス-メタトレーダー5

MetaQuotes-デモ

EURUSDは通貨ですが、上記の過去ログに記載されています。

10.10.10という日付のファイルを添付しましたが、再度確認したところ、RoboForexの最後のTRADE_TRANSACTION_REQUESが1つだけ表示されています。

 
sion:

ロボフォレックス-メタトレーダー5

MetaQuotes-デモ

EURUSDは通貨ですが、上記の過去ログに記載されています。

上に添付したファイルでは月の10日から始まっているので、テストの開始は2011.10.10です。 もう一度確認したところ、最後のTRADE_TRANSACTION_REQUESの1つだけがRoboForexで一貫して受信されます。

バグが再現されない。

MQでもRoboForexでも、リアルタイムでもテスターでも、すべてのTRADE_TRANSACTION_REQUESTが正常に届いています。

システムはx86で、x64では今の ところ確認できません。

 

2つのログを比較すると、新しい注文を出す前にOnTradeTransactionが処理されていない場合、TRADE_TRANSACTION_REQUESTはドロップされることがわかります。

以下、3つのうち1つを紹介します。

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 of 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.00 EURUSD at 1.33989 完了 (注文 #2 に基づいています)
QR 0 トレード 03:36:07 2011.10.10 02:00:00 ディール実行 [#2 sell 1.00 EURUSD at 1.33989].
DJ 0 トレード 03:36:07 2011.10.10 02:00:00 注文実行 1.33989 で 1.00 を売る [#2 sell 1.00 EURUSD at 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 ///////////// トランス.タイプ==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 test5 (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 test5 (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(type)=TRADE_TRANSACTION_REQUEST。
RG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ------------trans===.
貿易取引要求
...
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(type)=TRADE_TRANSACTION_REQUEST。
CJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 -----------trans===.
貿易取引要求

...

 
Urain:

バグが効かない。

MQでもRoboForexでも、リアルタイムでもテスターでも、すべてのTRADE_TRANSACTION_REQUESTは正常に表示されます。

システムはx86で、x64での確認は今の ところできません。

古いノートパソコンで試したところ、設定命令-応答-設定命令-応答-設定命令-応答と順次動作しました。

1tickの間に2つの注文を出せば動くと思うのですが。OnTradeTransactionは、その時、時間内に動作しません。

ファイルを少しいじってみました。

ファイル:
test5.mq5  8 kb
 

こんにちは。

封筒の行のビートをカウントするユニットを作成しました。正しくカウントされているようですが、ログにいくつかのエントリがありません。カウントは正しいのですが、ログがなぜか 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);

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