MQL5Book/Scripts/p7/CustomSymbolProperties.mq5
super.admin 1c8e83ce31 convert
2025-05-30 16:09:41 +02:00

64 lines
2.5 KiB
MQL5

//+------------------------------------------------------------------+
//| CustomSymbolProperties.mq5 |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property description "Create or delete specified custom symbol based on current chart's symbol."
#property script_show_inputs
#include "..\..\Include\PRTF.mqh"
#include "..\..\Include\CustomSymbolMonitor.mqh"
input string CustomSymbol = "Dummy"; // Custom Symbol Name
input string CustomPath = "MQL5Book\\Part7"; // Custom Symbol Folder
input bool AutoUnselectInMarketWatch = true;
input bool ReverseOrder = false;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
bool custom = false;
if(!PRTF(SymbolExist(CustomSymbol, custom)))
{
if(IDYES == MessageBox(StringFormat("Create new custom symbol based on %s?", _Symbol),
"Please, confirm", MB_YESNO))
{
if(PRTF(CustomSymbolCreate(CustomSymbol, CustomPath)))
{
// this will virtually move the symbol into _Symbol's path inside Custom folder
CustomSymbolMonitor cs(CustomSymbol, _Symbol);
cs.setAll(ReverseOrder);
}
}
}
else
{
if(custom)
{
if(IDYES == MessageBox("Delete existing custom symbol?", "Please, confirm", MB_YESNO))
{
if(AutoUnselectInMarketWatch) // without this we can't delete implicitly selected symbol
{
CustomSymbolMonitor cs(CustomSymbol);
if(PRTF(cs.get(SYMBOL_SELECT)) && PRTF(!cs.get(SYMBOL_VISIBLE)))
{
Print("Unselecting implicitly selected symbol");
// SYMBOL_SELECT is read-only
// PRTF(cs.set(SYMBOL_SELECT, false));
PRTF(SymbolSelect(CustomSymbol, false));
}
}
PRTF(CustomSymbolDelete(CustomSymbol));
}
}
else
{
Print("Can't delete non-custom symbol");
}
}
}
//+------------------------------------------------------------------+