Intraday-Volumen
Das Skript "Intraday-Volumen" ist ein Werkzeug zur Analyse der Verteilung des Handelsvolumens von Wertpapieren nach Stunden innerhalb einer einzelnen Handelssitzung. Es ist für die Verwendung innerhalb der StockSharp-Plattform konzipiert und richtet sich an Trader und quantitative Analysten, die Marktverhalten detailliert untersuchen und Handelsstrategien optimieren möchten.

Funktionsbeschreibung
Das Skript sammelt Daten zu Handelsoperationen für einen ausgewählten Zeitraum und stellt sie in Diagrammform dar. Dadurch können Benutzer visualisieren, wie sich das Handelsvolumen nach Stunden verändert. So lässt sich einschätzen, zu welchen Tageszeiten die Handelsaktivität zunimmt oder abnimmt.
Praktische Bedeutung
- Für den Handel: Das Verständnis von Spitzen- und Nebenzeiten hilft, die aktivsten Marktphasen zu erkennen, und beeinflusst Entscheidungen darüber, wann Positionen eröffnet oder geschlossen werden.
- Für quantitative Analyse: Quantitative Analysten können Intraday-Volumendaten verwenden, um mathematische Modelle und Algorithmen zu erstellen, die Marktverhalten anhand von Volumenindikatoren prognostizieren.
Stundenverteilung
Die Verteilung des Handelsvolumens nach Stunden verdeutlicht die Marktdynamik und hebt Zeitintervalle mit der wichtigsten Handelsaktivität hervor. Dies kann auf Trendänderungen, Unterstützungs- und Widerstandsniveaus sowie potenzielle Momente erhöhter oder knapper Liquidität hinweisen.
Datenanwendung
Das Skript "Intraday-Volumen" kann in ein breiteres Marktanalysesystem integriert werden und Daten liefern, die für Folgendes genutzt werden können:
- Strategieanpassung: Anpassung der Parameter von Handelsalgorithmen an das Niveau der Marktaktivität.
- Risikobewertung: Berechnung der Wahrscheinlichkeit signifikanter Preisbewegungen in Abhängigkeit von der Tageszeit.
Die Verwendung des Skripts "Intraday-Volumen" innerhalb der StockSharp-Handelsplattform ermöglicht Tradern und Analysten, ihre Entscheidungen auf konkrete Daten zur Marktaktivität zu stützen und Strategien optimal an die aktuellen Handelsbedingungen anzupassen.
Skriptcode in C#
namespace StockSharp.Algo.Analytics
{
/// <summary>
/// Das Analyseskript berechnet die Verteilung des größten Volumens nach Stunden.
/// </summary>
public class TimeVolumeScript : IAnalyticsScript
{
Task IAnalyticsScript.Run(ILogReceiver logs, IAnalyticsPanel panel, SecurityId[] securities, DateTime from, DateTime to, IStorageRegistry storage, IMarketDataDrive drive, StorageFormats format, DataType dataType, CancellationToken cancellationToken)
{
if (securities.Length == 0)
{
logs.LogWarning("Keine Instrumente.");
return Task.CompletedTask;
}
// Skript kann nur 1 Instrument verarbeiten
var security = securities.First();
// Kerzenspeicher abrufen
var candleStorage = storage.GetCandleMessageStorage(security, dataType, drive, format);
// Verfügbare Daten für den angegebenen Zeitraum abrufen
var dates = candleStorage.GetDates(from, to).ToArray();
if (dates.Length == 0)
{
logs.LogWarning("Keine Daten.");
return Task.CompletedTask;
}
// Kerzen nach Eröffnungszeit gruppieren (nur Zeitanteil) mit Kürzung auf 1 Stunde
var rows = candleStorage.Load(from, to)
.GroupBy(c => c.OpenTime.TimeOfDay.Truncate(TimeSpan.FromHours(1)))
.ToDictionary(g => g.Key, g => g.Sum(c => c.TotalVolume));
// Unsere Berechnungen in das Grid einfügen
var grid = panel.CreateGrid("Zeit", "Volumen");
foreach (var row in rows)
grid.SetRow(row.Key, row.Value);
// Nach Volumenspalte sortieren (absteigend)
grid.SetSort("Volumen", false);
return Task.CompletedTask;
}
}
}
Skriptcode in Python
import clr
# .NET-Referenzen hinzufügen
clr.AddReference("StockSharp.Algo.Analytics")
clr.AddReference("StockSharp.Messages")
clr.AddReference("Ecng.Drawing")
from Ecng.Drawing import DrawStyles
from System import TimeSpan
from System.Threading.Tasks import Task
from StockSharp.Algo.Analytics import IAnalyticsScript
from storage_extensions import *
from candle_extensions import *
from chart_extensions import *
from indicator_extensions import *
# Das Analyseskript berechnet die Verteilung des größten Volumens nach Stunden.
class time_volume_script(IAnalyticsScript):
def Run(
self,
logs,
panel,
securities,
from_date,
to_date,
storage,
drive,
format,
data_type,
cancellation_token
):
# Prüfen, ob keine Instrumente vorhanden sind
if not securities:
logs.LogWarning("Keine Instrumente.")
return Task.CompletedTask
# Skript kann nur 1 Instrument verarbeiten
security = securities[0]
if data_type is None:
logs.LogWarning(f"Nicht unterstützter Datentyp {data_type}.")
return Task.CompletedTask
message_type = data_type.MessageType
# Kerzenspeicher abrufen
candle_storage = get_candle_storage(storage, security, data_type, drive, format)
# Verfügbare Daten für den angegebenen Zeitraum abrufen
dates = get_dates(candle_storage, from_date, to_date)
if len(dates) == 0:
logs.LogWarning("Keine Daten.")
return Task.CompletedTask
# Kerzen nach Eröffnungszeit gruppieren (stündliche Kürzung) und ihre Volumina summieren
candles = load_range(candle_storage, message_type, from_date, to_date)
rows = {}
for candle in candles:
time_of_day = candle.OpenTime.TimeOfDay
truncated = TimeSpan.FromHours(int(time_of_day.TotalHours))
rows[truncated] = rows.get(truncated, 0) + candle.TotalVolume
# Unsere Berechnungen in das Grid einfügen
grid = panel.CreateGrid("Zeit", "Volumen")
for key, value in rows.items():
grid.SetRow(key, value)
# Nach der Volume-Spalte absteigend sortieren
grid.SetSort("Volumen", False)
return Task.CompletedTask