MACD Beispiel für eine 1010-Strategie
Überblick
Dieses Modul portiert den MetaTrader Expert Advisor macd_sample_1010.mq4 auf den StockSharp High-Level API. Das ursprüngliche Skript kombinierte Bollinger-Bänder mit einfachen Money-Management-Regeln: Wenn der Schlusskurs über dem oberen Band plus einem konfigurierbaren Puffer endete, wurde eine Verkaufsorder eröffnet, während ein Schlusskurs unter dem unteren Band minus dem Puffer eine Kauforder auslöste. Positionen wurden geschlossen, sobald ein fester Gewinn- oder Verlustbetrag (ausgedrückt in Pips) erreicht wurde. Die StockSharp-Version reproduziert dieselbe Logik, indem sie die angeforderte Kerzenserie abonniert, einen BollingerBands-Indikator bindet und Marktaufträge und Positionsverwaltungsaufrufe aus dem Kerzenrückruf ausgibt.
Die Konvertierung behält das Verhalten des alten Experten für fertige Kerzen bei. Jede Auswertung erfolgt, wenn eine Kerze vollständig geformt ist, um sicherzustellen, dass die Ausbruchs- und Ausstiegsentscheidungen mit der Bar-Close-Verarbeitung der MetaTrader-Plattform übereinstimmen. Eine optionale saldobasierte Skalierung des Handelsvolumens ist ebenfalls implementiert, um das Flag LotIncrease aus dem Code MQL4 zu emulieren.
Konvertierungshinweise
- Verwendet den übergeordneten Workflow
SubscribeCandles+Bind, um den IndikatorBollingerBandsohne benutzerdefinierte Puffer zu füttern. - Nutzt die StockSharp
StrategyParam<T>-Infrastruktur, sodass alle Eingaben in der Benutzeroberfläche sichtbar und zur Optimierung bereit sind. - Ruft
BuyMarketundSellMarketmit berechneten Offsets auf, die denPriceStepdes Instruments berücksichtigen und mit den Pip-basierten Berechnungen in MetaTrader übereinstimmen. - Implementiert die optionale Losskalierung durch
Portfolio.CurrentValue(mitBeginValueals Fallback) und begrenzt das resultierende Volumen auf 500 Lose, genau wie der ursprüngliche Experte. - Funktioniert ausschließlich mit fertigen Kerzen, um die Abwanderung von Tick zu Tick zu vermeiden, die das ursprüngliche Skript über Barzähler steuerte.
- Fügt beschreibende englische Kommentare hinzu, um die Absicht jedes Verarbeitungsblocks zu verdeutlichen.
Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
ProfitTargetPips |
decimal |
3 |
Anzahl der Pips mit günstiger Bewegung, die erforderlich sind, um eine Position mit Gewinn zu schließen. Auf 0 setzen, um die Take-Profit-Regel zu deaktivieren. |
LossLimitPips |
decimal |
20 |
Anzahl der Pips mit nachteiliger Bewegung, die toleriert werden, bevor die Position liquidiert wird. Auf 0 setzen, um die Stop-Loss-Regel zu deaktivieren. |
BandDistancePips |
decimal |
3 |
Puffer (in Pips), der oberhalb des oberen Bandes und unterhalb des unteren Bandes hinzugefügt wird, bevor ein Ausbruch bestätigt wird. |
BollingerPeriod |
int |
4 |
Anzahl der Kerzen, die zur Berechnung der Bollinger-Bänder verwendet werden. |
BollingerDeviation |
decimal |
2 |
Vom Bollinger Bands-Indikator angewendeter Standardabweichungsmultiplikator. |
BaseVolume |
decimal |
1 |
Anfängliche Handelsgröße, ausgedrückt in Lots. Dieser Wert wird auch als Basis für die Skalierungslogik verwendet. |
LotIncrease |
bool |
true |
Wenn diese Option aktiviert ist, wird das Handelsvolumen für jede Kerze neu berechnet, sodass es dem Verhältnis zwischen dem aktuellen Portfoliosaldo und dem Startsaldo folgt. |
OneOrderOnly |
bool |
true |
Verhindert, dass die Strategie eine neue Position eröffnet, wenn bereits eine aktiv ist. Wenn die Option deaktiviert ist, wird die Nettoposition weiterhin verwaltet, da StockSharp aggregierte Positionen verwendet. |
CandleType |
DataType |
TimeFrame(15m) |
Kerzenserien, die sowohl für Indikatorberechnungen als auch für Handelsentscheidungen verwendet werden. |
Handelslogik
OnStartederstellt den Bandindikator Bollinger mit dem konfigurierten Zeitraum und der konfigurierten Abweichung, abonniert den DatenstromCandleTypeund bindet die MethodeProcessCandle.- Jede fertige Kerze löst
ProcessCandleaus, das vor der Auswertung der Signale das aktuelle Handelsvolumen neu berechnet (sofernLotIncreaseaktiv ist). - Wenn der Schlusskurs über dem oberen Band plus
BandDistancePipsliegt (umgerechnet in Preiseinheiten mitPriceStep), sendet die Strategie einen Marktverkaufsauftrag. Wenn der Schlusskurs unter dem unteren Band abzüglich des Puffers liegt, wird eine Marktkauforder gesendet. WennOneOrderOnlyden Werttruehat, werden neue Einträge nur dann versucht, wenn die Nettoposition Null ist. - Nachdem potenzielle Eingaben verarbeitet wurden, prüft die Strategie die aktuelle Position:
- Long-Positionen werden geschlossen, sobald die Gewinndistanz
ProfitTargetPipserreicht oder wenn der VerlustLossLimitPipserreicht. - Short-Positionen werden geschlossen, wenn sich der Schlusskurs um
ProfitTargetPipszu seinen Gunsten oder umLossLimitPipsnach unten bewegt.
- Long-Positionen werden geschlossen, sobald die Gewinndistanz
- Alle Gewinn- und Verlustvergleiche werden in Preiseinheiten durchgeführt, die vom
PriceStepdes Symbols abgeleitet sind, wodurch die Pip-basierten Prüfungen im MetaTrader-Experten originalgetreu nachgebildet werden.
Logik zur Positionsgrößenbestimmung
- Wenn
LotIncreasedeaktiviert ist, handelt die Strategie bei jedem Signal mit dem konstanten WertBaseVolume. - Wenn
LotIncreaseaktiviert ist, speichert die erste Kerze den Startsaldo pro Lot (initial balance / BaseVolume). Nachfolgende Kerzen berechnen das Verhältnis zwischen dem aktuellen Saldo und dieser Basislinie, runden es auf eine Dezimalstelle (imitierenNormalizeDouble(..., 1)von MQL4) und begrenzen das Ergebnis auf maximal 500 Lots. Der berechnete Wert wird dann als Ordervolumen für den nächsten Trade verwendet. - Wenn keine Portfolioinformationen verfügbar sind, greift die Strategie ordnungsgemäß auf den statischen
BaseVolumezurück.
Nutzungsrichtlinien
- Hängen Sie die Strategie an das gewünschte Instrument an und bestätigen Sie, dass der
Security.PriceStepdie Pip-Größe widerspiegelt, mit der Sie handeln möchten. - Wählen Sie den Kerzenzeitraum in
CandleTypeaus. Das ursprüngliche Skript wurde normalerweise in Intraday-Zeiträumen (5–15 Minuten) ausgeführt, es kann jedoch jede beliebige Balkengröße verwendet werden. - Passen Sie die Bandeinstellungen, Pip-Offsets und Risikokontrollen an Ihre Handelspräferenzen an.
- Entscheiden Sie, ob die Positionsgröße mit dem Kontostand (
LotIncrease) skalieren oder fest bleiben soll. - Starten Sie die Strategie. Überwachen Sie das Protokoll, um sicherzustellen, dass Ein- und Ausstiege bei abgeschlossenen Kerzen auf dem erwarteten Preisniveau erfolgen.
Unterschiede zur MetaTrader-Version
- StockSharp funktioniert mit aggregierten Positionen. Selbst wenn
OneOrderOnlydeaktiviert ist, ist das Ergebnis eine einzelne Nettoposition und nicht mehrere unabhängige Tickets. - Die Take-Profit- und Stop-Loss-Regeln werden direkt in der Strategie implementiert, anstatt ausstehende Aufträge mit bestimmten Preisniveaus zu registrieren. Das resultierende Verhalten ist jedoch gleichwertig, da bei jeder fertigen Kerze eine Überprüfung erfolgt.
- Protokollierungsflags (
logging,logerrs,logtick) vom ursprünglichen Experten werden weggelassen; Die integrierte Protokollierung von StockSharp zeichnet bereits Auftrags- und Handelsereignisse auf. - Dateibasierte Protokollierung und Statistiken aus der Version MetaTrader werden nicht neu erstellt, da StockSharp umfangreichere Analysen über Portfolios und Strategien bereitstellt.