forked from rosh/MQL5Book
86 lines
2.7 KiB
MQL5
86 lines
2.7 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| SymbolFilterVolumes.mq5 |
| |
//| Copyright 2022, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//| Print out volume related limits for selected symbols |
| |
//+------------------------------------------------------------------+
| |
#property script_show_inputs
| |
| |
#include "..\..\Include\SymbolFilter.mqh"
| |
| |
input bool MarketWatchOnly = true;
| |
input double MinimalContractSize = 0;
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
SymbolFilter f; // filter object
| |
string symbols[]; // array for resulting names
| |
double volumeLimits[][4]; // array for output data
| |
| |
// specify properties to read from symbols
| |
ENUM_SYMBOL_INFO_DOUBLE volumeIds[] =
| |
{
| |
SYMBOL_VOLUME_MIN,
| |
SYMBOL_VOLUME_STEP,
| |
SYMBOL_VOLUME_MAX,
| |
SYMBOL_VOLUME_LIMIT
| |
};
| |
| |
// apply filter by contract size (if larger than provided input)
| |
// and request volume-related specs for matched symbols
| |
f.let(SYMBOL_TRADE_CONTRACT_SIZE, MinimalContractSize, IS::GREATER)
| |
.select(MarketWatchOnly, volumeIds, symbols, volumeLimits);
| |
| |
const int n = ArraySize(symbols);
| |
PrintFormat("===== Volume limits of the symbols (%d) =====", n);
| |
string title = "";
| |
for(int i = 0; i < ArraySize(volumeIds); ++i)
| |
{
| |
title += "\t" + EnumToString(volumeIds[i]);
| |
}
| |
Print(title);
| |
for(int i = 0; i < n; ++i)
| |
{
| |
Print(symbols[i]);
| |
ArrayPrint(volumeLimits, 3, NULL, i, 1, 0);
| |
}
| |
}
| |
//+------------------------------------------------------------------+
| |
/*
| |
| |
example output:
| |
| |
===== Volume limits of the symbols (13) =====
| |
SYMBOL_VOLUME_MIN SYMBOL_VOLUME_STEP SYMBOL_VOLUME_MAX SYMBOL_VOLUME_LIMIT
| |
EURUSD
| |
0.010 0.010 500.000 0.000
| |
GBPUSD
| |
0.010 0.010 500.000 0.000
| |
USDCHF
| |
0.010 0.010 500.000 0.000
| |
USDJPY
| |
0.010 0.010 500.000 0.000
| |
USDCNH
| |
0.010 0.010 1000.000 0.000
| |
USDRUB
| |
0.010 0.010 1000.000 0.000
| |
AUDUSD
| |
0.010 0.010 500.000 0.000
| |
NZDUSD
| |
0.010 0.010 500.000 0.000
| |
USDCAD
| |
0.010 0.010 500.000 0.000
| |
USDSEK
| |
0.010 0.010 500.000 0.000
| |
XAUUSD
| |
0.010 0.010 100.000 0.000
| |
BTCUSD
| |
0.010 0.010 1000.000 0.000
| |
SP500m
| |
0.100 0.100 5.000 15.000
| |
| |
*/
| |
//+------------------------------------------------------------------+
|