MQL5Book/Indicators/p6/MarketBookAddRelease.mq5

70 lines
2.7 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:09:41 +02:00
//+------------------------------------------------------------------+
//| 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
*/
//+------------------------------------------------------------------+