Bollinger-Strategie mit Fokus auf das untere Band
Überblick
BollingerStrategyLowBandStrategy ist eine Strategie auf Basis des Indikators BollingerBands. Sie eröffnet eine Short-Position, wenn der Preis die untere Begrenzung der Bollinger-Bänder erreicht, und schließt sie, wenn der Preis die Mittellinie erreicht.
Hauptkomponenten
Die Strategie erbt von Strategy und verwendet Parameter zur Konfiguration:
public class BollingerStrategyLowBandStrategy : Strategy
{
private readonly StrategyParam<int> _bollingerLength;
private readonly StrategyParam<decimal> _bollingerDeviation;
private readonly StrategyParam<DataType> _candleType;
private BollingerBands _bollingerBands;
}
Strategieparameter
Die Strategie erlaubt die Anpassung der folgenden Parameter:
- BollingerLength - Periode des Bollinger-Bänder-Indikators (Standardwert 20)
- BollingerDeviation - Multiplikator der Standardabweichung (Standardwert 2.0)
- CandleType - Kerzentyp, mit dem gearbeitet wird (standardmäßig 5 Minuten)
Alle Parameter stehen mit festgelegten Wertebereichen für die Optimierung zur Verfügung.
Initialisierung der Strategie
In der Methode OnStarted2 wird der Bollinger-Bänder-Indikator erstellt, das Kerzenabonnement eingerichtet und die Visualisierung vorbereitet:
protected override void OnStarted2(DateTime time)
{
base.OnStarted2(time);
// Indikator erstellen
_bollingerBands = new BollingerBands
{
Length = BollingerLength,
Width = BollingerDeviation
};
// Abonnement erstellen und Indikator binden
var subscription = SubscribeCandles(CandleType);
subscription
.BindEx(_bollingerBands, ProcessCandle)
.Start();
// Visualisierung im Chart einrichten
var area = CreateChartArea();
if (area != null)
{
DrawCandles(area, subscription);
DrawIndicator(area, _bollingerBands, System.Drawing.Color.Purple);
DrawOwnTrades(area);
}
}
Verarbeitung von Kerzen
Die Methode ProcessCandle wird für jede abgeschlossene Kerze aufgerufen und implementiert die Handelslogik:
private void ProcessCandle(ICandleMessage candle, IIndicatorValue bollingerValue)
{
// Unvollständige Kerzen überspringen
if (candle.State != CandleStates.Finished)
return;
// Prüfen, ob die Strategie handelsbereit ist
if (!IsFormedAndOnlineAndAllowTrading())
return;
var typed = (BollingerBandsValue)bollingerValue;
// Handelslogik:
// Verkaufen, wenn der Preis das untere Band berührt (nur wenn keine Position besteht)
if (candle.ClosePrice <= typed.LowBand && Position == 0)
{
SellMarket(Volume);
}
// Kaufen, um die Position zu schließen, wenn der Preis die Mittellinie erreicht (nur bei Short-Position)
else if (candle.ClosePrice >= typed.MiddleBand && Position < 0)
{
BuyMarket(Math.Abs(Position));
}
}
Handelslogik
- Verkaufssignal: Der Schlusskurs der Kerze erreicht das untere Bollinger-Band oder fällt darunter, wenn keine offene Position vorhanden ist.
- Kaufsignal (Schließen der Short-Position): Der Schlusskurs der Kerze erreicht oder überschreitet die Mittellinie der Bollinger-Bänder, wenn eine Short-Position vorhanden ist.
- Das Positionsvolumen ist beim Öffnen fest und entspricht beim Schließen der gesamten aktuellen Position.
Funktionen
- Die Strategie bestimmt die zu verwendenden Instrumente automatisch über die Methode
GetWorkingSecurities(). - Die Strategie arbeitet nur mit abgeschlossenen Kerzen.
- Die Strategie verwendet nur das untere Band und die Mittellinie des Bollinger-Bänder-Indikators.
- Es werden nur Short-Positionen eröffnet.
- Indikator und Trades werden in einem Chart visualisiert, wenn ein grafischer Bereich verfügbar ist.
- Parameteroptimierung wird unterstützt, um optimale Strategieeinstellungen zu finden.