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

 

テストを実行 すると、このような表示が出続けます。

2014.03.28 17:12:28 Core 1 connecting to 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 tester agent authorization error
2014.03.28 17:12:38 Core 1 connection closed.

テストの機会は、どちらかというと例外的に提供されています。リモートエージェントは無効、アンチウィルスはなし。
これはどのように扱われるのですか?

 
cDan:

テストを実行 すると、このような表示が出続けます。

2014.03.28 17:12:28 Core 1 connecting to 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 tester agent authorization error
2014.03.28 17:12:38 Core 1 connection closed.

テストの機会は、どちらかというと例外的に提供されています。リモートエージェントは無効、アンチウィルスはなし。
これはどのように扱われるのですか?

アンチウィルスはダメ?
 
ウイルス対策なし
 

オーバーシュートですが、もしかしたらこちらの方が早く答えが出るかもしれません。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

初心者の方からの質問

C-4, 2014.03.28 13:23

なぜ上記のコードがテスターでは動かず、リアルタイムでは動くのか、誰か説明してください!!?具 体的には、HistorySelect(0, TimeCurrent())の後、HistoryOrderGetIntegerプロパティがテスターで利用できない理由に興味があります...。

#include <Trade\Trade.mqh>

CTrade trade;

int OnInit()
{
   trade.LogLevel(LOG_LEVEL_NO);
   return INIT_SUCCEEDED;
}
void OnTick()
{
   if(!DetectNewBar())return;
   trade.Sell(0.1);
   HistorySelect(0, TimeCurrent());
   for(; dealsCount < HistoryDealsTotal(); dealsCount++)
   {
      ulong ticket = HistoryDealGetTicket(dealsCount);
      RecalcDeal(ticket);
   }
}

bool DetectNewBar(void)
{
   MqlRates bars[1];
   CopyRates(Symbol(), PERIOD_M1, 0, 1, bars);
   if(bars[0].time != timeLastBar)
   {
      timeLastBar = bars[0].time;
      //printf(expertName + " new bar detected: " + TimeToString(bars[0].time));
      return true;
   }
   return false;
}

void RecalcDeal(ulong ticketDeal)
{
   //History is selected in OnTick()!
   ulong ticketOrder = HistoryDealGetInteger(ticketDeal, DEAL_ORDER);
   //if(!HistoryOrderSelect(ticketOrder))
   //   printf("order not select.");
   ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketOrder, ORDER_TYPE);
   datetime time = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP); 
   ulong time_msc = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP_MSC); 
   printf("Order: " + (string)ticketOrder + " Type: " + EnumToString(type) + " Time: " + (string)time +
          " Time msc: " + (string)time_msc + " Total Orders: " + HistoryOrdersTotal());
}

int dealsCount;

datetime timeLastBar;

ストラテジーテスターでの画面。

デモでのリアルタイムのスクリーンショット。

p.s. 興味深いのは、テスターの最初の注文は正しく処理されるのに、他の注文は処理されないことです。また、HistroryOrderSelect(ticketOrder)をコメントすると、Strategy Testerでは注文が選択されていないというメッセージが表示され、Strategy Testerでは、最初の注文を除いてすべて動作し始めるという現象が発生します。


 

アプリケーション#986216の説明用スクリーンショット

 

内蔵のStringSplit 関数は正しく動作しますか?

void OnStart()
{
        string str = "|A|B|";
        string result[];
        int n = StringSplit( str, '|', result );
        Print( "количество полученных подстрок=", n );
        for ( int i = 0; i < n; i++ )
                Print( "подстрока(", i, ")=", result[ i ] );
}

は次のような結果をもたらします。

その結果、「|A」の場合の「|」文字は空の文字列とAを分離し、「B|」の場合はBと空の文字列を分離しないことが判明した。しかし、セパレータであるならば、何かを分離しなければならない。そうでなければ、「|A|B|」と 「|A|B」の 間に 違いはなく、 同時に「|A|B|」と A|B|」の間に違いが あることになる また、あるケースで空白行が許されるなら、他のケースでも許さ れるはずです。

 

正しく分割されるが、最後まで分割されない。また、最後に空白のトークンを発行すること。

servicedeskに入れる。

 

私の評価がおかしいのか、コードのダウンロードカウンターがダウンしているようです。

おっと、これはエラーではありませんね...。MQL4からのコードをレーティングに追加しましたか?

 

はい、MQL4のコードベースを新しいMQL5ウェブサイトエンジンに移行する作業を行っています。

プラットフォームの統一を図っています。

 
A100:

内蔵のStringSplit関数は正しく動作しますか?

は次のような結果をもたらします。

その結果、「|A」の場合の「|」文字は空の文字列とAを分離し、「B|」の場合はBと空の文字列を分離しないことが判明した。しかし、セパレータであるならば、何かを分離しなければならない。そうでなければ、「|A|B|」と 「|A|B」の 間に 違いはなく、 同時に「|A|B|」と A|B|」の間に違いが あることになる また、あるケースで空白行が許されるなら、他のケースでも許さ れるはずです。

メッセージありがとうございます、端末4と5で修正しました。