Nivelesfibonacci2

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.

Das erste Tool berechnet die den Fibonacci-Niveaus entsprechenden Kurse und zeichnet die Linien in den Chart ein. Dieses zweite Tool nutzt diese Linien als Referenz, um die Pending-Orders automatisch zu platzieren.

Wie funktioniert es?

Der Nutzer konfiguriert:

  • Richtung der Orders: BUY oder SELL.

  • Lotgröße.

  • Optionaler Take-Profit.

  • Optionaler Stop-Loss.

  • Fibonacci-Niveaus, mit denen Sie handeln möchten.

  • Präfix zur Kennzeichnung der Linien.

  • Magic Number.

  • Kommentar zu den Orders.

Das Skript sucht im Chart nach Linien, deren Name mit dem unter „Präfix“ angegebenen Präfix beginnt:

InpPrefix

Standardmäßig:

FiboCustom_

Wenn das erste Skript beispielsweise Folgendes erstellt hat:

FiboCustom_0.0 FiboCustom_23.6 FiboCustom_38.2 FiboCustom_50.0 FiboCustom_61.8 FiboCustom_100.0 FiboCustom_161.8

kann das zweite Skript ausschließlich die Niveaus auswählen, die verwendet werden sollen.

Beispiel:

InpTargetLevels = "0; 23,6; 38,2; 61,8"

Alle anderen Niveaus werden ignoriert.

Automatische Bestimmung der Orderart

Die Art der Pending-Order wird automatisch anhand der gewählten Richtung und der Position des Niveaus im Verhältnis zum aktuellen Marktpreis bestimmt.

Kaufaufträge

Bei Auswahl von:

DIR_BUY

verwendet das Skript:

Buy Limit

Wenn der Kurs der Linie unter dem aktuellen Ask-Kurs liegt.

Linienkurs < Ask

Es wird eine Order platziert:

BUY LIMIT

Buy Stop

Wenn der Kurs der Orderlinie über dem aktuellen Ask-Kurs liegt.

Linienkurs > Ask-Kurs

Es wird eine Order platziert:

BUY-STOP

SELL-Orders

Wenn ausgewählt:

DIR_SELL

verwendet das Skript:

Sell Limit

Wenn der Kurs der Order über dem aktuellen Geldkurs liegt.

Kurs der Order > Geldkurs

Es wird eine:

SELL LIMIT

Verkaufs-Stop

Wenn der Kurs der Linie unter dem aktuellen Bid-Kurs liegt.

Kurs der Order < Geldkurs

Es wird ein:

SELL STOP

Auf diese Weise muss der Nutzer nicht manuell zwischen Limit und Stop wählen. Das Skript ermittelt automatisch die Art der Order anhand der Position des Fibonacci-Niveaus im Verhältnis zum Markt.

Funktionsbeispiel

Nehmen wir an, der Chart enthält die folgenden Linien:

FiboCustom_0,0 FiboCustom_23,6 FiboCustom_38,2 FiboCustom_50,0 FiboCustom_61,8 FiboCustom_100,0

Und der Benutzer nimmt folgende Einstellungen vor:

Richtung: BUY
Lot: 0,01
Niveaus: 0; 23,6; 38,2; 50; 61,8

Das Skript sucht diese Zeilen, ermittelt die entsprechenden Kurse und entscheidet automatisch, ob es sich bei jeder einzelnen um einen Buy-Limit- oder einen Buy-Stop-Auftrag handelt, abhängig vom aktuellen Ask-Kurs.

Daher kann ein und derselbe Satz von Fibonacci-Niveaus je nach aktueller Marktlage unterschiedliche Ordertypen generieren.

Take Profit und Stop Loss

Das Skript ermöglicht die optionale Eingabe eines Take-Profit- und eines Stop-Loss-Kurses.

Ohne Take-Profit

InpTakeProfit = 0,0

Es wird kein TP festgelegt.

Kein Stop-Loss

InpStopLoss = 0,0

Es wird kein SL festgelegt.

Wenn ein Wert größer als 0,0 eingegeben wird, wird dieser automatisch anhand der Dezimalstellen des Symbols normalisiert:

_Digits

Dadurch lassen sich die Preise an Finanzinstrumente mit unterschiedlicher Anzahl von Dezimalstellen anpassen.

Auswahl der Preisstufen

Die Stufen werden wie folgt eingegeben:

InpTargetLevels

, getrennt durch ;.

Beispiel:

0; 23,6; 38,2; 50; 61,8

Es können auch Werte über 100 % oder negative Werte verwendet werden, sofern die entsprechenden Linien im Diagramm vorhanden sind.

Beispiel:

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

Das Skript verarbeitet nur die ausgewählten Niveaus, die es anhand des konfigurierten Präfixes findet.

Identifizierung anhand des Präfixes

Der Parameter:

InpPrefix

ermöglicht es, festzulegen, welche Objekte des Diagramms berücksichtigt werden sollen.

Standardwert:

FiboCustom_

Beispiel:

FiboCustom_23,6 FiboCustom_50,0 FiboCustom_61,8

werden erkannt.

Diese Funktion ermöglicht es, die von diesem Tool verwendeten Linien von anderen Objekten im Chart getrennt darzustellen.

Magic Number

Der Parameter:

InpMagicNumber

ermöglicht die Identifizierung der vom Skript erstellten Aufträge.

Standardwert:

123456

Die „Magic Number“ ist besonders nützlich, um diese Orders von anderen ausstehenden Orders zu unterscheiden, die möglicherweise auf demselben Konto vorhanden sind.

Kommentar zu den Orders

Der Parameter:

InpOrderComment

ermöglicht es, einen Kommentar zu den Orders festzulegen.

Standardwert:

Fibo_Pending

Dies erleichtert die Identifizierung innerhalb von MetaTrader 5.

Stornierung von ausstehenden Orders

Der Parameter:

InpAction

ermöglicht die Auswahl zwischen zwei Aktionen.

ACTION_PLACE

Platziert die ausstehenden Orders entsprechend den ausgewählten Ebenen.

ACTION_DELETE

Storniert die ausstehenden Aufträge, die alle folgenden Bedingungen erfüllen:

  • Sie gehören zum aktuellen Wert.

  • Sie haben die unter „InpMagicNumber“ angegebene Magic Number.

Dadurch können die von diesem Skript verwalteten ausstehenden Orders gelöscht werden, ohne dass Orders anderer Symbole oder Magic Numbers davon betroffen sind.

Zusammenhang mit NIVELESFIBONACCI1.1

Die beiden Skripte können als zweistufiges System verwendet werden:

NIVELESFIBONACCI1.1 ↓ Berechnet die Fibonacci-Preise ↓ Zeichnet die horizontalen Linien ↓ NIVELESFIBONACCI2.12 ↓ Liest die Linien anhand des Präfixes ↓ Wählt die angegebenen Niveaus aus ↓ Ruft deren Preise ab ↓ Bestimmt automatisch Limit / Stop ↓ Platziert die Pending-Orders

Beispiel:

Erstes Tool

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

Das erste Tool berechnet die Preise für:

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

und zeichnet diese in das Diagramm ein.

Anschließend kann das zweite Werkzeug beispielsweise folgende Werte auswählen:

23,6; 38,2; 50; 61,8

auswählen und die Pending-Orders direkt auf diese Kurse setzen.

Hauptmerkmale
  • Massenplatzierung von Pending-Orders auf Fibonacci-Niveaus.

  • Kompatibel mit benutzerdefinierten Fibonacci-Niveaus.

  • Unabhängige Auswahl der Niveaus, mit denen gehandelt werden soll.

  • Unterstützung für Buy-Limit-Orders.

  • Unterstützung für Buy-Stop-Orders.

  • Unterstützung für Sell-Limit-Orders.

  • Unterstützung für Sell-Stop- Orders.

  • Automatische Ermittlung der Orderart anhand des aktuellen Kurses.

  • Auslesen der Zeilen anhand eines konfigurierbaren Präfixes.

  • Kompatibel mit unterschiedlichen Dezimalstellenanzahlen über _Digits.

  • Automatische Normalisierung der Kurse.

  • Optionaler Take-Profit.

  • Optionaler Stop-Loss.

  • Konfigurierbare Magic Number.

  • Konfigurierbare Orderkommentare.

  • Funktion zum Stornieren der über die Magic Number verwalteten ausstehenden Orders.

  • Erfordert keine externen Indikatoren.

  • Keine DLL erforderlich.

Wichtig

Dieses Skript berechnet die Fibonacci-Niveaus nicht selbst.

Es verwendet die Kurswerte der im Chart vorhandenen horizontalen Linien als Einstiegsniveaus für Pending-Orders.

Um es zusammen mit NIVELESFIBONACCI1.1 zu verwenden, müssen beide Skripte dasselbe Präfix verwenden, standardmäßig:

FiboCustom_

Das Skript generiert zudem keine Kauf- oder Verkaufssignale anhand einer technischen Analyse. Die Richtung der Orders (BUY oder SELL) wird vom Benutzer manuell ausgewählt.

Die Platzierung von Orders ist mit finanziellen Risiken verbunden. Die endgültige Ausführung einer Pending-Order hängt zudem von den Marktbedingungen, den Regeln des Brokers, dem Mindestabstand zwischen Orders, dem zulässigen Volumen, den Stop-Levels und weiteren Einschränkungen des Wertpapiers ab.

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


//+------------------------------------------------------------------+

//| FIBONACCI-NIVEAUS 2.12.mq5 |

//| SPC |

//| https://www.mql5.com/es/users/calimero1166 |

//+------------------------------------------------------------------+

#property copyright „SPC“

#property link "https://www.mql5.com/es/users/calimero1166"

#property version "2.12"

#property description "Skript zur massenhaften Platzierung oder selektiven Stornierung von Pending Orders (Limit/Stop) anhand von Fibonacci-Niveaus, die anhand eines Präfixes ermittelt werden."

#property script_show_inputs


#include <Trade\Trade.mqh>


//--- Aufzählung für die Hauptaktion des Skripts

enum ENUM_SCRIPT_ACTION

{

ACTION_PLACE = 0, // Pending Orders platzieren

ACTION_DELETE = 1 // Ausstehende Aufträge stornieren

};


//--- Auflistung der Auftragsrichtungen

enum ENUM_ORDER_DIRECTION

{

DIR_BUY = 0, // Ausstehende Einkäufe

DIR_SELL = 1 // Ausstehende Verkäufe

};


//--- Eingabeparameter

Eingabegruppe „=== Hauptaktion ===“

input ENUM_SCRIPT_ACTION InpAction = ACTION_PLACE; // Auszuführende Aktion


Eingabegruppe „=== Betriebskonfiguration ===“

input ENUM_ORDER_DIRECTION InpDirection = DIR_BUY; // Richtung der Orders

input double InpLotSize = 0,01; // Lotgröße pro Order

input double InpTakeProfit = 0.0; // Manueller Take-Profit-Kurs (0.0 = kein TP)

input double InpStopLoss = 0,0; // Manueller Stop-Loss als Kurswert (0,0 = kein SL)


input group "=== Auswahl von Niveaus und Präfix ==="

input string InpTargetLevels = "0; 23,6; 38,2; 50; 61,8"; // Zu handelnde Fibonacci-Niveaus (durch ; getrennt)

input string InpPrefix = "FiboCustom_"; // Präfix der zu suchenden Linien


Eingabegruppe „=== Erweiterte Einstellungen ===“

Eingabe ulong InpMagicNumber = 123456; // Magic Number zur Identifizierung der Aufträge

input string InpOrderComment = "Fibo_Pending"; // Kommentar zu den Orders


//+------------------------------------------------------------------+

//| Startfunktion des Skripts |

//+------------------------------------------------------------------+

void OnStart()

{

CTrade trade;

trade.SetExpertMagicNumber(InpMagicNumber);


// --- MODUS 1: AUSSTEHENDE AUFTRÄGE STORNIEREN ---

if(InpAction == ACTION_DELETE)

{

int deletedCount = DeletePendingOrders(trade, InpMagicNumber);

PrintFormat("FIBONACCI-NIVELES 2.12 (v2.12): %d ausstehende Orders mit der Magic-Nummer %d wurden in %s gelöscht.", deletedCount, InpMagicNumber, _Symbol);

return;

}


// --- MODUS 2: PENDENTE AUFTRÄGE EINGEBEN ---

// 1. Den zu durchsuchenden Text der Ebenen 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 Stufen angegeben.");

return;

}


ArrayResize(Zielstufen, Gesamtanzahl der Teilungen);

int validLevelsCount = 0;


for(int i = 0; i < totalSplit; i++)

{

string trimmed = rawLevels[i];

StringTrimLeft(trimmed);

StringTrimRight(trimmed);


if (StringLen(trimmed) > 0)

{

double val = StringToDouble(trimmed);

if (val == 0.0 && trimmed != "0" && trimmed != "0.0" && trimmed != "0,0")

{

continue;

}

targetLevels[validLevelsCount] = val;

validLevelsCount++;

}

}


if(validLevelsCount == 0)

{

Print("Fehler: Die angegebenen Fibonacci-Niveaus konnten nicht interpretiert werden.");

return;

}


// 2. Aktuelle Marktpreise abrufen

double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);

double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);


if (ask <= 0 || bid <= 0)

{

Print("Fehler: Die aktuellen Kursnotierungen konnten nicht abgerufen werden.");

return;

}


// 3. Objekte mit dem Präfix im Graphen suchen

int totalObjects = ObjectsTotal(0, -1, -1);

int ordersPlaced = 0;


for (int i = 0; i < totalObjects; i++)

{

string objName = ObjectName(0, i, -1);


// Prüfen, ob das Objekt mit dem Präfix übereinstimmt

if(StringFind(objName, InpPrefix) == 0)

{

// Die numerische Stufe des Objekts extrahieren

string levelStr = StringSubstr(objName, StringLen(InpPrefix));

double objLevel = StringToDouble(levelStr);


// Prüfen, ob die Ebene der Linie in unserer ausgewählten Liste enthalten ist

if(!IsLevelSelected(objLevel, targetLevels, validLevelsCount))

continue;


double linePrice = ObjectGetDouble(0, objName, OBJPROP_PRICE);

linePrice = NormalizeDouble(linePrice, _Digits);


if(linePrice <= 0)

continue;


// TP und SL normalisieren, sofern sie konfiguriert sind

double tp = (InpTakeProfit > 0) ? NormalizeDouble(InpTakeProfit, _Digits) : 0.0;

double sl = (InpStopLoss > 0) ? NormalizeDouble(InpStopLoss, _Digits) : 0.0;


// 4. Ordertyp ermitteln und senden

if(InpDirection == DIR_BUY)

{

if(linePrice < ask)

{

if(trade.BuyLimit(InpLotSize, linePrice, _Symbol, sl, tp, ORDER_TIME_GTC, 0, InpOrderComment))

{

PrintFormat("Buy-Limit-Order auf dem Niveau %.1f%% zum Preis %.*f platziert", objLevel, _Digits, linePrice);

ordersPlaced++;

}

else

{

PrintFormat("Fehler beim Setzen eines Buy-Limit-Auftrags bei %.1f%%: %s", objLevel, trade.ResultComment());

}

}

else if(linePrice > ask)

{

if(trade.BuyStop(InpLotSize, linePrice, _Symbol, sl, tp, ORDER_TIME_GTC, 0, InpOrderComment))

{

PrintFormat("Buy-Stop-Order auf dem Niveau %.1f%% zum Kurs %.*f platziert", objLevel, _Digits, linePrice);

ordersPlaced++;

}

else

{

PrintFormat("Fehler beim Platzieren eines Buy-Stop-Auftrags bei %.1f%%: %s", objLevel, trade.ResultComment());

}

}

}

else // DIR_SELL

{

if(linePrice > bid)

{

if(trade.SellLimit(InpLotSize, linePrice, _Symbol, sl, tp, ORDER_TIME_GTC, 0, InpOrderComment))

{

PrintFormat("Verkaufslimit auf dem Niveau %.1f%% zum Kurs %.*f platziert", objLevel, _Digits, linePrice);

ordersPlaced++;

}

else

{

PrintFormat("Fehler beim Setzen eines Sell-Limit-Auftrags bei %.1f%%: %s", objLevel, trade.ResultComment());

}

}

else if(linePrice < bid)

{

if(trade.SellStop(InpLotSize, linePrice, _Symbol, sl, tp, ORDER_TIME_GTC, 0, InpOrderComment))

{

PrintFormat("Sell-Stop-Order auf dem Niveau %.1f%% zum Kurs %.*f platziert", objLevel, _Digits, linePrice);

ordersPlaced++;

}

else

{

PrintFormat("Fehler beim Setzen eines Sell-Stop-Auftrags bei %.1f%%: %s", objLevel, trade.ResultComment());

}

}

}

}

}


PrintFormat("FIBONACCI-NIVEAUS 2.12 (v2.12): Vorgang abgeschlossen. Gesamtzahl der platzierten Orders: %d", ordersPlaced);

}


//+------------------------------------------------------------------+

//| Hilfsfunktion zur Überprüfung, ob ein Level zur Liste gehört |

//+------------------------------------------------------------------+

bool IsLevelSelected(double level, const double &selectedLevels[], int count)

{

for(int i = 0; i < count; i++)

{

if(MathAbs(level - selectedLevels[i]) < 0,01)

return true;

}

return false;

}


//+------------------------------------------------------------------+

//| Hilfsfunktion zum Löschen der ausstehenden Aufträge von Magic |

//+------------------------------------------------------------------+

int DeletePendingOrders(CTrade &trade, ulong magic)

{

int deleted = 0;

int GesamtBestellungen = BestellungenGesamt();


// Wir durchlaufen die Bestellungen in umgekehrter Reihenfolge, um Indexabweichungen zu vermeiden

for(int i = totalOrders - 1; i >= 0; i--)

{

ulong ticket = OrderGetTicket(i);

if(ticket > 0)

{

if(OrderGetString(ORDER_SYMBOL) == _Symbol && OrderGetInteger(ORDER_MAGIC) == magic)

{

if(trade.OrderDelete(ticket))

deleted++;

else

PrintFormat("Fehler beim Löschen des Auftrags Nr. %d: %s", ticket, trade.ResultComment());

}

}

}

return deleted;

}

//+------------------------------------------------------------------+


Weitere Produkte dieses Autors
NivelesFibonacci
Sergio Piqueras Cuevas
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 e
FREE
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
Auswahl:
Keine Bewertungen
Antwort auf eine Rezension