Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4396
Beiträge: 40162
Benutzer: 6.773
Aktive Benutzer: 228
Links: 80
Wir begrüßen unseren neuesten Benutzer: Muhammad ali001
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- Muhammad...
vor 22 Stunden
- wiktor
vor 2 Tagen
- Pierrot150...
vor 3 Tagen
- doanabogda...
vor 5 Tagen
- mausgamble...

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 65
Gesamt: 65
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 280
AVT befindet sich auf einem aufstrebenden Ast
Standard Brokers tatsächliche Preis-Digits ermitteln

Ausgangslage:
Dax CFD mit Broker JFD (kann man ja nennen): _Digits=2, aber die Kurse werden werden nicht etwa wie man vermuten könnte, als 2er Nachkommastelle gestellt, sondern nur als 1ner. Beispieltabelle:
Code:
Zeit: 17:51 Bid/Ask: 11895.60 11897.30
Zeit: 17:51 Bid/Ask: 11895.40 11897.10
Zeit: 17:51 Bid/Ask: 11895.60 11897.30
Zeit: 17:51 Bid/Ask: 11896.10 11897.80
Zeit: 17:51 Bid/Ask: 11897.60 11899.30
Zeit: 17:51 Bid/Ask: 11895.40 11897.10
Zeit: 17:51 Bid/Ask: 11895.60 11897.30
Zeit: 17:51 Bid/Ask: 11895.40 11897.10
Zeit: 17:51 Bid/Ask: 11894.90 11896.60
Zeit: 17:51 Bid/Ask: 11894.60 11896.30
Zeit: 17:51 Bid/Ask: 11893.60 11895.30
Zeit: 17:51 Bid/Ask: 11896.60 11898.30
Zeit: 17:51 Bid/Ask: 11896.40 11898.10
Zeit: 17:51 Bid/Ask: 11896.60 11898.30
Zeit: 17:51 Bid/Ask: 11897.40 11899.10
Zeit: 17:51 Bid/Ask: 11897.10 11898.80
Zeit: 17:51 Bid/Ask: 11897.40 11899.10
Zeit: 17:51 Bid/Ask: 11897.10 11898.80
Zeit: 17:51 Bid/Ask: 11900.60 11902.30
Zeit: 17:51 Bid/Ask: 11899.90 11901.60
Zeit: 17:51 Bid/Ask: 11900.40 11902.10
Zeit: 17:51 Bid/Ask: 11900.90 11902.60
Zeit: 17:51 Bid/Ask: 11900.10 11901.80
Zeit: 17:51 Bid/Ask: 11900.40 11902.10
Zeit: 17:51 Bid/Ask: 11900.10 11901.80
Zeit: 17:51 Bid/Ask: 11900.60 11902.30
Zeit: 17:51 Bid/Ask: 11901.90 11903.60
Zeit: 17:51 Bid/Ask: 11902.90 11904.60
Zeit: 17:51 Bid/Ask: 11902.10 11903.80
Zeit: 17:51 Bid/Ask: 11902.40 11904.10
Zeit: 17:51 Bid/Ask: 11903.10 11904.80
Zeit: 17:51 Bid/Ask: 11902.40 11904.10
Zeit: 17:51 Bid/Ask: 11903.40 11905.10
Zeit: 17:51 Bid/Ask: 11903.60 11905.30
Hier sieht man .10, .30, .40 usw. Gibt es einen Weg außerhalb von "muß man halt beobachten oder aufzeichnen" festzustellen, auf welcher Kommastelle ein Broker die Preise setzt?
Und wie gehe ich damit um in Bedingungsformulierungen?
(Ok, man könnte die Bedingung komplett ohne Digits, also als Ganzzahl formulieren, aber wohin soll das bei Forex führen ?)
Hat jemand einen Vorschlag? Danke. AVT
Mit Zitat antworten
  #2 (permalink)  
Alt vor 4 Wochen
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 189
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Ich denke bei JFD und Dax, musst Du den Point-Wert mit 100 multiplizieren.
Gruß
Mit Zitat antworten
  #3 (permalink)  
Alt vor 4 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 280
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Ich denke bei JFD und Dax, musst Du den Point-Wert mit 100 multiplizieren.
Gruß
Danke Dir, ... oder NormalizeDouble(x,1) ... oder int MyDigits=1

Nur dann weiß ich immer noch nicht, wie das bei anderen Indizes aussieht, z.B. CAC, FTSE, S&P, DOW (der hat nach meiner Erfahrung teilweise nur .50er Preise) - ganz zu schweigen von all den Forex-Paaren. Ich kann doch nicht dauernd irgendwelche Listen laufen lassen, um die tatsächlichen Preis-Digits zu erfahren.
Noch mehr Ideen? AVT
Mit Zitat antworten
  #4 (permalink)  
Alt vor 4 Wochen
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 189
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AVT Beitrag anzeigen
Danke Dir, ... oder NormalizeDouble(x,1) ... oder int MyDigits=1

Nur dann weiß ich immer noch nicht, wie das bei anderen Indizes aussieht, z.B. CAC, FTSE, S&P, DOW (der hat nach meiner Erfahrung teilweise nur .50er Preise) - ganz zu schweigen von all den Forex-Paaren. Ich kann doch nicht dauernd irgendwelche Listen laufen lassen, um die tatsächlichen Preis-Digits zu erfahren.
Noch mehr Ideen? AVT
Ja leider, das ist genau das Problem, dann kommt noch dazu, dass die Teile bei jedem Broker anders heißen. Ich für meinen Teil habe das hart verdrahtet, zuerst abfragen, gehört es in die Liste der CFDs, dann die Digits. Ich bin mir aber nicht sicher, ob das auch immer zum Erfolg führt. So eine Liste kannst Du ja in der Init initialisieren... und dann den jeweiligen Multiplikator (PipValue) festlegen.

So mache ich das für mein Dax-Trading bei JFD bzw. ICMarkets:

PipValue = 1;
if(Symbol() == "DE30" || Symbol() == ".DE30Cash" || Symbol() == "US30" || Symbol() == ".US30Cash") {
PipValue = 100;
} else
{
if (NDigits == 2 ||NDigits == 3 || NDigits == 5) PipValue = 10;
}

hier geht es dann los

}
das kann man mit Arrays sicher eleganter lösen. Für mich zählt aber nur, was für mein Trading brauchbar, nützlich ist und das ich mich nicht verkünsteln muss, bin kein Coder...

Grüße
Mit Zitat antworten
  #5 (permalink)  
Alt vor 4 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 280
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Ja leider, das ist genau das Problem, dann kommt noch dazu, dass die Teile bei jedem Broker anders heißen. Ich für meinen Teil habe das hart verdrahtet, zuerst abfragen, gehört es in die Liste der CFDs, dann die Digits. Ich bin mir aber nicht sicher, ob das auch immer zum Erfolg führt. So eine Liste kannst Du ja in der Init initialisieren... und dann den jeweiligen Multiplikator (PipValue) festlegen.
Grüße
Danke, sowas habe ich befürchtet, na dann führt wohl kein Weg daran vorbei - und das mit den Namen (nicht nur die Namen, sondern auch die Verzeichnisse!) begründen sie ja damit, daß das schließlich "kein echter Markt" (sondern halt nur deren, ich sag' mal so, "Spielzeugname").
Grüße, AVT
Mit Zitat antworten
  #6 (permalink)  
Alt vor 4 Wochen
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 272
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

@AVT

Was du suchst ist denke ich die minimale Preisänderung.
Dafür gibt es SYMBOL_TRADE_TICK_SIZE was die minimale Preisänderung zurückgeben sollte.
https://www.mql5.com/en/docs/constan...tinfoconstants

Die digits müssen nichts mit der TickSize zu tun haben genauso die point-size entspricht nicht immer der TickSize.

Welchen Wert liefert SYMBOL_TRADE_TICK_SIZE bei deinem Underlying?

Im schlechtesten Fall könnte auch das hier greifen und man bekommt nur die blöde Point-Size:
MQL5: Modified the behavior of SYMBOL_TRADE_TICK_SIZE. For symbols with no clearly set tick size, the point size is returned.
https://www.metatrader5.com/en/releasenotes/page11
Dies hat zur Folge hat, dass SYMBOL_TRADE_TICK_SIZE nicht unbedingt korrekt zurückgegeben werden muss sondern dann anstelle dessen die Point-Size kommt.

Wenn ein Underlying wirklich in größeren Sprüngen als point die Preise rausgibt, dann entspricht point eben nicht der tick-size.
zB wäre theoretisch sowas möglich.
point = 0.01
ticksize = 0.1
aber auch sowas
point = 0.01
ticksize = 0.25
Mit Zitat antworten
  #7 (permalink)  
Alt vor 3 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 280
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
Was du suchst ist denke ich die minimale Preisänderung.
Dafür gibt es SYMBOL_TRADE_TICK_SIZE was die minimale Preisänderung zurückgeben sollte.
Welchen Wert liefert SYMBOL_TRADE_TICK_SIZE bei deinem Underlying?
Danke Ca$hDigger - leider sind Deine Befürchtungen richtig, ich bekomme auf alle Abfragen nur diese Werte:
Code:
MODE_POINT: 0.01
MODE_TICKSIZE: 0.01
MODE_TICKVALUE: 0.01
SYMBOL_TRADE_TICK_SIZE: 0.01
(erinnert mich irgendwie an den Fall in einer Bank, wo jemand die Nachkommastellen der Kundenkonten auf sein eigenes Konto "begradigt" hat). AVT
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 17:59 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------