70 lines
2.7 KiB
MQL5
70 lines
2.7 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| MarketBookAddRelease.mq5 |
|
||
|
//| Copyright 2022, MetaQuotes Ltd. |
|
||
|
//| https://www.mql5.com |
|
||
|
//+------------------------------------------------------------------+
|
||
|
#property copyright "2022, MetaQuotes Ltd."
|
||
|
#property link "https://www.mql5.com"
|
||
|
#property description "On start-up subscribe to market book notifications for specified symbol (empty string means current chart symbol)."
|
||
|
#property description "On exit unsubscribe from market book notifications. Otherwise does nothing. See logs for success/errors."
|
||
|
|
||
|
#property indicator_chart_window
|
||
|
#property indicator_plots 0
|
||
|
|
||
|
#include "..\..\Include\PRTF.mqh"
|
||
|
|
||
|
input string WorkSymbol = ""; // WorkSymbol (empty means current chart symbol)
|
||
|
|
||
|
const string _WorkSymbol = StringLen(WorkSymbol) == 0 ? _Symbol : WorkSymbol;
|
||
|
string symbols[];
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Custom indicator initialization function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
void OnInit()
|
||
|
{
|
||
|
const int n = StringSplit(_WorkSymbol, ',', symbols);
|
||
|
for(int i = 0; i < n; ++i)
|
||
|
{
|
||
|
if(!PRTF(MarketBookAdd(symbols[i])))
|
||
|
PrintFormat("MarketBookAdd(%s) failed", symbols[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Custom indicator iteration function (dummy) |
|
||
|
//+------------------------------------------------------------------+
|
||
|
int OnCalculate(const int rates_total, const int prev_calculated, const int, const double &price[])
|
||
|
{
|
||
|
return rates_total;
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Finalization handler |
|
||
|
//+------------------------------------------------------------------+
|
||
|
void OnDeinit(const int)
|
||
|
{
|
||
|
for(int i = 0; i < ArraySize(symbols); ++i)
|
||
|
{
|
||
|
if(!PRTF(MarketBookRelease(symbols[i])))
|
||
|
PrintFormat("MarketBookRelease(%s) failed", symbols[i]);
|
||
|
}
|
||
|
}
|
||
|
//+------------------------------------------------------------------+
|
||
|
/*
|
||
|
|
||
|
example output 1 (market book is available):
|
||
|
|
||
|
MarketBookAdd(symbols[i])=true / ok
|
||
|
MarketBookRelease(symbols[i])=true / ok
|
||
|
|
||
|
example output 2 (no market book for specific symbol):
|
||
|
|
||
|
MarketBookAdd(symbols[i])=false / BOOKS_CANNOT_ADD(4901)
|
||
|
MarketBookAdd(XPDUSD) failed
|
||
|
MarketBookRelease(symbols[i])=false / BOOKS_CANNOT_DELETE(4902)
|
||
|
MarketBookRelease(XPDUSD) failed
|
||
|
|
||
|
*/
|
||
|
//+------------------------------------------------------------------+
|