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

 
テスター内のSellLimitが期限切れやバックテスト終了により削除された場合、その有効期限が誤って保留中の注文の日付と同じになってしまう。

TRADE_ACTION_MODIFY で有効期限を設定しても、テスターでは発動しない。

プレイバック
void OnInit()
{
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_PENDING;
  
  Request.symbol = Symbol();
  Request.volume = 1;
  Request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
  
  Request.type = ORDER_TYPE_SELL_LIMIT;

  MqlTradeResult Result;
  
  if (OrderSend(Request, Result))
  {
    Request.action = TRADE_ACTION_MODIFY;
    Request.order = Result.order;
    
    Request.type_time = ORDER_TIME_SPECIFIED;
    Request.expiration = TimeCurrent() + 10000;
    
    if (OrderSend(Request, Result))
      if (OrderSelect(Request.order))
        Print("SetExpiration = " + (string)(datetime)OrderGetInteger(ORDER_TIME_EXPIRATION)); // установили дату экспирации        
  }
}

void OnDeinit( const int reason )
{  
  if (HistorySelect(0, TimeCurrent()))
  {
    const ulong Ticket = HistoryOrderGetTicket(0);
   
    if (Ticket > 0)
    {
      // Дата экспирации изменилась - стала равна дате установки ордера!
      Print("NowExpiration = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_EXPIRATION));
     
      // При этом ордер по ранее установленной дате экспирации не удалился!     
      Print("DeleteTime = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_DONE));
    }
  }
}

 
Andrey Dik:

履歴データはかなり容量を食う(これは苦情ではなく、発言です)。複数の端末を使用する必要があり、それぞれの端末にギガバイト単位の履歴が溜まり、テスターと端末のフォルダに履歴が重複しています。

履歴ファイルを1つのフォルダにまとめて、ターミナルで参照フォルダを指定することは可能でしょうか?異なる端末間での履歴のアクセスに問題が発生しないか?

試してみました。現在では、複数の端末とそのテスターが、履歴のある1つのフォルダにアクセスしています。みたいな末端の不満は別として。

2016.07.19 16:39:02.276 Spreads config file open error [The process cannot access file because it is being used by another process](他のプロセスによって使用されているため、プロセスはファイルにアクセスできません。(32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbolsspreads-*****.dat][The process cannot access file because it is being used by another process.このファイルは他のプロセスによって使用されているため、プロセスはアクセスできません。(32)]

動作に問題はないと思います。やったー!...数百ギガバイトのディスク容量が節約できます。

サービスデスクからは、共有データアクセスでこれを行うにはリスクがあると警告されています。


 
Andrey Dik:

試してみました。現在では、複数の端末とそのテスターが1つの履歴フォルダにアクセスするようになっています。みたいな末端の不満は別として。

2016.07.19 16:39:02.276 Spreads config file open error [The process cannot access file because it is being used by another process](他のプロセスによって使用されているため、プロセスはファイルにアクセスできません。(32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbolsspreads-*****.dat][The process cannot access file because it is being used by another process]です。(32)]

動作に問題はないと思います。やったー!...数百ギガバイトのディスク容量が節約できます。

サービスデスクからは、共有データアクセスでこれを行うにはリスクがあると警告されています。


どうやったんだろう?
 
coderex:
また、それをどのように実践したのでしょうか。

Basesという別フォルダを作り、そこに片方の端末の履歴を移しました。その後、すべての端末とそのテスターで、履歴のある本当のフォルダの代わりに、共通のフォルダにJunctionのようなリンクを配置しました。

特に、1つのVPSで複数の端末を使用する場合、より小さなディスク容量を選択することで、実質的なコスト削減が可能になります。

 
テスターオフラインで作業しています。何十万件ものログが詰まらないようにするにはどうしたらいいですか?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

 
標準ライブラリは どのようにして ::OrdersTotal() を呼ばないようにしたのですか?
 
fxsaber:
テスターオフラインで作業しています。ログが何十万件と詰まらないようにするにはどうしたらいいですか?

コミュニティ設定(メインメニュー- ツール - 設定 - コミュニティタブ)で、認証データを消去します。
 
Slawa:
コミュニティ設定(メインメニュー - ツール - 設定 - コミュニティタブ)で、認証データを消去してください。
そこで入力したことはない。そういう問題じゃないんです。
 

トレーディングパネルはないのですか?あるいは、どのグループに入れるべきでしょうか?

 
Vladimir Pastushak:

トレーディングパネルはないのですか?あるいは、どのグループに属しているのか?

ユーティリティを選択する必要があります。たしかに、そこにはカテゴリーがまったくない。