CustomSymbolSetString

Imposta il valore della proprietà tipo string per un simbolo personalizzato.

bool  CustomSymbolSetString(
   const string              symbol_name,      // nome del simbolo
   ENUM_SYMBOL_INFO_STRING   property_id,      // ID proprietà
   string                    property_value    // valore proprietà
   );

Parametri

symbol_name

[in]  Nome simbolo personalizzato.

property_id

[in]  ID della proprietà del Simbolo. Il valore può essere uno dei valori dell'enumerazione ENUM_SYMBOL_INFO_STRING.

property_value

[in] Una variabile di tipo string contenente il valore della proprietà.

Valore Restituito

true – successo, altrimenti – false. Per ottenere informazioni sull'errore, chiamare la funzione GetLastError().

Nota

La cronologia dei minuti e dei segni di graduazione del simbolo personalizzato viene completamente rimossa se la proprietà SYMBOL_FORMULA (che imposta l'equazione per la costruzione del prezzo del simbolo personalizzato) viene modificata nella specifica del simbolo. Dopo aver eliminato lo storico (cronologia) dei simboli personalizzati, il terminale tenta di creare un nuovo storico utilizzando la nuova equazione. Lo stesso accade quando l'equazione del simbolo personalizzato viene modificata manualmente.

 

Esempio:

//+------------------------------------------------------------------+
//|                                        CustomSymbolSetString.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   CUSTOM_SYMBOL_NAME     Symbol()+".C"  // nome del simbolo personalizzato
#define   CUSTOM_SYMBOL_PATH     "Forex"        // nome del gruppo in cui un simbolo è stato creato
#define   CUSTOM_SYMBOL_ORIGIN   Symbol()       // nome di un simbolo su cui è basata la personalizzazione
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- ottenere il codice di errore quando si crea un simbolo personalizzato
   int create=CreateCustomSymbol(CUSTOM_SYMBOL_NAMECUSTOM_SYMBOL_PATHCUSTOM_SYMBOL_ORIGIN);
   
//---- se il codice di errore non è 0 (creazione del simbolo riuscita) e non è 5304 (il simbolo è già stato creato) - lasciare
   if(create!=0 && create!=5304)
      return;
      
//--- ottenere e stampare nel journal le proprietà del simbolo su cui si basa il simbolo personalizzato
//--- (volume minimo, volume massimo, passo minimo di variazione del volume per l'esecuzione dell'operazione)
   string origin_basis    = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_BASIS);
   string origin_category = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_CATEGORY);
   string origin_formula  = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_FORMULA);
   
   PrintFormat("The '%s' symbol from which the custom '%s' was created:\n"+
               "  Basis: %s\n  Category: %s\n  Formula: %s",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               origin_basisorigin_categoryorigin_formula);
   
//--- impostare altri valori per le proprietà del simbolo personalizzato
   ResetLastError();
   bool res=true;
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_BASISCUSTOM_SYMBOL_ORIGIN);
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_CATEGORY"FX");
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_FORMULA, ("1.0 / "+CUSTOM_SYMBOL_ORIGIN));
 
//--- se si è verificato un errore durante l'impostazione di una delle proprietà, visualizzare un messaggio appropriato nel journal
   if(!res)
      Print("CustomSymbolSetString() failed. Error "GetLastError());
   
//--- ottenere e stampare nel journal le proprietà del simbolo personalizzato modificato
//--- (volume minimo, volume massimo, passo minimo di variazione del volume per l'esecuzione dell'operazione)
   string custom_basis    = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_BASIS);
   string custom_category = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_CATEGORY);
   string custom_formula  = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_FORMULA);
   
   PrintFormat("Custom symbol '%s' based on '%s':\n"+
               "  Basis: %s\n  Category: %s\n  Formula: %s",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               custom_basiscustom_categorycustom_formula);
   
//--- visualizzare un suggerimento sui tasti di terminazione dello script nel commento del grafico
   Comment(StringFormat("Press 'Esc' to exit or 'Del' to delete the '%s' symbol and exit"CUSTOM_SYMBOL_NAME));
 
//--- attendere che i tasti Esc o Del vengano premuti per uscire da un ciclo infinito
   while(!IsStopped() && TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)==0)
     {
      Sleep(16);
      //--- premendo Del, eliminare il simbolo personalizzato creato
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_DELETE)<0)
        {
         if(DeleteCustomSymbol(CUSTOM_SYMBOL_NAME))
            PrintFormat("Custom symbol '%s' deleted successfully"CUSTOM_SYMBOL_NAME);
         break;
        }
     }
//--- pulire il grafico prima di uscire
   Comment("");
   /*
   risultato:
   The 'EURUSDsymbol from which the custom 'EURUSD.Cwas created:
     Basis
     Category
     Formula
   Custom symbol 'EURUSDbased on 'EURUSD.C':
     BasisEURUSD
     CategoryFX
     Formula1.0 / EURUSD
   */
  }
//+---------------------------------------------------------------------------------------+
//| Creare un simbolo personalizzato, restituire un codice di errore |
//+---------------------------------------------------------------------------------------+
int CreateCustomSymbol(const string symbol_nameconst string symbol_pathconst string symbol_origin=NULL)
  {
//--- definire il nome di un simbolo su cui è basata la personalizzazione
   string origin=(symbol_origin==NULL ? Symbol() : symbol_origin);
   
//--- se non è stato possibile creare un simbolo personalizzato e questo non corrisponde all'errore 5304, segnalarlo nel journal
   ResetLastError();
   int error=0;
   if(!CustomSymbolCreate(symbol_namesymbol_pathorigin))
     {
      error=GetLastError();
      if(error!=5304)
         PrintFormat("CustomSymbolCreate(%s, %s, %s) failed. Error %d"symbol_namesymbol_pathoriginerror);
     }
//--- successo
   return(error);
  }
//+------------------------------------------------------------------+
//| Rimuovere un simbolo personalizzato |
//+------------------------------------------------------------------+
bool DeleteCustomSymbol(const string symbol_name)
  {
//--- nascondere il simbolo dalla finestra Market Watch
   ResetLastError();
   if(!SymbolSelect(symbol_namefalse))
     {
      PrintFormat("SymbolSelect(%s, false) failed. Error %d"GetLastError());
      return(false);
     }
      
//--- se non è stato possibile eliminare un simbolo personalizzato, segnalarlo nel journal e restituire 'false'
   ResetLastError();
   if(!CustomSymbolDelete(symbol_name))
     {
      PrintFormat("CustomSymbolDelete(%s) failed. Error %d"symbol_nameGetLastError());
      return(false);
     }
//--- successo
   return(true);
  }

 

Guarda anche

SymbolInfoString