Ratgeber · ATAS

ATAS-Indikator selbst programmieren oder programmieren lassen?

ATAS-Indikatoren sind Klassen in C#. Wer programmieren kann, kann sie selbst schreiben. Hier steht, was du dafür brauchst, wo es in der Praxis hakt und ab wann sich ein Entwickler lohnt.

Kurz gesagt

  • Selbst machen lohnt sich, wenn du C# kannst, Zeit zum Ausprobieren hast und eine einfache Logik auf Preis oder Volumen umsetzen willst.
  • Programmieren lassen lohnt sich bei Orderflow-Logik, bei Strategien mit echten Orders und wenn der Indikator auf anderen Rechnern laufen soll, mit anderen ATAS-Versionen oder Zeitzonen.
  • In beiden Fällen beginnt die Arbeit nicht im Code, sondern mit Regeln, die so genau aufgeschrieben sind, dass zwei Menschen dasselbe darunter verstehen.

Was du zum Selbermachen brauchst

Ein ATAS-Indikator ist eine C#-Klasse, die von Indicator erbt. Strategien erben von ChartStrategy. Für jede Kerze ruft ATAS die Methode OnCalculate auf. Dort liest der Code die Kerze mit GetCandle und schreibt Ergebnisse in Datenreihen, die ATAS im Chart zeichnet.

  • Einen Windows-Rechner mit ATAS. ATAS läuft nur unter Windows, auf dem Mac geht es über eine virtuelle Maschine.
  • Visual Studio (die kostenlose Community-Version reicht) mit dem passenden .NET SDK.
  • Verweise auf die ATAS-Bibliotheken aus dem Programmordner, vor allem ATAS.Indicators.dll.
  • Grundkenntnisse in C# und objektorientierter Programmierung.
  • Die fertige DLL kommt in den Ordner Dokumente\ATAS\Indicators (Strategien in Strategies). Taucht er nicht auf, ATAS neu starten.

ATAS stellt eine Entwickler-Dokumentation mit Beispielen bereit. Für einen gleitenden Durchschnitt oder ein einfaches Signal auf Schlusskursen reicht das mit etwas Geduld aus.

Stolpersteine aus echten Projekten

Diese Fehler sind mir in Aufträgen tatsächlich begegnet. Keiner davon steht als Warnung in der Dokumentation.

Die falsche .NET-Version

ATAS 7 läuft auf .NET 8, neuere ATAS-8-Versionen auf .NET 10. Eine DLL für das falsche Zielframework lädt nicht, oft ohne verständliche Fehlermeldung: Der Indikator taucht einfach nicht auf. Dazu kommt: Eine DLL, die gegen eine neuere ATAS-Version gebaut ist, lädt auf einer älteren nicht. Deshalb baue ich immer gegen die älteste Version, die der Kunde einsetzt.

Zeitzonen

Seit ATAS 8 tragen Kerzen die Zeit des Datenfeeds, nicht die Uhrzeit des Rechners. Ein Indikator, der um 15:30 Uhr etwas tun soll, funktioniert beim Entwickler und bleibt beim Kunden in einer anderen Zeitzone stumm. Die Market Replay verdeckt den Fehler, weil dort jede Uhrzeit durchlaufen wird. Abhilfe: entweder die Rechneruhr als Bezug nehmen oder den Zeitversatz als Einstellung anbieten.

Gespeicherte Einstellungen

ATAS speichert alle Einstellungen eines Indikators mit dem Chart. Ändert eine neue Version einen Standardwert, sieht der Nutzer weiterhin den alten Wert und wundert sich, warum die Neuerung nicht greift. Abhilfe: die Einstellung umbenennen oder den Indikator einmal entfernen und neu hinzufügen.

Absturz im Einstellungsfenster

Eine gemeinsame abstrakte Basisklasse mit öffentlichen Einstellungen oder Sonderzeichen in den Anzeigenamen haben bei mir schon ATAS abstürzen lassen, sobald man den Indikator nur auswählte. Seitdem erbt jeder Indikator direkt von Indicator, gemeinsame Logik steckt in Hilfsklassen, und Anzeigenamen bleiben ohne Sonderzeichen.

Unlesbare Beschriftung im Chart

ATAS hängt alle als Parameter markierten Einstellungen an den Namen oben links im Chart. Bei zehn Einstellungen ist die Zeile nicht mehr lesbar. Ein kurzer Anzeigename und eine eigene ToString-Methode lösen das.

Orderflow: der eigentliche Grund für ATAS

Wer ATAS wählt, will meist an die Cluster-Daten: Volumen und Delta je Preis innerhalb der Kerze. Damit lassen sich Absorption, Imbalances oder Volumenprofile berechnen. Die Schwierigkeit liegt selten im Code, sondern in der Definition. Was genau ist Absorption? Wie viel Volumen, auf wie vielen Preisstufen, in welcher Zeit? Ich lasse mir das deshalb vor dem Programmieren an Beispielen aus dem Chart zeigen und schreibe die Regeln zurück, bevor ich die erste Zeile Code schreibe.

Ob ATAS oder NinjaTrader besser zu deiner Strategie passt, steht im Vergleich ATAS oder NinjaTrader.

Wann sich ein Entwickler lohnt

  • Strategie mit echten Orders: OCO, Stop, Teilziele, Break-even. Ein Fehler kostet hier Geld, nicht nur Zeit.
  • Orderflow-Logik: Cluster-Daten, Delta, Absorption, Volumenprofile.
  • Weitergabe: Der Indikator soll bei anderen Tradern laufen, mit anderen ATAS-Versionen, Zeitzonen oder einem Lizenzschutz.
  • Zeit: wenn dich das Einarbeiten mehr Abende kostet, als dir der Auftrag wert ist.

Zur Einordnung: Meine bisherigen ATAS-Aufträge lagen als Festpreis zwischen 265 und 350 $ für Indikatoren und Strategien, Erweiterungen wie ein Lizenzschutz zwischen 150 und 165 $. Die ganze Liste steht im Ratgeber Was kostet ein Trading-Bot?.

So läuft ein Auftrag bei mir

  1. Du beschreibst die Regeln und zeigst Beispiele aus dem Chart.
  2. Ich schreibe die Regeln zurück, du bestätigst sie.
  3. Du bekommst eine Testversion als DLL.
  4. Wir gleichen sie in der Market Replay und im Live-Chart ab.
  5. Auslieferung mit Quellcode.

Hinweis: Ich programmiere Software nach deiner Vorgabe. Das ist keine Anlageberatung und kein Signal-Dienst. Über Strategie, Einsatz und Risiko entscheidest du allein. Der Handel mit Futures, CFDs, Devisen und Kryptowerten ist riskant und kann zum Totalverlust führen. Backtests und vergangene Ergebnisse sagen nichts über künftige Ergebnisse aus.

FAQ

Häufige Fragen

In welcher Sprache werden ATAS-Indikatoren programmiert?

In C# auf .NET. Indikatoren erben von der Klasse Indicator, Strategien von ChartStrategy.

Läuft ATAS auf dem Mac?

Nein, ATAS läuft nur unter Windows. Auf dem Mac geht es über eine virtuelle Maschine.

Warum taucht mein Indikator in ATAS nicht auf?

Häufigster Grund ist ein falsches Zielframework oder eine DLL, die gegen eine neuere ATAS-Version gebaut wurde als die installierte. ATAS 7 nutzt .NET 8, neuere ATAS-8-Versionen .NET 10.

Kann ich einen TradingView-Indikator nach ATAS übertragen?

Ja. Die Logik wird in C# neu geschrieben und danach Kerze für Kerze mit dem Original abgeglichen.

Bekomme ich den Quellcode?

Bei meinen Aufträgen immer, zusammen mit der fertigen DLL.