Das passt aber nicht bei Forex. Ein Spread ist definitiv vorhanden, aber zurückgegeben wird (bis auf Ausnahmen) "0". In Minuten, wo der Spread wahrscheinlich 10 Pips ist, wird "1" zurückgegeben aber das ist höchst ungenau. Da kann man _nichts_ mit anfangen!
Ich glaube, da liegst Du falsch oder hast Du Beweise? (Ask-Bid)/_Point. Es gibt Broker, die bieten feste Spread an und welche mit variablen (SymbolInfoInteger()):
SYMBOL_SPREAD_FLOAT | Indication of a floating spread | bool |
SYMBOL_SPREAD | Spread value in points | int |
Das passt aber nicht bei Forex. Ein Spread ist definitiv vorhanden, aber zurückgegeben wird (bis auf Ausnahmen) "0". In Minuten, wo der Spread wahrscheinlich 10 Pips ist, wird "1" zurückgegeben aber das ist höchst ungenau. Da kann man _nichts_ mit anfangen!
Hallo,
ich habe einen Kode erstellt mit Vier Spread-Varianten.
Wählen Sie Ihren aus.
//+------------------------------------------------------------------+ //| SpreadDigits.mq5 | //| Copyright 2023, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Trade/SymbolInfo.mqh> CSymbolInfo m_symbol; int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { int digits_adjust=1; if(m_symbol.Digits()==2 || m_symbol.Digits()==5) { digits_adjust=1; } else { digits_adjust=10; } ulong Spread = SymbolInfoInteger(_Symbol,SYMBOL_SPREAD); ulong SpreadDigitsAdjust = SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)*digits_adjust; double SpreadDigits = NormalizeDouble(Spread,_Digits); double SpreadPoint = SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)*_Point; Print("Spread: "+(string)Spread); Print("SpreadDigitsAdjust: "+(string)SpreadDigitsAdjust); Print("SpreadDigits: "+(string)SpreadDigits); Print("SpreadPoint"+(string)SpreadPoint); } //+------------------------------------------------------------------+
Gruß Igor
Hallo,
vielen Dank für die Antworten. Ich will noch kurz die Auflösung berichten:
Ich schrieb: "... Das Feld scheint weder den Spread in pips auszugeben, noch als absolute Differenz zwischen Ask und Bid..."
Das war mein Irrtum. Der neue Broker, mit dem ich diese Tests gemacht habe stellt für EUR-USD einen Spread von minimal 0.8 Pips zur Verfügung. Bei meinem Alten war das minimal 1.6 Pips, daher erwartete ich mindestens eine (abgerundete) "1". Mit den Ausgaben in besonderen Marktphasen scheint es tatsächlich der Wert in Pips zu sein, der dann leicht auf 1 oder mehr ansteigt. Ich denke mal, das wurde für Aktienmärkte (Points) so festgelegt und für Wechselkurse einfach übertragen. Damit ist das also etwas ungenau, aber ich kann damit leben.
Viele Grüße
Alex
Hallo,
vielen Dank für die Antworten. Ich will noch kurz die Auflösung berichten:
Ich schrieb: "... Das Feld scheint weder den Spread in pips auszugeben, noch als absolute Differenz zwischen Ask und Bid..."
Das war mein Irrtum. Der neue Broker, mit dem ich diese Tests gemacht habe stellt für EUR-USD einen Spread von minimal 0.8 Pips zur Verfügung. Bei meinem Alten war das minimal 1.6 Pips, daher erwartete ich mindestens eine (abgerundete) "1". Mit den Ausgaben in besonderen Marktphasen scheint es tatsächlich der Wert in Pips zu sein, der dann leicht auf 1 oder mehr ansteigt. Ich denke mal, das wurde für Aktienmärkte (Points) so festgelegt und für Wechselkurse einfach übertragen. Damit ist das also etwas ungenau, aber ich kann damit leben.
Viele Grüße
Alex
Hallo,
der Brocker schreibt den Spread 0.8 aber in Wirklichkeit ist beim fünfstelligen Preis ist die Differenz 8 und bei 1.6 halt 16 punkte.
Trotzdem alles gute und guten Rutsch.
Gruß Igor

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
ich habe leider über dieses Thema keinen vorhandenen Eintrag finden können und bin darüber etwas überrascht. Ich hole über die Price History historische Forex-Daten (EUR-USD). Im Array MqlRates gibt es das Feld "spread", das ein int ist.
Warum? Wir kann ich anhand dieses Wertes (der außer in Phasen niedriger Liquidität immer 0 ist) den Spread auslesen? Das Feld scheint weder den Spread in pips auszugeben, noch als absolute Differenz zwischen Ask und Bid.
Danke und Gruß
Alex