Guardado y carga de ajustes
En StockSharp, el mecanismo para guardar y cargar ajustes de estrategia se implementa mediante los métodos Strategy.Save y Strategy.Load.
Manejo automático de parámetros
En la mayoría de los casos, no es necesario sobrescribir los métodos Save y Load, ya que la clase base Strategy guarda y carga automáticamente los parámetros de estrategia creados con StrategyParam<T>.
El enfoque recomendado es usar el mecanismo de parámetros de estrategia descrito en detalle en la sección Parámetros de estrategia. Con este enfoque, todos los parámetros se guardan y cargan automáticamente:
public class SmaStrategy : Strategy
{
private readonly StrategyParam<int> _longSmaLength;
public int LongSmaLength
{
get => _longSmaLength.Value;
set => _longSmaLength.Value = value;
}
public SmaStrategy()
{
_longSmaLength = Param(nameof(LongSmaLength), 80)
.SetDisplay("Longitud de la SMA larga", string.Empty, "Configuración básica");
}
}
Sobrescritura para casos especiales
Sobrescribir los métodos Save y Load solo es necesario en casos especiales cuando necesita guardar o cargar datos que no forman parte del conjunto estándar de parámetros de estrategia. Por ejemplo, para guardar estado interno, estructuras de datos no estándar o valores en caché.
Si sobrescribe estos métodos, debe llamar a los métodos de la clase base:
public override void Save(SettingsStorage settings)
{
// Primero llamar al método base para guardar parámetros estándar
base.Save(settings);
// Luego agregar su lógica de guardado específica
settings.SetValue("CustomState", _customState);
}
public override void Load(SettingsStorage settings)
{
// Primero llamar al método base para cargar parámetros estándar
base.Load(settings);
// Luego agregar su lógica de carga específica
if (settings.Contains("CustomState"))
_customState = settings.GetValue<string>("CustomState");
}
Guardar y cargar desde un archivo
Para guardar ajustes en un archivo o cargarlos desde un archivo, puede usar la serialización y deserialización implementadas en StockSharp:
// Guardar ajustes en un archivo
var settingsStorage = new SettingsStorage();
strategy.Save(settingsStorage);
new JsonSerializer<SettingsStorage>().Serialize(settingsStorage, "strategy.json");
// Cargar ajustes desde un archivo
var newStrategy = new SmaStrategy();
if (File.Exists("strategy.json"))
{
var loadedSettings = new JsonSerializer<SettingsStorage>().Deserialize("strategy.json");
newStrategy.Load(loadedSettings);
}
Recomendaciones
- Siempre que sea posible, use StrategyParam<T> para todos los parámetros configurables de la estrategia.
- Sobrescriba los métodos
SaveyLoadsolo cuando necesite guardar/cargar datos no estándar. - Llame siempre a los métodos base
base.Save()ybase.Load()al sobrescribir. - Use las herramientas estándar de serialización de StockSharp para guardar ajustes en un archivo o cargarlos desde un archivo.