8 Commits

Author SHA1 Message Date
Gunther Schulz e5e4766455 add feature to correct historical tick data
some brokers (markets.com) deliver tick incorrect historical tick data. this commit attempts to automatically correct the tick price data
2020-11-22 13:50:14 +01:00
Gunther Schulz 6e05a9d27e fix indicator plots starting at the wrong timestamp under certain cond.
plots would shift if the processing of indicaters would shift, if a new candle would for in MT while processing of indicator data of the client was still in process. The fix ensure, that any new indicator data starts at the correct timestamp.
2020-11-22 13:50:14 +01:00
Gunther Schulz 746c03196f improve indicator display for more clarity
Removed unused buffer value placeholder
Removed 0 as first indicator value
2020-11-22 13:50:14 +01:00
Gunther Schulz a05ddf7530 add support for indicator short name
The actual code change is minor, but unfortunately there was also some additional reformating introdued, which I missed
shortened indicator refresh. indicators draw much faster now
2020-11-22 13:50:14 +01:00
Gunther Schulz 1c47fc12d1 fix bug tthat every second tick was dropped
Every other tick used to be dropped before this fix, because of incrementing the counter twice in a loop
2020-11-22 13:24:09 +01:00
Gunther Schulz 1a0ce7af3a fix incorrect setting of high water mark
Socket settings need to be set before connecting to the socket
Also, increase high water mark
2020-11-22 13:21:39 +01:00
Gunther Schulz 08b83713af fix compiler failure 2020-11-22 13:15:51 +01:00
Gunther Schulz 775a962d38 format code with new MT5 code styler 2020-11-22 13:14:33 +01:00
2 changed files with 24 additions and 28 deletions
+17 -18
View File
@@ -109,6 +109,23 @@ ControlErrors mControl;
//+------------------------------------------------------------------+
bool BindSockets()
{
sysSocket.setLinger(1000);
dataSocket.setLinger(1000);
liveSocket.setLinger(1000);
streamSocket.setLinger(1000);
indicatorDataSocket.setLinger(1000);
chartDataSocket.setLinger(1000);
chartIndicatorDataSocket.setLinger(1000);
// Number of messages to buffer in RAM.
sysSocket.setSendHighWaterMark(1000);
dataSocket.setSendHighWaterMark(1000);
liveSocket.setSendHighWaterMark(1000);
streamSocket.setSendHighWaterMark(1000);
indicatorDataSocket.setSendHighWaterMark(1000);
chartDataSocket.setReceiveHighWaterMark(1000); // TODO confirm settings
chartIndicatorDataSocket.setReceiveHighWaterMark(1000);
bool result = false;
result = sysSocket.bind(StringFormat("tcp://%s:%d", HOST,SYS_PORT));
if(result == false)
@@ -174,23 +191,6 @@ bool BindSockets()
Print("Bound 'JsonAPIIndicator Data' socket on port ", CHART_INDICATOR_DATA_PORT);
}
sysSocket.setLinger(1000);
dataSocket.setLinger(1000);
liveSocket.setLinger(1000);
streamSocket.setLinger(1000);
indicatorDataSocket.setLinger(1000);
chartDataSocket.setLinger(1000);
chartIndicatorDataSocket.setLinger(1000);
// Number of messages to buffer in RAM.
sysSocket.setSendHighWaterMark(1);
dataSocket.setSendHighWaterMark(5);
liveSocket.setSendHighWaterMark(1);
streamSocket.setSendHighWaterMark(50);
indicatorDataSocket.setSendHighWaterMark(5);
chartDataSocket.setReceiveHighWaterMark(1); // TODO confirm settings
chartIndicatorDataSocket.setReceiveHighWaterMark(1);
return result;
}
@@ -1122,7 +1122,6 @@ void HistoryInfo(CJAVal &dataObject)
data[i][0]=(long) tickArray[i].time_msc;
data[i][1]=(double) tickArray[i].bid;
data[i][2]=(double) tickArray[i].ask;
i++;
}
d["data"].Set(data);
}
+7 -10
View File
@@ -42,7 +42,12 @@ bool setFormingCandleBlank = true;
int OnInit()
{
// TODO subscribe only to own IndicatorId topic
// Subscribe to all topics
chartSubscriptionSocket.setSubscribe("");
chartSubscriptionSocket.setLinger(1000);
// Number of messages to buffer in RAM.
chartSubscriptionSocket.setReceiveHighWaterMark(1000); // TODO confirm settings
bool result = chartSubscriptionSocket.connect(StringFormat("tcp://%s:%d", HOST, CHART_SUB_PORT));
if(result == false)
{
@@ -50,15 +55,7 @@ int OnInit()
}
else
{
if(debug)
Print("Accepting Chart Indicator data on port ", CHART_SUB_PORT);
// TODO subscribe only to own IndicatorId topic
// Subscribe to all topics
chartSubscriptionSocket.setSubscribe("");
//chartSubscriptionSocket.setLinger(1000);
chartSubscriptionSocket.setLinger(10000);
// Number of messages to buffer in RAM.
chartSubscriptionSocket.setReceiveHighWaterMark(5); // TODO confirm settings
Print("Accepting Chart Indicator data on port ", CHART_SUB_PORT);
}
//--- indicator buffers mapping;