mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-15 19:58:10 +00:00
MtApi5: added fleld 'Flags' into MqlTick
This commit is contained in:
@@ -5,12 +5,18 @@ namespace MtApi5
|
|||||||
public class MqlTick
|
public class MqlTick
|
||||||
{
|
{
|
||||||
public MqlTick(DateTime time, double bid, double ask, double last, ulong volume)
|
public MqlTick(DateTime time, double bid, double ask, double last, ulong volume)
|
||||||
|
: this(time, bid, ask, last, volume, 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public MqlTick(DateTime time, double bid, double ask, double last, ulong volume, ENUM_TICK_FLAGS flags)
|
||||||
{
|
{
|
||||||
MtTime = Mt5TimeConverter.ConvertToMtTime(time);
|
MtTime = Mt5TimeConverter.ConvertToMtTime(time);
|
||||||
this.bid = bid;
|
this.bid = bid;
|
||||||
this.ask = ask;
|
this.ask = ask;
|
||||||
this.last = last;
|
this.last = last;
|
||||||
this.volume = volume;
|
this.volume = volume;
|
||||||
|
this.flags = flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MqlTick()
|
public MqlTick()
|
||||||
@@ -27,6 +33,7 @@ namespace MtApi5
|
|||||||
last = tick.Last;
|
last = tick.Last;
|
||||||
volume = tick.Volume;
|
volume = tick.Volume;
|
||||||
volume_real = tick.VolumeReal;
|
volume_real = tick.VolumeReal;
|
||||||
|
flags = (ENUM_TICK_FLAGS)tick.Flags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,6 +44,7 @@ namespace MtApi5
|
|||||||
public double last { get; set; } // Price of the last deal (Last)
|
public double last { get; set; } // Price of the last deal (Last)
|
||||||
public ulong volume { get; set; } // Volume for the current Last price
|
public ulong volume { get; set; } // Volume for the current Last price
|
||||||
public double volume_real { get; set; } // Volume for the current Last price with greater accuracy
|
public double volume_real { get; set; } // Volume for the current Last price with greater accuracy
|
||||||
|
public ENUM_TICK_FLAGS flags { get; set; } // Tick flags (used for analyzing to find out what data have been changed)
|
||||||
|
|
||||||
public DateTime time => Mt5TimeConverter.ConvertFromMtTime(MtTime);
|
public DateTime time => Mt5TimeConverter.ConvertFromMtTime(MtTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -862,6 +862,18 @@ namespace MtApi5
|
|||||||
STO_CLOSECLOSE = 1 //Calculation is based on Close/Close prices
|
STO_CLOSECLOSE = 1 //Calculation is based on Close/Close prices
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum ENUM_TICK_FLAGS
|
||||||
|
{
|
||||||
|
TICK_FLAG_NONE = 0,
|
||||||
|
TICK_FLAG_BID = 2, // Tick has changed a Bid price
|
||||||
|
TICK_FLAG_ASK = 4, // Tick has changed an Ask price
|
||||||
|
TICK_FLAG_LAST = 8, // Tick has changed the last deal price
|
||||||
|
TICK_FLAG_VOLUME = 16, // Tick has changed a volume
|
||||||
|
TICK_FLAG_BUY = 32, // Tick is a result of a buy deal
|
||||||
|
TICK_FLAG_SELL = 64 // Tick is a result of a sell deal
|
||||||
|
}
|
||||||
|
|
||||||
#endregion //Price Constants
|
#endregion //Price Constants
|
||||||
|
|
||||||
#region Smoothing Methods
|
#region Smoothing Methods
|
||||||
|
|||||||
@@ -8,5 +8,6 @@
|
|||||||
public double Last { get; set; } // Price of the last deal (Last)
|
public double Last { get; set; } // Price of the last deal (Last)
|
||||||
public ulong Volume { get; set; } // Volume for the current Last price
|
public ulong Volume { get; set; } // Volume for the current Last price
|
||||||
public double VolumeReal { get; set; } // Volume for the current Last price with greater accuracy
|
public double VolumeReal { get; set; } // Volume for the current Last price with greater accuracy
|
||||||
|
public uint Flags { get; set; } // Tick flags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1071,7 +1071,7 @@ namespace MtApi5TestClient
|
|||||||
{
|
{
|
||||||
foreach (var v in result)
|
foreach (var v in result)
|
||||||
{
|
{
|
||||||
var tickStr = $"time = {v.time}, bid = {v.bid}, ask = {v.ask}, last = {v.last}, volume = {v.volume}";
|
var tickStr = $"time = {v.time}, bid = {v.bid}, ask = {v.ask}, last = {v.last}, volume = {v.volume}, flags = {v.flags}";
|
||||||
TimeSeriesResults.Add(tickStr);
|
TimeSeriesResults.Add(tickStr);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1159,6 +1159,7 @@ namespace MtApi5TestClient
|
|||||||
AddLog($"SymbolInfoTick(EURUSD) tick.last = {result.last}");
|
AddLog($"SymbolInfoTick(EURUSD) tick.last = {result.last}");
|
||||||
AddLog($"SymbolInfoTick(EURUSD) tick.volume = {result.volume}");
|
AddLog($"SymbolInfoTick(EURUSD) tick.volume = {result.volume}");
|
||||||
AddLog($"SymbolInfoTick(EURUSD) tick.volume_real = {result.volume_real}");
|
AddLog($"SymbolInfoTick(EURUSD) tick.volume_real = {result.volume_real}");
|
||||||
|
AddLog($"SymbolInfoTick(EURUSD) tick.flags = {result.flags}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void ExecuteSymbolInfoSessionQuote(object o)
|
private async void ExecuteSymbolInfoSessionQuote(object o)
|
||||||
|
|||||||
Binary file not shown.
@@ -3801,6 +3801,21 @@ bool JsonToMqlTradeRequest(JSONObject *jo, MqlTradeRequest& request)
|
|||||||
|
|
||||||
JSONObject* MqlTickToJson(const MqlTick& tick)
|
JSONObject* MqlTickToJson(const MqlTick& tick)
|
||||||
{
|
{
|
||||||
|
// MT5 can add some additional non-documented flags, so we need to filter required documented flags only
|
||||||
|
int summ=0;
|
||||||
|
if((tick.flags & TICK_FLAG_BID)==TICK_FLAG_BID)
|
||||||
|
summ+=TICK_FLAG_BID;
|
||||||
|
if((tick.flags & TICK_FLAG_ASK)==TICK_FLAG_ASK)
|
||||||
|
summ+=TICK_FLAG_ASK;
|
||||||
|
if((tick.flags & TICK_FLAG_LAST)==TICK_FLAG_LAST)
|
||||||
|
summ+=TICK_FLAG_LAST;
|
||||||
|
if((tick.flags & TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME)
|
||||||
|
summ+=TICK_FLAG_VOLUME;
|
||||||
|
if((tick.flags & TICK_FLAG_BUY)==TICK_FLAG_BUY)
|
||||||
|
summ+=TICK_FLAG_BUY;
|
||||||
|
if((tick.flags & TICK_FLAG_SELL)==TICK_FLAG_SELL)
|
||||||
|
summ+=TICK_FLAG_SELL;
|
||||||
|
|
||||||
JSONObject *jo = new JSONObject();
|
JSONObject *jo = new JSONObject();
|
||||||
jo.put("Time", new JSONNumber((long)tick.time));
|
jo.put("Time", new JSONNumber((long)tick.time));
|
||||||
jo.put("Bid", new JSONNumber(tick.bid));
|
jo.put("Bid", new JSONNumber(tick.bid));
|
||||||
@@ -3808,6 +3823,7 @@ JSONObject* MqlTickToJson(const MqlTick& tick)
|
|||||||
jo.put("Last", new JSONNumber(tick.last));
|
jo.put("Last", new JSONNumber(tick.last));
|
||||||
jo.put("Volume", new JSONNumber(tick.volume));
|
jo.put("Volume", new JSONNumber(tick.volume));
|
||||||
jo.put("VolumeReal", new JSONNumber(tick.volume_real));
|
jo.put("VolumeReal", new JSONNumber(tick.volume_real));
|
||||||
|
jo.put("Flags", new JSONNumber(summ));
|
||||||
return jo;
|
return jo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user