mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-07-28 02:57:56 +00:00
48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
using log4net;
|
|
|
|
namespace MTApiService
|
|
{
|
|
public class Mt5Expert : MtExpert
|
|
{
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(MtExpert));
|
|
private const int StopExpertInterval = 2000; // 2 sec for testing mode
|
|
private readonly System.Timers.Timer _stopTimer = new System.Timers.Timer();
|
|
|
|
|
|
public Mt5Expert(int handle, string symbol, double bid, double ask, IMetaTraderHandler mtHandler, bool isTestMode) :
|
|
base(handle, symbol, bid, ask, mtHandler)
|
|
{
|
|
IsTestMode = isTestMode;
|
|
_stopTimer.Interval = StopExpertInterval;
|
|
_stopTimer.Elapsed += _stopTimer_Elapsed;
|
|
}
|
|
|
|
public bool IsTestMode { get; }
|
|
|
|
public override void UpdateQuote(MtQuote quote)
|
|
{
|
|
Log.Debug("UpdateQuote: begin.");
|
|
|
|
base.UpdateQuote(quote);
|
|
|
|
if (IsTestMode)
|
|
{
|
|
//reset timer
|
|
_stopTimer.Stop();
|
|
_stopTimer.Start();
|
|
}
|
|
|
|
Log.Debug("UpdateQuote: end.");
|
|
}
|
|
|
|
private void _stopTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
|
{
|
|
Log.Debug("_stopTimer_Elapsed: begin.");
|
|
|
|
Log.Warn("Mt5Expert has received new tick during 2 sec in testing mode. The possible cause: user has stopped the tester manually in MetaTrader 5.");
|
|
Deinit();
|
|
|
|
Log.Debug("_stopTimer_Elapsed: end.");
|
|
}
|
|
}
|
|
} |