forked from rosh/MQL5Book
79 lines
2.9 KiB
MQL5
79 lines
2.9 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| SymbolFilterBookDepth.mq5 |
| |
//| Copyright 2022, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//| Print out book depth stats for selected symbols |
| |
//+------------------------------------------------------------------+
| |
#property script_show_inputs
| |
| |
#include "..\..\Include\SymbolFilter.mqh"
| |
| |
input bool UseMarketWatch = false;
| |
input int ShowSymbolsWithDepth = -1;
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
SymbolFilter f; // filter object
| |
string symbols[]; // array for resulting names
| |
long depths[]; // array for output
| |
MapArray<long,int> stats; // counters per depth
| |
| |
if(ShowSymbolsWithDepth > -1)
| |
{
| |
f.let(SYMBOL_TICKS_BOOKDEPTH, ShowSymbolsWithDepth);
| |
}
| |
| |
// apply the filter and collect depths for symbols
| |
f.select(UseMarketWatch, SYMBOL_TICKS_BOOKDEPTH, symbols, depths);
| |
const int n = ArraySize(symbols);
| |
| |
PrintFormat("===== Book depths for %s symbols %s=====",
| |
(UseMarketWatch ? "Market Watch" : "all available"),
| |
(ShowSymbolsWithDepth > -1 ? "(filtered by depth="
| |
+ (string)ShowSymbolsWithDepth + ") " : ""));
| |
PrintFormat("Total symbols: %d", n);
| |
| |
if(ShowSymbolsWithDepth > -1) // if specific depth is given, just list
| |
{
| |
ArrayPrint(symbols);
| |
return;
| |
}
| |
| |
for(int i = 0; i < n; ++i) // otherwise calculate stats
| |
{
| |
stats.inc(depths[i]);
| |
}
| |
| |
Print("Stats per depth:");
| |
stats.print();
| |
Print("Legend: key=depth, value=count");
| |
}
| |
//+------------------------------------------------------------------+
| |
/*
| |
| |
example output (1-st run with default settings):
| |
| |
===== Book depths for all available symbols =====
| |
Total symbols: 52357
| |
Stats per depth:
| |
[key] [value]
| |
[0] 0 52244
| |
[1] 5 3
| |
[2] 10 67
| |
[3] 16 5
| |
[4] 20 13
| |
[5] 32 25
| |
Legend: key=depth, value=count
| |
| |
example output (2-nd run, UseMarketWatch=false, ShowSymbolsWithDepth=32):
| |
| |
===== Book depths for all available symbols (filtered by depth=32) =====
| |
Total symbols: 25
| |
[ 0] "USDCNH" "USDZAR" "USDHUF" "USDPLN" "EURHUF" "EURNOK" "EURPLN" "EURSEK" "EURZAR" "GBPNOK" "GBPPLN" "GBPSEK" "GBPZAR"
| |
[13] "NZDCAD" "NZDCHF" "USDMXN" "EURMXN" "GBPMXN" "CADMXN" "CHFMXN" "MXNJPY" "NZDMXN" "USDCOP" "USDARS" "USDCLP"
| |
| |
*/
| |
//+------------------------------------------------------------------+
|