mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-09 17:01:02 +00:00
Added projects MtApi4 and MtApi5
This commit is contained in:
Executable
+145
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace TestServer
|
||||
{
|
||||
enum MtExpertType
|
||||
{
|
||||
MtApiSymbol,
|
||||
MtApiControl,
|
||||
MtQuoteExpert
|
||||
}
|
||||
|
||||
abstract class MtExpert
|
||||
{
|
||||
public MtExpert(MtExpertType expertType, IMetaTrader metatrader)
|
||||
{
|
||||
ExpertType = expertType;
|
||||
mMetaTrader = metatrader;
|
||||
}
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Init()
|
||||
{
|
||||
Action a = () =>
|
||||
{
|
||||
mIsStartFuncBlocked = true;
|
||||
|
||||
init();
|
||||
|
||||
mIsStartFuncBlocked = false;
|
||||
};
|
||||
a.BeginInvoke(null, null);
|
||||
}
|
||||
|
||||
public void Deinit()
|
||||
{
|
||||
Action a = () =>
|
||||
{
|
||||
deinit();
|
||||
};
|
||||
a.BeginInvoke(null, null);
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Action a = () =>
|
||||
{
|
||||
if (mIsStartFuncBlocked == true)
|
||||
return;
|
||||
|
||||
mIsStartFuncBlocked = true;
|
||||
|
||||
start();
|
||||
|
||||
mIsStartFuncBlocked = false;
|
||||
|
||||
};
|
||||
a.BeginInvoke(null, null);
|
||||
}
|
||||
|
||||
public void SetStopped()
|
||||
{
|
||||
mIsStopped = true;
|
||||
}
|
||||
|
||||
public bool IsStopped()
|
||||
{
|
||||
return mIsStopped;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Expert Methods
|
||||
protected abstract void init();
|
||||
protected abstract void deinit();
|
||||
protected abstract void start();
|
||||
#endregion
|
||||
|
||||
#region MetaTrader Functions
|
||||
protected void Print(string msg)
|
||||
{
|
||||
if (mMetaTrader != null)
|
||||
mMetaTrader.Print(msg);
|
||||
}
|
||||
|
||||
protected void MessageBoxA(string msg)
|
||||
{
|
||||
if (mMetaTrader != null)
|
||||
mMetaTrader.MessageBoxA(msg);
|
||||
}
|
||||
|
||||
protected string AccountName()
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.AccountName() : string.Empty;
|
||||
}
|
||||
|
||||
protected int AccountNumber()
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.AccountNumber() : -1;
|
||||
}
|
||||
|
||||
protected bool IsDemo()
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.IsDemo() : false;
|
||||
}
|
||||
|
||||
public bool IsConnected()
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.IsConnected() : false;
|
||||
}
|
||||
|
||||
protected int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit
|
||||
, string comment, int magic, int expiration, int arrow_color)
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color) : -1;
|
||||
}
|
||||
|
||||
protected bool OrderClose(int ticket, double lots, double price, int slippage, int color)
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.OrderClose(ticket, lots, price, slippage, color) : false;
|
||||
}
|
||||
|
||||
protected string ErrorDescription(int errorCode)
|
||||
{
|
||||
return (mMetaTrader != null) ? mMetaTrader.ErrorDescription(errorCode) : string.Empty;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
public MtExpertType ExpertType { get; private set; }
|
||||
|
||||
public string Symbol { get; set; }
|
||||
public double Bid { get; set; }
|
||||
public double Ask { get; set; }
|
||||
#endregion
|
||||
|
||||
#region Fields
|
||||
private readonly IMetaTrader mMetaTrader;
|
||||
private volatile bool mIsStopped = false;
|
||||
private volatile bool mIsStartFuncBlocked = false;
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user