cleanup
This commit is contained in:
+128
-45
@@ -44,9 +44,9 @@ int SYS_PORT=15555;
|
||||
int DATA_PORT=15556;
|
||||
int LIVE_PORT=15557;
|
||||
int STR_PORT=15558;
|
||||
int IND_DATA_PORT=15559;
|
||||
int CHART_LIVE_PORT=15560;
|
||||
int PUB_CHART_LIVE_PORT=15562;
|
||||
int INDICATOR_DATA_PORT=15559;
|
||||
int CHART_DATA_PORT=15560;
|
||||
int CHART_INDICATOR_PORT=15562;
|
||||
|
||||
// ZeroMQ Cnnections
|
||||
Context context("MQL5 JSON API");
|
||||
@@ -55,15 +55,15 @@ Socket dataSocket(context,ZMQ_PUSH);
|
||||
Socket liveSocket(context,ZMQ_PUSH);
|
||||
Socket streamSocket(context,ZMQ_PUSH);
|
||||
Socket indicatorDataSocket(context,ZMQ_PUSH);
|
||||
Socket chartLiveSocket(context,ZMQ_PULL);
|
||||
Socket pubChartLiveSocket(context,ZMQ_PUB);
|
||||
Socket chartDataSocket(context,ZMQ_PULL);
|
||||
Socket chartIndicatorSocket(context,ZMQ_PUB);
|
||||
|
||||
// Global variables
|
||||
// Global variables \\
|
||||
bool debug = false;
|
||||
bool liveStream = true;
|
||||
bool connectedFlag= true;
|
||||
bool connectedFlag = true;
|
||||
int deInitReason = -1;
|
||||
double chartAttached = ChartID();
|
||||
double chartAttached = ChartID(); // Chart id where the expert is attached to
|
||||
|
||||
// Variables for handling price data stream
|
||||
struct SymbolSubscription {
|
||||
@@ -76,29 +76,30 @@ int symbolSubscriptionCount = 0;
|
||||
|
||||
// Variables for controlling indicators
|
||||
struct Indicator {
|
||||
long id;
|
||||
string indicatorId;
|
||||
int indicatorHandle;
|
||||
int indicatorParamCount;
|
||||
int indicatorBufferCount;
|
||||
long id; // Internal id
|
||||
string indicatorId; // UUID
|
||||
int indicatorHandle; // Internal id/handle
|
||||
int indicatorParamCount; // Number of parameters to be passed to the indicator
|
||||
int indicatorBufferCount; // Numnber of buffers to be returned bythe indicator
|
||||
};
|
||||
Indicator indicators[];
|
||||
int indicatorCount = 0;
|
||||
|
||||
// Variables for controlling chart
|
||||
struct ChartWindow {
|
||||
long id;
|
||||
string chartId;
|
||||
string indicatorId;
|
||||
int indicatorHandle;
|
||||
long id; // Internal id
|
||||
string chartId; // UUID
|
||||
string indicatorId; // UUID
|
||||
int indicatorHandle; // Internal id/handle
|
||||
};
|
||||
ChartWindow chartWindows[];
|
||||
int chartWindowCount = 0;
|
||||
|
||||
// Refresh chart windows interval. OnTimer function of indicatore JsonAPIIndicator gets triggered on each interval
|
||||
int chartWindowTimerInterval = 100;
|
||||
int chartWindowTimerCounter = 0;
|
||||
// Refresh chart window interval for JsonAPIIndicator
|
||||
int chartWindowTimerInterval = 100; // Cycles of the globally set EventSetMillisecondTimer interval
|
||||
int chartWindowTimerCounter = 0; // Keeps track of the current cycle
|
||||
|
||||
// Error handling
|
||||
ControlErrors mControl;
|
||||
|
||||
//string chartWindowObjects[];
|
||||
@@ -119,20 +120,20 @@ bool BindSockets(){
|
||||
if (result == false) { return result; } else {Print("Bound 'Live' socket on port ", LIVE_PORT);}
|
||||
result = streamSocket.bind(StringFormat("tcp://%s:%d", HOST,STR_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'Streaming' socket on port ", STR_PORT);}
|
||||
result = indicatorDataSocket.bind(StringFormat("tcp://%s:%d", HOST,IND_DATA_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'Indicator Data' socket on port ", IND_DATA_PORT);}
|
||||
result = chartLiveSocket.bind(StringFormat("tcp://%s:%d", HOST,CHART_LIVE_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'Chart Live' socket on port ", CHART_LIVE_PORT);}
|
||||
result = pubChartLiveSocket.bind(StringFormat("tcp://%s:%d", HOST,PUB_CHART_LIVE_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'PUB Chart Live' socket on port ", PUB_CHART_LIVE_PORT);}
|
||||
result = indicatorDataSocket.bind(StringFormat("tcp://%s:%d", HOST,INDICATOR_DATA_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'Indicator Data' socket on port ", INDICATOR_DATA_PORT);}
|
||||
result = chartDataSocket.bind(StringFormat("tcp://%s:%d", HOST,CHART_DATA_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'Chart Data' socket on port ", CHART_DATA_PORT);}
|
||||
result = chartIndicatorSocket.bind(StringFormat("tcp://%s:%d", HOST,CHART_INDICATOR_PORT));
|
||||
if (result == false) { return result; } else {Print("Bound 'JsonAPIIndicator Data' socket on port ", CHART_INDICATOR_PORT);}
|
||||
|
||||
sysSocket.setLinger(1000);
|
||||
dataSocket.setLinger(1000);
|
||||
liveSocket.setLinger(1000);
|
||||
streamSocket.setLinger(1000);
|
||||
indicatorDataSocket.setLinger(1000);
|
||||
chartLiveSocket.setLinger(1000);
|
||||
pubChartLiveSocket.setLinger(1000);
|
||||
chartDataSocket.setLinger(1000);
|
||||
chartIndicatorSocket.setLinger(1000);
|
||||
|
||||
// Number of messages to buffer in RAM.
|
||||
sysSocket.setSendHighWaterMark(1);
|
||||
@@ -140,8 +141,8 @@ bool BindSockets(){
|
||||
liveSocket.setSendHighWaterMark(1);
|
||||
streamSocket.setSendHighWaterMark(50);
|
||||
indicatorDataSocket.setSendHighWaterMark(5);
|
||||
chartLiveSocket.setReceiveHighWaterMark(1); // TODO confirm settings
|
||||
pubChartLiveSocket.setReceiveHighWaterMark(1);
|
||||
chartDataSocket.setReceiveHighWaterMark(1); // TODO confirm settings
|
||||
chartIndicatorSocket.setReceiveHighWaterMark(1);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -201,18 +202,18 @@ void OnDeinit(const int reason){
|
||||
if (reason != REASON_CHARTCHANGE){
|
||||
Print(__FUNCTION__," Deinitialization reason: ", getUninitReasonText(reason));
|
||||
|
||||
Print("Unbinding 'System' socket on port ", SYS_PORT,"..");
|
||||
sysSocket.unbind(StringFormat("tcp://%s:%d", HOST,SYS_PORT));
|
||||
Print("Unbinding 'Data' socket on port ", DATA_PORT,"..");
|
||||
dataSocket.unbind(StringFormat("tcp://%s:%d", HOST,DATA_PORT));
|
||||
Print("Unbinding 'System' socket on port ", SYS_PORT, "..");
|
||||
sysSocket.unbind(StringFormat("tcp://%s:%d", HOST, SYS_PORT));
|
||||
Print("Unbinding 'Data' socket on port ", DATA_PORT, "..");
|
||||
dataSocket.unbind(StringFormat("tcp://%s:%d", HOST, DATA_PORT));
|
||||
Print("Unbinding 'Live' socket on port ", LIVE_PORT, "..");
|
||||
liveSocket.unbind(StringFormat("tcp://%s:%d", HOST,LIVE_PORT));
|
||||
liveSocket.unbind(StringFormat("tcp://%s:%d", HOST, LIVE_PORT));
|
||||
Print("Unbinding 'Streaming' socket on port ", STR_PORT, "..");
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST,STR_PORT));
|
||||
Print("Unbinding 'CHart' socket on port ", STR_PORT, "..");
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST,CHART_LIVE_PORT));
|
||||
Print("Unbinding 'pub chart' socket on port ", STR_PORT, "..");
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST,PUB_CHART_LIVE_PORT));
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST, STR_PORT));
|
||||
Print("Unbinding 'Chart Data' socket on port ", STR_PORT, "..");
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST, CHART_DATA_PORT));
|
||||
Print("Unbinding 'JsonAPIIndicator Data' socket on port ", STR_PORT, "..");
|
||||
streamSocket.unbind(StringFormat("tcp://%s:%d", HOST, CHART_INDICATOR_PORT));
|
||||
|
||||
// Shutdown ZeroMQ Context
|
||||
context.shutdown();
|
||||
@@ -374,11 +375,11 @@ void OnTimer(){
|
||||
|
||||
// Publish indicator values for the JsonAPIIndicator indicator
|
||||
ZmqMsg chartMsg;
|
||||
chartLiveSocket.recv(chartMsg, true);
|
||||
chartDataSocket.recv(chartMsg, true);
|
||||
if(chartMsg.size()>0){
|
||||
Print(chartMsg.getData());
|
||||
pubChartLiveSocket.send(chartMsg,true);
|
||||
ResetLastError();
|
||||
chartIndicatorSocket.send(chartMsg,true);
|
||||
//ResetLastError();
|
||||
}
|
||||
|
||||
// Trigger the indicator JsonAPIIndicator to check for new Messages
|
||||
@@ -674,6 +675,7 @@ void OpenChart(CJAVal &dataObject){
|
||||
chartWindows[idx].id = ChartOpen(symbol, period);
|
||||
|
||||
CJAVal message;
|
||||
message["error"]=(bool) false;
|
||||
message["chartId"] = (string) chartId;
|
||||
|
||||
string t=message.Serialize();
|
||||
@@ -682,7 +684,7 @@ void OpenChart(CJAVal &dataObject){
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Add JsonAPIIndicator indicator chart to chart |
|
||||
//| Add JsonAPIIndicator indicator to chart |
|
||||
//+------------------------------------------------------------------+
|
||||
void AddIndicatorChartToChart(CJAVal &dataObject){
|
||||
|
||||
@@ -706,6 +708,7 @@ void AddIndicatorChartToChart(CJAVal &dataObject){
|
||||
}
|
||||
if(!CheckError(__FUNCTION__)) {
|
||||
CJAVal message;
|
||||
message["error"]=(bool) false;
|
||||
message["chartId"] = (string) chartIdStr;
|
||||
|
||||
string t=message.Serialize();
|
||||
@@ -717,7 +720,7 @@ void AddIndicatorChartToChart(CJAVal &dataObject){
|
||||
//+------------------------------------------------------------------+
|
||||
//| Draw on chart |
|
||||
//+------------------------------------------------------------------+
|
||||
void ChartDraw(CJAVal &dataObject){
|
||||
void ChartDrawY(CJAVal &dataObject){
|
||||
/*
|
||||
Print("drawchart");
|
||||
|
||||
@@ -866,6 +869,86 @@ void ChartDrawX(CJAVal &dataObject){
|
||||
//ChartRedraw(chart_id);
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Draw on chart |
|
||||
//+------------------------------------------------------------------+
|
||||
void ChartDraw(CJAVal &dataObject){
|
||||
|
||||
// DONT DRAW, if chartid noes not exist any more
|
||||
|
||||
string id=dataObject["id"].ToStr();
|
||||
|
||||
string graphicsType=dataObject["data"]["graphicstype"].ToStr();
|
||||
|
||||
if (graphicsType=="line") {
|
||||
string objectId=dataObject["data"]["objectId"].ToStr();
|
||||
datetime fromDate=dataObject["data"]["fromDate"].ToInt();
|
||||
datetime toDate=dataObject["data"]["toDate"].ToInt();
|
||||
double fromPrice=dataObject["data"]["fromPrice"].ToDbl();
|
||||
double toPrice=dataObject["data"]["toPrice"].ToDbl();
|
||||
|
||||
|
||||
/*
|
||||
double params[];
|
||||
for(int i=0;i<dataObject["params"].Size();i++){
|
||||
ArrayResize(params, i+1);
|
||||
params[i] = dataObject["params"][i].ToDbl();
|
||||
}
|
||||
*/
|
||||
//int paramColor = dataObject["params"]["color"]
|
||||
|
||||
int idx = GetChartWindowIdxByChartWindowId(id);
|
||||
|
||||
//int thisChartWindowObjectsCount = ArraySize(chartWindowObjects);
|
||||
//ArrayResize(chartWindowObjects, thisChartWindowObjectsCount+1);
|
||||
//chartWindowObjects[thisChartWindowObjectsCount] = objectId; // do I need this for deinit/reset? Probably Closing chart is sufficient
|
||||
|
||||
long chart_id = chartWindows[idx].id;
|
||||
int window = 0;
|
||||
//CChartObject object;
|
||||
//bool success = ObjectCreate(chart_id,objectId,OBJ_TREND,window,fromDate,fromPrice,toDate,toPrice); // add color param
|
||||
// ChartRedraw(chart_id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// datetime time1 = 1581891300;
|
||||
// double price1 = 1.08346;
|
||||
// datetime time2 = 1581891600;
|
||||
// double price2 = 1.08354;
|
||||
|
||||
//chart_id = ChartOpen("EURUSD",PERIOD_M5);
|
||||
//Print(chart_id);
|
||||
/*
|
||||
bool CChartObjectTrend::Create(long chart_id,string name,int window,
|
||||
datetime time1,double price1,datetime time2,double price2)
|
||||
{
|
||||
bool result=ObjectCreate(chart_id,name,OBJ_TREND,window,time1,price1,time2,price2);
|
||||
if(result) result&=Attach(chart_id,name,window,2);
|
||||
//---
|
||||
return(result);
|
||||
}
|
||||
*/
|
||||
// CChartObject object;
|
||||
//ObjectCreate(chart_id,"ellipse",OBJ_ELLIPSE,window,time1,price1,time2,price2,time2,price2+0.00005);
|
||||
//ObjectCreate(chart_id,"ellipse",OBJ_ELLIPSE,window,time1-100,price1,time1,price1+0.00010,time1+200,price1);
|
||||
//ObjectCreate(chart_id,"trend",OBJ_TREND,window,time1,price1,time2,price2);
|
||||
// ObjectCreate(chart_id,"reactangle",OBJ_TREND,window,time1,price1+0.00010,time2,price2+0.00020);
|
||||
|
||||
|
||||
//--- attach chart object
|
||||
/*
|
||||
if(!object.Attach(ChartID(),"MyObject",0,2))
|
||||
{
|
||||
printf("Object attach error");
|
||||
|
||||
}
|
||||
*/
|
||||
//ChartSetSymbolPeriod(ChartID(), Symbol(),PERIOD_M5);
|
||||
//ChartRedraw(chart_id);
|
||||
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Account information |
|
||||
//+------------------------------------------------------------------+
|
||||
|
||||
+346
-346
@@ -33,350 +33,350 @@ int StringToEnum(string in,ENUM &out)
|
||||
}
|
||||
|
||||
|
||||
int StringToEnumInt(string indicatorConstantString, bool debug=1){
|
||||
|
||||
int r = -1;
|
||||
|
||||
ENUM_ACCOUNT_INFO_DOUBLE a1;
|
||||
r = StringToEnum(indicatorConstantString,a1);
|
||||
//if(debug) Print("ENUM type: ENUM_ACCOUNT_INFO_DOUBLE");
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_INFO_INTEGER a2;
|
||||
r = StringToEnum(indicatorConstantString,a2);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_INFO_STRING a3;
|
||||
r = StringToEnum(indicatorConstantString,a3);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_MARGIN_MODE a4;
|
||||
r = StringToEnum(indicatorConstantString,a4);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_STOPOUT_MODE a5;
|
||||
r = StringToEnum(indicatorConstantString,a5);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_TRADE_MODE a6;
|
||||
r = StringToEnum(indicatorConstantString,a6);
|
||||
if(r>=0)return r;
|
||||
ENUM_ALIGN_MODE a7;
|
||||
r = StringToEnum(indicatorConstantString,a7);
|
||||
if(r>=0)return r;
|
||||
ENUM_ANCHOR_POINT a8;
|
||||
r = StringToEnum(indicatorConstantString,a8);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_PRICE a9;
|
||||
r = StringToEnum(indicatorConstantString,a9);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_PRICE a10;
|
||||
r = StringToEnum(indicatorConstantString,a10);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_VOLUME a11;
|
||||
r = StringToEnum(indicatorConstantString,a11);
|
||||
if(r>=0)return r;
|
||||
ENUM_ARROW_ANCHOR a12;
|
||||
r = StringToEnum(indicatorConstantString,a12);
|
||||
if(r>=0)return r;
|
||||
ENUM_BASE_CORNER a13;
|
||||
r = StringToEnum(indicatorConstantString,a13);
|
||||
if(r>=0)return r;
|
||||
ENUM_BOOK_TYPE a14;
|
||||
r = StringToEnum(indicatorConstantString,a14);
|
||||
if(r>=0)return r;
|
||||
ENUM_BORDER_TYPE a15;
|
||||
r = StringToEnum(indicatorConstantString,a15);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_FREQUENCY a16;
|
||||
r = StringToEnum(indicatorConstantString,a16);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_IMPACT a17;
|
||||
r = StringToEnum(indicatorConstantString,a17);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_IMPORTANCE a18;
|
||||
r = StringToEnum(indicatorConstantString,a18);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_MULTIPLIER a19;
|
||||
r = StringToEnum(indicatorConstantString,a19);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_SECTOR a20;
|
||||
r = StringToEnum(indicatorConstantString,a20);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_TIMEMODE a21;
|
||||
r = StringToEnum(indicatorConstantString,a21);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_TYPE a22;
|
||||
r = StringToEnum(indicatorConstantString,a22);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_UNIT a23;
|
||||
r = StringToEnum(indicatorConstantString,a23);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_EVENT a24;
|
||||
r = StringToEnum(indicatorConstantString,a24);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_MODE a25;
|
||||
r = StringToEnum(indicatorConstantString,a25);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_POSITION a26;
|
||||
r = StringToEnum(indicatorConstantString,a26);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_DOUBLE a27;
|
||||
r = StringToEnum(indicatorConstantString,a27);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_INTEGER a28;
|
||||
r = StringToEnum(indicatorConstantString,a28);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_STRING a29;
|
||||
r = StringToEnum(indicatorConstantString,a29);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_VOLUME_MODE a30;
|
||||
r = StringToEnum(indicatorConstantString,a30);
|
||||
if(r>=0)return r;
|
||||
ENUM_CL_DEVICE_TYPE a31;
|
||||
r = StringToEnum(indicatorConstantString,a31);
|
||||
if(r>=0)return r;
|
||||
ENUM_COLOR_FORMAT a32;
|
||||
r = StringToEnum(indicatorConstantString,a32);
|
||||
if(r>=0)return r;
|
||||
ENUM_CRYPT_METHOD a33;
|
||||
r = StringToEnum(indicatorConstantString,a33);
|
||||
if(r>=0)return r;
|
||||
ENUM_CUSTOMIND_PROPERTY_DOUBLE a34;
|
||||
r = StringToEnum(indicatorConstantString,a34);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_INTEGER a35;
|
||||
r = StringToEnum(indicatorConstantString,a35);
|
||||
if(r>=0)return r;
|
||||
ENUM_CUSTOMIND_PROPERTY_STRING a36;
|
||||
r = StringToEnum(indicatorConstantString,a36);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_EXPORT_FLAGS a37;
|
||||
r = StringToEnum(indicatorConstantString,a37);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_FIELD_TYPE a38;
|
||||
r = StringToEnum(indicatorConstantString,a38);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_OPEN_FLAGS a39;
|
||||
r = StringToEnum(indicatorConstantString,a39);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_PRINT_FLAGS a40;
|
||||
r = StringToEnum(indicatorConstantString,a40);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATATYPE a41;
|
||||
r = StringToEnum(indicatorConstantString,a41);
|
||||
if(r>=0)return r;
|
||||
ENUM_DAY_OF_WEEK a42;
|
||||
r = StringToEnum(indicatorConstantString,a42);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_ENTRY a43;
|
||||
r = StringToEnum(indicatorConstantString,a43);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_DOUBLE a44;
|
||||
r = StringToEnum(indicatorConstantString,a44);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_INTEGER a45;
|
||||
r = StringToEnum(indicatorConstantString,a45);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_STRING a46;
|
||||
r = StringToEnum(indicatorConstantString,a46);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_REASON a47;
|
||||
r = StringToEnum(indicatorConstantString,a47);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_TYPE a48;
|
||||
r = StringToEnum(indicatorConstantString,a48);
|
||||
if(r>=0)return r;
|
||||
ENUM_DRAW_TYPE a49;
|
||||
r = StringToEnum(indicatorConstantString,a49);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_BUFFER_TYPE a50;
|
||||
r = StringToEnum(indicatorConstantString,a50);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_FORMAT a51;
|
||||
r = StringToEnum(indicatorConstantString,a51);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_HANDLE_TYPE a52;
|
||||
r = StringToEnum(indicatorConstantString,a52);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_PRIMITIVE_TOPOLOGY a53;
|
||||
r = StringToEnum(indicatorConstantString,a53);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_SHADER_TYPE a54;
|
||||
r = StringToEnum(indicatorConstantString,a54);
|
||||
if(r>=0)return r;
|
||||
ENUM_ELLIOT_WAVE_DEGREE a55;
|
||||
r = StringToEnum(indicatorConstantString,a55);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILESELECT_FLAGS a56;
|
||||
r = StringToEnum(indicatorConstantString,a56);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILE_POSITION a57;
|
||||
r = StringToEnum(indicatorConstantString,a57);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILE_PROPERTY_INTEGER a58;
|
||||
r = StringToEnum(indicatorConstantString,a58);
|
||||
if(r>=0)return r;
|
||||
ENUM_GANN_DIRECTION a59;
|
||||
r = StringToEnum(indicatorConstantString,a59);
|
||||
if(r>=0)return r;
|
||||
ENUM_INDEXBUFFER_TYPE a60;
|
||||
r = StringToEnum(indicatorConstantString,a60);
|
||||
if(r>=0)return r;
|
||||
ENUM_INDICATOR a61;
|
||||
r = StringToEnum(indicatorConstantString,a61);
|
||||
if(r>=0)return r;
|
||||
ENUM_INIT_RETCODE a62;
|
||||
r = StringToEnum(indicatorConstantString,a62);
|
||||
if(r>=0)return r;
|
||||
ENUM_LICENSE_TYPE a63;
|
||||
r = StringToEnum(indicatorConstantString,a63);
|
||||
if(r>=0)return r;
|
||||
ENUM_LINE_STYLE a64;
|
||||
r = StringToEnum(indicatorConstantString,a64);
|
||||
if(r>=0)return r;
|
||||
ENUM_MA_METHOD a65;
|
||||
r = StringToEnum(indicatorConstantString,a65);
|
||||
if(r>=0)return r;
|
||||
ENUM_MQL_INFO_INTEGER a66;
|
||||
r = StringToEnum(indicatorConstantString,a66);
|
||||
if(r>=0)return r;
|
||||
ENUM_MQL_INFO_STRING a67;
|
||||
r = StringToEnum(indicatorConstantString,a67);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT a68;
|
||||
r = StringToEnum(indicatorConstantString,a68);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_DOUBLE a69;
|
||||
r = StringToEnum(indicatorConstantString,a69);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_INTEGER a70;
|
||||
r = StringToEnum(indicatorConstantString,a70);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_STRING a71;
|
||||
r = StringToEnum(indicatorConstantString,a71);
|
||||
if(r>=0)return r;
|
||||
ENUM_OPENCL_HANDLE_TYPE a72;
|
||||
r = StringToEnum(indicatorConstantString,a72);
|
||||
if(r>=0)return r;
|
||||
ENUM_OPENCL_PROPERTY_INTEGER a73;
|
||||
r = StringToEnum(indicatorConstantString,a73);
|
||||
if(r>=0)return r;
|
||||
ENUM_PLOT_PROPERTY_STRING a74;
|
||||
r = StringToEnum(indicatorConstantString,a74);
|
||||
if(r>=0)return r;
|
||||
ENUM_POINTER_TYPE a75;
|
||||
r = StringToEnum(indicatorConstantString,a75);
|
||||
if(r>=0)return r;
|
||||
ENUM_POSITION_PROPERTY_DOUBLE a76;
|
||||
r = StringToEnum(indicatorConstantString,a76);
|
||||
if(r>=0)return r;
|
||||
ENUM_ORDER_PROPERTY_INTEGER a77;
|
||||
r = StringToEnum(indicatorConstantString,a77);
|
||||
if(r>=0)return r;
|
||||
ENUM_PLOT_PROPERTY_STRING a78;
|
||||
r = StringToEnum(indicatorConstantString,a78);
|
||||
if(r>=0)return r;
|
||||
ENUM_PROGRAM_TYPE a79;
|
||||
r = StringToEnum(indicatorConstantString,a79);
|
||||
if(r>=0)return r;
|
||||
ENUM_SERIESMODE a80;
|
||||
r = StringToEnum(indicatorConstantString,a80);
|
||||
if(r>=0)return r;
|
||||
ENUM_SERIES_INFO_INTEGER a81;
|
||||
r = StringToEnum(indicatorConstantString,a81);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_DOUBLE a82;
|
||||
r = StringToEnum(indicatorConstantString,a82);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_INTEGER a83;
|
||||
r = StringToEnum(indicatorConstantString,a83);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_STRING a84;
|
||||
r = StringToEnum(indicatorConstantString,a84);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_DOUBLE a85;
|
||||
r = StringToEnum(indicatorConstantString,a85);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_INTEGER a86;
|
||||
r = StringToEnum(indicatorConstantString,a86);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_STRING a87;
|
||||
r = StringToEnum(indicatorConstantString,a87);
|
||||
if(r>=0)return r;
|
||||
ENUM_STATISTICS a88;
|
||||
r = StringToEnum(indicatorConstantString,a88);
|
||||
if(r>=0)return r;
|
||||
ENUM_STO_PRICE a89;
|
||||
r = StringToEnum(indicatorConstantString,a89);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CALC_MODE a90;
|
||||
r = StringToEnum(indicatorConstantString,a90);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CHART_MODE a91;
|
||||
r = StringToEnum(indicatorConstantString,a91);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_DOUBLE a92;
|
||||
r = StringToEnum(indicatorConstantString,a92);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_INTEGER a93;
|
||||
r = StringToEnum(indicatorConstantString,a93);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_STRING a94;
|
||||
r = StringToEnum(indicatorConstantString,a94);
|
||||
if(r>=0)return r;
|
||||
ENUM_STATISTICS a95;
|
||||
r = StringToEnum(indicatorConstantString,a95);
|
||||
if(r>=0)return r;
|
||||
ENUM_STO_PRICE a96;
|
||||
r = StringToEnum(indicatorConstantString,a96);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CALC_MODE a97;
|
||||
r = StringToEnum(indicatorConstantString,a97);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CHART_MODE a98;
|
||||
r = StringToEnum(indicatorConstantString,a98);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_DOUBLE a99;
|
||||
r = StringToEnum(indicatorConstantString,a99);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_INTEGER a100;
|
||||
r = StringToEnum(indicatorConstantString,a100);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_STRING a101;
|
||||
r = StringToEnum(indicatorConstantString,a101);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_OPTION_MODE a102;
|
||||
r = StringToEnum(indicatorConstantString,a102);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_OPTION_RIGHT a103;
|
||||
r = StringToEnum(indicatorConstantString,a103);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_ORDER_GTC_MODE a104;
|
||||
r = StringToEnum(indicatorConstantString,a104);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_SWAP_MODE a105;
|
||||
r = StringToEnum(indicatorConstantString,a105);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_TRADE_EXECUTION a106;
|
||||
r = StringToEnum(indicatorConstantString,a106);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_TRADE_MODE a107;
|
||||
r = StringToEnum(indicatorConstantString,a107);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_DOUBLE a108;
|
||||
r = StringToEnum(indicatorConstantString,a108);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_INTEGER a109;
|
||||
r = StringToEnum(indicatorConstantString,a109);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_STRING a110;
|
||||
r = StringToEnum(indicatorConstantString,a110);
|
||||
if(r>=0)return r;
|
||||
ENUM_TIMEFRAMES a111;
|
||||
r = StringToEnum(indicatorConstantString,a111);
|
||||
if(r>=0)return r;
|
||||
ENUM_TRADE_REQUEST_ACTIONS a112;
|
||||
r = StringToEnum(indicatorConstantString,a112);
|
||||
if(r>=0)return r;
|
||||
ENUM_TRADE_TRANSACTION_TYPE a113;
|
||||
r = StringToEnum(indicatorConstantString,a113);
|
||||
if(r>=0)return r;
|
||||
int StringToEnumInt(string indicatorConstantString)
|
||||
{
|
||||
int r = -1;
|
||||
|
||||
return(-1);
|
||||
}
|
||||
ENUM_ACCOUNT_INFO_DOUBLE a1;
|
||||
r = StringToEnum(indicatorConstantString,a1);
|
||||
//if(debug) Print("ENUM type: ENUM_ACCOUNT_INFO_DOUBLE");
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_INFO_INTEGER a2;
|
||||
r = StringToEnum(indicatorConstantString,a2);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_INFO_STRING a3;
|
||||
r = StringToEnum(indicatorConstantString,a3);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_MARGIN_MODE a4;
|
||||
r = StringToEnum(indicatorConstantString,a4);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_STOPOUT_MODE a5;
|
||||
r = StringToEnum(indicatorConstantString,a5);
|
||||
if(r>=0)return r;
|
||||
ENUM_ACCOUNT_TRADE_MODE a6;
|
||||
r = StringToEnum(indicatorConstantString,a6);
|
||||
if(r>=0)return r;
|
||||
ENUM_ALIGN_MODE a7;
|
||||
r = StringToEnum(indicatorConstantString,a7);
|
||||
if(r>=0)return r;
|
||||
ENUM_ANCHOR_POINT a8;
|
||||
r = StringToEnum(indicatorConstantString,a8);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_PRICE a9;
|
||||
r = StringToEnum(indicatorConstantString,a9);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_PRICE a10;
|
||||
r = StringToEnum(indicatorConstantString,a10);
|
||||
if(r>=0)return r;
|
||||
ENUM_APPLIED_VOLUME a11;
|
||||
r = StringToEnum(indicatorConstantString,a11);
|
||||
if(r>=0)return r;
|
||||
ENUM_ARROW_ANCHOR a12;
|
||||
r = StringToEnum(indicatorConstantString,a12);
|
||||
if(r>=0)return r;
|
||||
ENUM_BASE_CORNER a13;
|
||||
r = StringToEnum(indicatorConstantString,a13);
|
||||
if(r>=0)return r;
|
||||
ENUM_BOOK_TYPE a14;
|
||||
r = StringToEnum(indicatorConstantString,a14);
|
||||
if(r>=0)return r;
|
||||
ENUM_BORDER_TYPE a15;
|
||||
r = StringToEnum(indicatorConstantString,a15);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_FREQUENCY a16;
|
||||
r = StringToEnum(indicatorConstantString,a16);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_IMPACT a17;
|
||||
r = StringToEnum(indicatorConstantString,a17);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_IMPORTANCE a18;
|
||||
r = StringToEnum(indicatorConstantString,a18);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_MULTIPLIER a19;
|
||||
r = StringToEnum(indicatorConstantString,a19);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_SECTOR a20;
|
||||
r = StringToEnum(indicatorConstantString,a20);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_TIMEMODE a21;
|
||||
r = StringToEnum(indicatorConstantString,a21);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_TYPE a22;
|
||||
r = StringToEnum(indicatorConstantString,a22);
|
||||
if(r>=0)return r;
|
||||
ENUM_CALENDAR_EVENT_UNIT a23;
|
||||
r = StringToEnum(indicatorConstantString,a23);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_EVENT a24;
|
||||
r = StringToEnum(indicatorConstantString,a24);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_MODE a25;
|
||||
r = StringToEnum(indicatorConstantString,a25);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_POSITION a26;
|
||||
r = StringToEnum(indicatorConstantString,a26);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_DOUBLE a27;
|
||||
r = StringToEnum(indicatorConstantString,a27);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_INTEGER a28;
|
||||
r = StringToEnum(indicatorConstantString,a28);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_STRING a29;
|
||||
r = StringToEnum(indicatorConstantString,a29);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_VOLUME_MODE a30;
|
||||
r = StringToEnum(indicatorConstantString,a30);
|
||||
if(r>=0)return r;
|
||||
ENUM_CL_DEVICE_TYPE a31;
|
||||
r = StringToEnum(indicatorConstantString,a31);
|
||||
if(r>=0)return r;
|
||||
ENUM_COLOR_FORMAT a32;
|
||||
r = StringToEnum(indicatorConstantString,a32);
|
||||
if(r>=0)return r;
|
||||
ENUM_CRYPT_METHOD a33;
|
||||
r = StringToEnum(indicatorConstantString,a33);
|
||||
if(r>=0)return r;
|
||||
ENUM_CUSTOMIND_PROPERTY_DOUBLE a34;
|
||||
r = StringToEnum(indicatorConstantString,a34);
|
||||
if(r>=0)return r;
|
||||
ENUM_CHART_PROPERTY_INTEGER a35;
|
||||
r = StringToEnum(indicatorConstantString,a35);
|
||||
if(r>=0)return r;
|
||||
ENUM_CUSTOMIND_PROPERTY_STRING a36;
|
||||
r = StringToEnum(indicatorConstantString,a36);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_EXPORT_FLAGS a37;
|
||||
r = StringToEnum(indicatorConstantString,a37);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_FIELD_TYPE a38;
|
||||
r = StringToEnum(indicatorConstantString,a38);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_OPEN_FLAGS a39;
|
||||
r = StringToEnum(indicatorConstantString,a39);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATABASE_PRINT_FLAGS a40;
|
||||
r = StringToEnum(indicatorConstantString,a40);
|
||||
if(r>=0)return r;
|
||||
ENUM_DATATYPE a41;
|
||||
r = StringToEnum(indicatorConstantString,a41);
|
||||
if(r>=0)return r;
|
||||
ENUM_DAY_OF_WEEK a42;
|
||||
r = StringToEnum(indicatorConstantString,a42);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_ENTRY a43;
|
||||
r = StringToEnum(indicatorConstantString,a43);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_DOUBLE a44;
|
||||
r = StringToEnum(indicatorConstantString,a44);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_INTEGER a45;
|
||||
r = StringToEnum(indicatorConstantString,a45);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_PROPERTY_STRING a46;
|
||||
r = StringToEnum(indicatorConstantString,a46);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_REASON a47;
|
||||
r = StringToEnum(indicatorConstantString,a47);
|
||||
if(r>=0)return r;
|
||||
ENUM_DEAL_TYPE a48;
|
||||
r = StringToEnum(indicatorConstantString,a48);
|
||||
if(r>=0)return r;
|
||||
ENUM_DRAW_TYPE a49;
|
||||
r = StringToEnum(indicatorConstantString,a49);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_BUFFER_TYPE a50;
|
||||
r = StringToEnum(indicatorConstantString,a50);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_FORMAT a51;
|
||||
r = StringToEnum(indicatorConstantString,a51);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_HANDLE_TYPE a52;
|
||||
r = StringToEnum(indicatorConstantString,a52);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_PRIMITIVE_TOPOLOGY a53;
|
||||
r = StringToEnum(indicatorConstantString,a53);
|
||||
if(r>=0)return r;
|
||||
ENUM_DX_SHADER_TYPE a54;
|
||||
r = StringToEnum(indicatorConstantString,a54);
|
||||
if(r>=0)return r;
|
||||
ENUM_ELLIOT_WAVE_DEGREE a55;
|
||||
r = StringToEnum(indicatorConstantString,a55);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILESELECT_FLAGS a56;
|
||||
r = StringToEnum(indicatorConstantString,a56);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILE_POSITION a57;
|
||||
r = StringToEnum(indicatorConstantString,a57);
|
||||
if(r>=0)return r;
|
||||
ENUM_FILE_PROPERTY_INTEGER a58;
|
||||
r = StringToEnum(indicatorConstantString,a58);
|
||||
if(r>=0)return r;
|
||||
ENUM_GANN_DIRECTION a59;
|
||||
r = StringToEnum(indicatorConstantString,a59);
|
||||
if(r>=0)return r;
|
||||
ENUM_INDEXBUFFER_TYPE a60;
|
||||
r = StringToEnum(indicatorConstantString,a60);
|
||||
if(r>=0)return r;
|
||||
ENUM_INDICATOR a61;
|
||||
r = StringToEnum(indicatorConstantString,a61);
|
||||
if(r>=0)return r;
|
||||
ENUM_INIT_RETCODE a62;
|
||||
r = StringToEnum(indicatorConstantString,a62);
|
||||
if(r>=0)return r;
|
||||
ENUM_LICENSE_TYPE a63;
|
||||
r = StringToEnum(indicatorConstantString,a63);
|
||||
if(r>=0)return r;
|
||||
ENUM_LINE_STYLE a64;
|
||||
r = StringToEnum(indicatorConstantString,a64);
|
||||
if(r>=0)return r;
|
||||
ENUM_MA_METHOD a65;
|
||||
r = StringToEnum(indicatorConstantString,a65);
|
||||
if(r>=0)return r;
|
||||
ENUM_MQL_INFO_INTEGER a66;
|
||||
r = StringToEnum(indicatorConstantString,a66);
|
||||
if(r>=0)return r;
|
||||
ENUM_MQL_INFO_STRING a67;
|
||||
r = StringToEnum(indicatorConstantString,a67);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT a68;
|
||||
r = StringToEnum(indicatorConstantString,a68);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_DOUBLE a69;
|
||||
r = StringToEnum(indicatorConstantString,a69);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_INTEGER a70;
|
||||
r = StringToEnum(indicatorConstantString,a70);
|
||||
if(r>=0)return r;
|
||||
ENUM_OBJECT_PROPERTY_STRING a71;
|
||||
r = StringToEnum(indicatorConstantString,a71);
|
||||
if(r>=0)return r;
|
||||
ENUM_OPENCL_HANDLE_TYPE a72;
|
||||
r = StringToEnum(indicatorConstantString,a72);
|
||||
if(r>=0)return r;
|
||||
ENUM_OPENCL_PROPERTY_INTEGER a73;
|
||||
r = StringToEnum(indicatorConstantString,a73);
|
||||
if(r>=0)return r;
|
||||
ENUM_PLOT_PROPERTY_STRING a74;
|
||||
r = StringToEnum(indicatorConstantString,a74);
|
||||
if(r>=0)return r;
|
||||
ENUM_POINTER_TYPE a75;
|
||||
r = StringToEnum(indicatorConstantString,a75);
|
||||
if(r>=0)return r;
|
||||
ENUM_POSITION_PROPERTY_DOUBLE a76;
|
||||
r = StringToEnum(indicatorConstantString,a76);
|
||||
if(r>=0)return r;
|
||||
ENUM_ORDER_PROPERTY_INTEGER a77;
|
||||
r = StringToEnum(indicatorConstantString,a77);
|
||||
if(r>=0)return r;
|
||||
ENUM_PLOT_PROPERTY_STRING a78;
|
||||
r = StringToEnum(indicatorConstantString,a78);
|
||||
if(r>=0)return r;
|
||||
ENUM_PROGRAM_TYPE a79;
|
||||
r = StringToEnum(indicatorConstantString,a79);
|
||||
if(r>=0)return r;
|
||||
ENUM_SERIESMODE a80;
|
||||
r = StringToEnum(indicatorConstantString,a80);
|
||||
if(r>=0)return r;
|
||||
ENUM_SERIES_INFO_INTEGER a81;
|
||||
r = StringToEnum(indicatorConstantString,a81);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_DOUBLE a82;
|
||||
r = StringToEnum(indicatorConstantString,a82);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_INTEGER a83;
|
||||
r = StringToEnum(indicatorConstantString,a83);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_BASE_STRING a84;
|
||||
r = StringToEnum(indicatorConstantString,a84);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_DOUBLE a85;
|
||||
r = StringToEnum(indicatorConstantString,a85);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_INTEGER a86;
|
||||
r = StringToEnum(indicatorConstantString,a86);
|
||||
if(r>=0)return r;
|
||||
ENUM_SIGNAL_INFO_STRING a87;
|
||||
r = StringToEnum(indicatorConstantString,a87);
|
||||
if(r>=0)return r;
|
||||
ENUM_STATISTICS a88;
|
||||
r = StringToEnum(indicatorConstantString,a88);
|
||||
if(r>=0)return r;
|
||||
ENUM_STO_PRICE a89;
|
||||
r = StringToEnum(indicatorConstantString,a89);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CALC_MODE a90;
|
||||
r = StringToEnum(indicatorConstantString,a90);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CHART_MODE a91;
|
||||
r = StringToEnum(indicatorConstantString,a91);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_DOUBLE a92;
|
||||
r = StringToEnum(indicatorConstantString,a92);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_INTEGER a93;
|
||||
r = StringToEnum(indicatorConstantString,a93);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_STRING a94;
|
||||
r = StringToEnum(indicatorConstantString,a94);
|
||||
if(r>=0)return r;
|
||||
ENUM_STATISTICS a95;
|
||||
r = StringToEnum(indicatorConstantString,a95);
|
||||
if(r>=0)return r;
|
||||
ENUM_STO_PRICE a96;
|
||||
r = StringToEnum(indicatorConstantString,a96);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CALC_MODE a97;
|
||||
r = StringToEnum(indicatorConstantString,a97);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_CHART_MODE a98;
|
||||
r = StringToEnum(indicatorConstantString,a98);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_DOUBLE a99;
|
||||
r = StringToEnum(indicatorConstantString,a99);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_INTEGER a100;
|
||||
r = StringToEnum(indicatorConstantString,a100);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_INFO_STRING a101;
|
||||
r = StringToEnum(indicatorConstantString,a101);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_OPTION_MODE a102;
|
||||
r = StringToEnum(indicatorConstantString,a102);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_OPTION_RIGHT a103;
|
||||
r = StringToEnum(indicatorConstantString,a103);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_ORDER_GTC_MODE a104;
|
||||
r = StringToEnum(indicatorConstantString,a104);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_SWAP_MODE a105;
|
||||
r = StringToEnum(indicatorConstantString,a105);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_TRADE_EXECUTION a106;
|
||||
r = StringToEnum(indicatorConstantString,a106);
|
||||
if(r>=0)return r;
|
||||
ENUM_SYMBOL_TRADE_MODE a107;
|
||||
r = StringToEnum(indicatorConstantString,a107);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_DOUBLE a108;
|
||||
r = StringToEnum(indicatorConstantString,a108);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_INTEGER a109;
|
||||
r = StringToEnum(indicatorConstantString,a109);
|
||||
if(r>=0)return r;
|
||||
ENUM_TERMINAL_INFO_STRING a110;
|
||||
r = StringToEnum(indicatorConstantString,a110);
|
||||
if(r>=0)return r;
|
||||
ENUM_TIMEFRAMES a111;
|
||||
r = StringToEnum(indicatorConstantString,a111);
|
||||
if(r>=0)return r;
|
||||
ENUM_TRADE_REQUEST_ACTIONS a112;
|
||||
r = StringToEnum(indicatorConstantString,a112);
|
||||
if(r>=0)return r;
|
||||
ENUM_TRADE_TRANSACTION_TYPE a113;
|
||||
r = StringToEnum(indicatorConstantString,a113);
|
||||
if(r>=0)return r;
|
||||
|
||||
return(-1);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#property link "https://www.guntherschulz.de"
|
||||
#property version "1.00"
|
||||
|
||||
#include <StringToEnumInt.mqh>
|
||||
#include <EnumStringToInt.mqh>
|
||||
#include <Zmq/Zmq.mqh>
|
||||
#include <Json.mqh>
|
||||
|
||||
@@ -18,7 +18,7 @@ int CHART_SUB_PORT=15562;
|
||||
|
||||
// ZeroMQ Cnnections
|
||||
Context context("MQL5 JSON API");
|
||||
Socket chartLiveSocket(context,ZMQ_SUB);
|
||||
Socket chartSubscriptionSocket(context,ZMQ_SUB);
|
||||
|
||||
//#property indicator_separate_window
|
||||
//#property indicator_buffers 1
|
||||
@@ -52,14 +52,16 @@ bool first = false;
|
||||
//+------------------------------------------------------------------+
|
||||
int OnInit()
|
||||
{
|
||||
bool result = chartLiveSocket.connect(StringFormat("tcp://%s:%d", HOST, CHART_SUB_PORT));
|
||||
bool result = chartSubscriptionSocket.connect(StringFormat("tcp://%s:%d", HOST, CHART_SUB_PORT));
|
||||
if (result == false) {Print("Failed to subscrbe on port ", CHART_SUB_PORT);}
|
||||
else {
|
||||
Print("Accepting Chart Indicator data on port ", CHART_SUB_PORT);
|
||||
chartLiveSocket.setSubscribe("");
|
||||
chartLiveSocket.setLinger(1000);
|
||||
// TODO subscribe only to own IndicatorId topic
|
||||
// Subscribe to all topics
|
||||
chartSubscriptionSocket.setSubscribe("");
|
||||
chartSubscriptionSocket.setLinger(1000);
|
||||
// Number of messages to buffer in RAM.
|
||||
chartLiveSocket.setReceiveHighWaterMark(5); // TODO confirm settings
|
||||
chartSubscriptionSocket.setReceiveHighWaterMark(5); // TODO confirm settings
|
||||
}
|
||||
|
||||
//--- indicator buffers mapping;
|
||||
@@ -130,6 +132,9 @@ void SubscriptionHandler(ZmqMsg &chartMsg){
|
||||
if(message["indicatorChartId"]==IndicatorId) WriteToBuffer(message);
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Update indicator buffer function |
|
||||
//+------------------------------------------------------------------+
|
||||
void WriteToBuffer(CJAVal &message) {
|
||||
int bufferSize = ArraySize(Buffer);
|
||||
int messageDataSize = message["data"].Size();
|
||||
@@ -172,13 +177,16 @@ dependable redraw after calling timer
|
||||
|
||||
*/
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Check for new indicator data function |
|
||||
//+------------------------------------------------------------------+
|
||||
void CheckMessages(){
|
||||
// Timer() works, when the indicator is manually added to a chart, but not with ChartIndicatorAdd()
|
||||
// This is a workaround for Timer(). It is needed, because Timer() works, when the indicator is manually added to a chart, but not with ChartIndicatorAdd()
|
||||
|
||||
ZmqMsg chartMsg;
|
||||
|
||||
// Recieve chart instructions stream from client via live Chart socket.
|
||||
chartLiveSocket.recv(chartMsg,true);
|
||||
chartSubscriptionSocket.recv(chartMsg,true);
|
||||
|
||||
// Request recived
|
||||
if(chartMsg.size()>0){
|
||||
@@ -189,6 +197,10 @@ void CheckMessages(){
|
||||
}
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| OnTimer() workaround function |
|
||||
//+------------------------------------------------------------------+
|
||||
// Gets triggered by the OnTimer() function of the JsonAPI Expert script
|
||||
void OnChartEvent(const int id,
|
||||
const long &lparam,
|
||||
const double &dparam,
|
||||
|
||||
Reference in New Issue
Block a user