NivelesFibonacci

FIBONACCI-NIVEAUS 1.14 – Projektion benutzerdefinierter Fibonacci-Niveaus

Dieses Skript für MetaTrader 5 ermöglicht die automatische Berechnung und Darstellung benutzerdefinierter Fibonacci-Niveaus auf der Grundlage von zwei bekannten Kurswerten und den entsprechenden Fibonacci-Niveaus.

Das Tool nutzt ein lineares mathematisches Verhältnis zwischen den beiden eingegebenen Punkten, um jedes vom Benutzer gewünschte Fibonacci-Niveau zu projizieren.

Wie funktioniert es?

Der Benutzer muss Folgendes eingeben:

  • Kurs von Punkt A
  • Dem Punkt A zugewiesene Fibonacci-Stufe
  • Kurs von Punkt B
  • Dem Punkt B zugewiesene Fibonacci-Stufe

Anhand dieser beiden Referenzpunkte berechnet das Skript automatisch den Preis für jedes Fibonacci-Niveau, das in der Niveau-Liste angegeben ist.

Beispiel:

Punkt A → 1,16594 = 100 % Punkt B → 1,16363 = 423,6 %

Anhand dieser Daten kann das Skript Niveaus wie die folgenden berechnen und einzeichnen:

0 %
23,6 %
38,2 %
50 %
61,8 %
100 %
161,8 %
261,8 %
423,6 %

Die Niveaus können über die Eingabeparameter frei angepasst werden.

Hauptmerkmale

  • Mathematische Projektion benutzerdefinierter Fibonacci-Niveaus.
  • Ermöglicht die Verwendung beliebiger Fibonacci-Niveaus als Referenz.
  • Ermöglicht die Arbeit mit positiven oder negativen Niveaus.
  • Vollständig konfigurierbare Liste der Niveaus.
  • Die Linien werden als horizontale Linien im Chart eingezeichnet.
  • Automatische Anpassung an die Anzahl der Dezimalstellen des Wertpapiers über _Digits.
  • Normalisierung des berechneten Kurses auf die Anzahl der Dezimalstellen des Vermögenswerts.
  • Informativer Tooltip mit dem Fibonacci-Niveau und dem entsprechenden Kurs.
  • Die generierten Linien verwenden ein identifizierendes Präfix, um ihre Verwaltung zu erleichtern.
  • Möglichkeit, alle vom Skript generierten Linien über die Option ACTION_DELETEzu löschen .
  • Ermöglicht die Konfiguration von Farbe, Stil und Stärke der Linien.
  • Es werden keine externen Indikatoren verwendet und es sind keine DLLs erforderlich.

Konfiguration

In den Einstellungen für bekannte Preise:

InpPriceA InpFiboLevelA InpPriceB InpFiboLevelB

werden die beiden bekannten Punkte eingegeben.

Unter „Zu zeichnende Ebenen“:

InpTargetLevels

werden die Ebenen angegeben, die dargestellt werden sollen, getrennt durch ;.

Beispiel:

0; 23,6; 38,2; 50; 61,8; 100; 161,8; 261,8; 423,6

Verwaltung der Linien

Mitdem Parameter InpAction kann zwischen folgenden Optionen gewählt werden:

ACTION_DRAW
Berechnet und zeichnet die konfigurierten Niveaus.

ACTION_DELETE
Löscht die von diesem Skript erstellten Linien unter Verwendung des in ` InpPrefix`konfigurierten Präfixes .

Wichtig

Dieses Skript ist ein mathematisches und grafisches Werkzeug zur Projektion von Fibonacci-Niveaus.

Es generiert keine Kauf- oder Verkaufssignale, führt keine Transaktionen durch und stellt an sich kein automatisches Handelssystem dar.

Die berechneten Niveaus hängen direkt von den beiden vom Benutzer eingegebenen Kursen und Fibonacci-Niveaus ab.

Version: 1.14
Plattform: MetaTrader 5
Typ: Skript
Autor: SPC

//+------------------------------------------------------------------+
//| NIVELESFIBONACCI1.1.mq5 |
//| SPC |
//+------------------------------------------------------------------+
#property copyright "SPC"
#property version „1.14“
#property script_show_inputs

//--- Aufzählung zur Auswahl der Skriptaktion
enum ENUM_SCRIPT_ACTION
{
ACTION_DRAW = 0, // Ebenen zeichnen
ACTION_DELETE = 1 // Gezeichnete Linien löschen
};

//--- Eingabeparameter (Input Parameters)
Eingabegruppe „=== Hauptaktion ===“
input ENUM_SCRIPT_ACTION InpAction = ACTION_DRAW; // Auszuführende Aktion

Eingabegruppe „=== Konfiguration bekannter Preise ===“
input double InpPriceA = 1,16594; // Preis von Punkt A
Eingabe double InpFiboLevelA = 100,0; // Punkt A zugewiesenes Fibo-Niveau (%)
input double InpPriceB = 1,16363; // Kurs von Punkt B
input double InpFiboLevelB = 423,6; // Punkt B zugewiesener Fibonacci-Level (%)

input group "=== Zu zeichnende Niveaus ==="
input string InpTargetLevels = "0; 23,6; 38,2; 50; 61,8; 100; 161,8; 261,8; 423,6"; // Fibonacci-Niveaus in % (durch ; getrennt)

input group "=== Stil der horizontalen Linien ==="
Eingabe Farbe InpLineColor = clrOrange; // Farbe der Linien
input ENUM_LINE_STYLE InpLineStyle = STYLE_SOLID; // Linienstil
input int InpLineWidth = 3; // Linienstärke
input string InpPrefix = "FiboCustom_";// Präfix zur Identifizierung der Linien

//+------------------------------------------------------------------+
//| Startfunktion des Skripts |
//+------------------------------------------------------------------+
void OnStart()
{
// 1. Wenn die ausgewählte Aktion „LÖSCHEN“ ist, führen wir die Bereinigungsfunktion aus und beenden das Skript
if(InpAction == ACTION_DELETE)
{
DeleteFiboLines(InpPrefix);
ChartRedraw(0);
Print("NIVELESFIBONACCI1.1 (v1.14): Alle Linien mit dem Präfix '", InpPrefix, "' wurden gelöscht.");
return;
}

// 2. Überprüfung zur Vermeidung einer Division durch Null im Modus „ZEICHNEN“
if(InpFiboLevelA == InpFiboLevelB)
{
Print("Fehler: Die Fibo-Ebenen A und B dürfen nicht identisch sein.");
return;
}

// 3. Vom Benutzer eingegebene benutzerdefinierte Niveaus verarbeiten
double targetLevels[];
ushort u_sep = StringGetCharacter(";", 0);
string rawLevels[];
int totalSplit = StringSplit(InpTargetLevels, u_sep, rawLevels);

if (totalSplit <= 0)
{
Print("Fehler: In InpTargetLevels wurden keine gültigen Level angegeben.");
return;
}

ArrayResize(targetLevels, totalSplit);
int validCount = 0;

for(int i = 0; i < totalSplit; i++)
{
string trimmed = rawLevels[i];
StringTrimLeft(trimmed);
StringTrimRight(trimmed);

if (StringLen(trimmed) > 0)
{
// Überprüfung, um nicht-numerische Werte (z. B. „abc“) zu entfernen
double val = StringToDouble(trimmed);
if (val == 0.0 && trimmed != "0" && trimmed != "0.0" && trimmed != "0,0")
{
Print("Hinweis: Der Wert '", trimmed, "' ist keine gültige Zahl und wird ignoriert.");
continue;
}

targetLevels[validCount] = val;
validCount++;
}
}

if(validCount == 0)
{
Print("Fehler: Die angegebenen Fibonacci-Niveaus konnten nicht interpretiert werden.");
return;
}

// 4. Berechnung der Preisänderung pro 1 % Fibonacci
double pricePerUnit = (InpPriceB - InpPriceA) / (InpFiboLevelB - InpFiboLevelA);

// 5. Projektion und direkte Darstellung, angepasst an die Dezimalstellen des Vermögenswerts (_Digits)
for(int i = 0; i < validCount; i++)
{
double currentPct = targetLevels[i];
double Rohpreis = InpPriceA + (PreisProEinheit * (aktuellerProzentsatz - InpFiboLevelA));
// Normalisierung des Kurses auf die genaue Anzahl von Dezimalstellen des aktuellen Symbols
double targetPrice = NormalizeDouble(rawPrice, _Digits);

string objName = InpPrefix + DoubleToString(currentPct, 1);

// Vorhandenes Objekt löschen, falls vorhanden, um die Linie zu aktualisieren
ObjectDelete(0, objName);

if(ObjectCreate(0, objName, OBJ_HLINE, 0, 0, targetPrice))
{
ObjectSetInteger(0, objName, OBJPROP_COLOR, InpLineColor);
ObjectSetInteger(0, objName, OBJPROP_STYLE, InpLineStyle);
ObjectSetInteger(0, objName, OBJPROP_WIDTH, InpLineWidth);
ObjectSetInteger(0, objName, OBJPROP_SELECTABLE, true);
ObjectSetInteger(0, objName, OBJPROP_SELECTED, false);

// Dynamische Formatierung des angezeigten Werts mit den automatischen Dezimalstellen des Vermögenswerts (_Digits)
string tooltip = StringFormat("Fibo %.1f%% : %.*f", currentPct, _Digits, targetPrice);
ObjectSetString(0, objName, OBJPROP_TOOLTIP, tooltip);
}
}

ChartRedraw(0);
Print("FIBONACCI-NIVEAUS 1.1 (v1.14): Projektion mit ", validCount, " gültigen Niveaus abgeschlossen.");
}

//+------------------------------------------------------------------+
//| Hilfsfunktion zum Löschen von Objekten anhand eines Präfixes |
//+------------------------------------------------------------------+
void DeleteFiboLines(string prefix)
{
int totalObjects = ObjectsTotal(0, -1, -1);
// Wir durchlaufen die Objekte in umgekehrter Reihenfolge, um Indexabweichungen beim Löschen zu vermeiden
for(int i = totalObjects - 1; i >= 0; i--)
{
string objName = ObjectName(0, i, -1);
if(StringFind(objName, prefix) == 0)
{
ObjectDelete(0, objName);
}
}
}
//+------------------------------------------------------------------+
Weitere Produkte dieses Autors
TendenciaPrecioFecha
Sergio Piqueras Cuevas
AutoFindBestTrendLine – Automatischer Trendlinien-Erkenner Allgemeine Beschreibung: AutoFindBestTrendLine ist ein Dienstprogramm für MetaTrader 5, das den historischen Chartverlauf analysiert und automatisch die bestmögliche Trendlinie ermittelt, sei es anhand von Höchstständen (Widerständen), Tiefstständen (Unterstützungen) oder beidem. Das Skript identifiziert die beiden relevantesten Punkte und zeichnet eine optimale Linie, die auf der Anzahl der tatsächlichen Berührungspunkte mit dem Kurs ba
FREE
Nivelesfibonacci2
Sergio Piqueras Cuevas
FIBONACCI-NIVEAUS 2.12 – Pending-Orders auf benutzerdefinierten Fibonacci-Niveaus Dieses Skript für MetaTrader 5 ermöglicht es, automatisch Pending-Orders zum Kauf oder Verkauf zu platzieren, wobei zuvor im Chart eingezeichnete horizontale Fibonacci-Niveaus als Referenz dienen. Das Skript ist für die Verwendung in Verbindung mit FIBONACCI-NIVEAUS 1.1 konzipiert, kann jedoch mit beliebigen horizontalen Linien verwendet werden, die dank des konfigurierten Präfixes derselben Namensstruktur folgen.
FREE
Auswahl:
Keine Bewertungen
Antwort auf eine Rezension