Geschrieben 19. Juni 200917 Jr. comment_76140 Hier eine Möglichkeit für das Arbeiten mit 5 digits(5 Stellen hinter dem Komma). Den Parameter 5Digits stellt man auf TRUE wenn 5 digits ansonsten FALSE.Im Code arbeitet man dann immer mit der Variable pPoint(statt Point) die wärend der initialization Ihren Wert zugewiesen bekommen hat.double pPoint; extern bool 5Digits = false; //TRUE wenn Broker mit 5 digits int init() { Comment(""); pPoint = Point; if (5Digits) pPoint *= 10; } int start() { double dh = iHigh(NULL,1440,0)+5*pPoint; Comment("\naktuelle Tageshoch + 5 pips = "+DoubleToStr(dh,Digits)); } int deinit() { Comment(""); } Melden
Geschrieben 19. Juni 200917 Jr. comment_76142 Danke Alex! Hier noch eine kleiner Zusammenstellung der Broker, die aktuell bei Kursstellung 5 Nachkommastellen anzeigen Melden
Geschrieben 19. Juni 200917 Jr. comment_76157 Den Parameter 5Digits stellt man auf TRUE wenn 5 digits ansonsten FALSE Ist das so etwas wie ein Plausibilitätscheck? Melden
Geschrieben 19. Juni 200917 Jr. Autor comment_76169 Wenn man seinen code(script,experts...) bei einem Broker mit 5 digits benutzt, stellt man den Parameter auf true(an).Ansonsten auf false(aus). oder was meinst du? Melden
Geschrieben 19. Juni 200917 Jr. comment_76170 So in der Art.Ich stellte mir vorhin die Frage, ob sich so eine Plausibilitätsprüfung eventuell in Mythos' Library einbauen lassen könnte. Wäre aber auch möglich, dass ich dabei vollkommen falsch liege. Melden
Geschrieben 19. Juni 200917 Jr. comment_76172 Ich stellte mir vorhin die Frage, ob sich so eine Plausibilitätsprüfung eventuell in Mythos' Library einbauen lassen könnte.Na ja, es ist eher ne externe Vorgabe im Sinne einer Konfiguration: Du SAGST dem Programm, dass der Broker mit 5 digits arbeitet und nicht nur mit 4. Kein Plausibilitäts-Check. Einbauen in Mythos' Lib könnte man/er es aber. Melden
Geschrieben 19. Juni 200917 Jr. comment_76176 Meine Denke ist ja ganz einfach. So in etwa: Skript/ Library o.V. prüft (automatisch), ob Broker 5 Digit Pricing anbietet, JA True ==> NEIN False Melden
Geschrieben 19. Juni 200917 Jr. comment_76178 Meine Denke ist ja ganz einfach.......falsch. So in etwa: Skript/ Library o.V. prüft (automatisch), ob Broker 5 Digit Pricing anbietet, JA True ==> NEIN FalseDU bzw. das Skript SAGT dem Programm, dass der Broker 5 Digit Pricing anbietet (was natürlich auch falsch sein kann, wenn dieser es nicht tut, sondern nur die Boolsche Variable im Skript den falschen Wert hat). Dieses Konfigurieren müsste man zumindest einmal am Beginn machen und z.B. ne Variable in Mythos' Lib setzen, danach kann man ja diese immer wieder mit Deiner If-Geschichte abtesten. Es ist bei dem Code aber nicht so, dass man den Broker fragt, was dieser anbietet. Ich weiß auch gar nicht, ob das überhaupt geht, denn sonst hätte FinGer ja nicht das Skript gepostet. Melden
Geschrieben 19. Juni 200917 Jr. comment_76180 Wenn ich Dir folgen kann, hieße dass aber auch, dass ich mitdenken muss? Den Job soll doch aber der Automat übernehmen Melden
Geschrieben 19. Juni 200917 Jr. comment_76182 Wenn ich Dir folgen kann, hieße dass aber auch, dass ich mitdenken muss? Den Job soll doch aber der Automat übernehmenAh, Du hast also doch das neue Feature einbauen lassen mit der Garderobenfrau am Tom-Next-Eingang, bei der man nicht nur Mäntel und Hüte, sondern auch das Gehirn abgeben kann ?!! Hatte ich damals nicht ein Veto dagegen eingelegt ? Melden
Geschrieben 19. Juni 200917 Jr. comment_76186 Ah, Du hast also doch das neue Feature einbauen lassen mit der Garderobenfrau am Tom-Next-Eingang, bei der man nicht nur Mäntel und Hüte, sondern auch das Gehirn abgeben kann ?!! Hatte ich damals nicht ein Veto dagegen eingelegt ? Wieso eigentlich nicht? Sollte ein EA nicht erst mal per Routine alle Plausibilitäten prüfen, bevor sämtliche Ampeln auf Grün umgestellt werden?Was ist z.B., wenn mein System auf 4 Dezimalstellen optimiert wurde, mein Broker aber meint, er müsse von einem Tag auf den anderen die Qualität des Pricing verändern? Melden
Geschrieben 19. Juni 200917 Jr. comment_76198 i-Spread-HTML.mq4 Ich habe versucht die o.g. mq4 auf 5 Digits zu ändern. Natürlich ohne Erfolg...Kann die mal bitte von euch einer anpassen und zeigen wo der Code geändert wurde. i_Spread_HTML.mq4 Melden
Geschrieben 19. Juni 200917 Jr. comment_76210 auf 5 Digits zu ändern. Hast Du die Datei bereits mit dieser verglichen? Melden
Geschrieben 19. Juni 200917 Jr. comment_76211 Klasse, ist wohl damals an mir 'vorbeigegangen'. Danke an Alex... Melden
Geschrieben 19. Juni 200917 Jr. Autor comment_76224 Das ist möglich auto. Prüfen zulassen.Aber auch mit Vorsicht zu geniessen da diese 5 digits soweit ich weiß nur für Währungspaare gilt. Also wenn muss beides geprüft werden 1. ist das Symbol ein Währungspaar?2. mit 5 digits?dann Rechne den MQL4 Point(0.00001) * 10 Ich denke aber mit MQL5 wird das nicht mehr notig sein. Aber hier trozdem mal der code zu 2.Am einfachsten zu Prüfen ob es sich um einem 5 digits Broker handelt wir nehmen das bekannteste Währungspaar EURUSDund Fragen dann davon die Digits ab (also die Zahl der Kommastellen)MarketInfo("EURUSD",MODE_DIGITS);Problem es gibt Broker die bezeichnen hier Währungspaare mit zusätzlichen Buchstaben z.b. der EURUSD heißt bei InterbankFX mini EURUSDmoder EURUSD heißt bei FOREX.com EURUSDFXFWürde dann also der obere code nicht Funktionieren. Also müssen wir das auch noch Überprüfen.Je mehr Feautere für die auto. wir einbauen um so mehr Fehlerquellen entstehen.Deshalb finde ich die einfachste Variante(#1 posting) am besten, da auch zum Problem werden kann das die MarketInfo() Funktion keinen Wert oder einen Falschen zurückgeben kann(habe ich leider auch schon die Erfahrung gemacht).Aber wir denken positiv und gehen davon aus das der Broker uns immer saubere MarketInfo() Daten schickt. Also um den Name genau auszulesen Subtrahieren wir einfach die ersten 6 Buchstaben des Symbol().MarketInfo(StringSubstr(Symbol(),0,6),MODE_DIGITS);und wenn der Wert = 5 ist rechnen wir den MQL4 Point(0.00001) * 10int dDigits=MarketInfo(StringSubstr(Symbol(),0,6),MODE_DIGITS); pPoint = Point; if (dDigits==5) pPoint *= 10; zu 1.Auch hier benutzen wir wieder MarketInfo() und Fragen den Profit calculation mode(Forex, CFD oder Futures) ab.Wenn das Symbol = Forex rechnen wir die 5 digits um.string sSymbol = StringSubstr(Symbol(),0,6); int dDigits = MarketInfo(sSymbol,MODE_DIGITS); int CalcMode = MarketInfo(sSymbol,MODE_PROFITCALCMODE); pPoint = Point; if (dDigits == 5 && CalcMode == 0) pPoint *= 10;"Profit calculation mode" habe ich noch nicht getestet, es ist nur eine Idee zur Lösung des Problems." Melden
Geschrieben 19. Juni 200917 Jr. comment_76226 In meinen Scripts oder EA´s führe ich die Anpassung für 5 Digits automatisch durch.Das mache ich gewöhnlich in der init() - Funktion in etwa so: extern int StopLoss = 20; int init(){ if(Digits == 5 || Digits == 3) // Digits 3 z.B für USDJPY und Digits 5 für EURUSD { StopLoss = StopLoss*10; // usw... }} Melden
Geschrieben 19. Juni 200917 Jr. Autor comment_76227 @titanfx if(Digits == 5 || Digits == 3) genau so.(nicht nur 5) Melden
Geschrieben 19. Juni 200917 Jr. comment_76233 Als Alternative ist es auch sehr bequem und logisch,wenn man einige Grössen in absoluten Werten eingibtz.Bstattextern int Stoploss = 10; einfach den absoluten Wert verwendenextern double Stoploss = 0.0010; Nachteil ist es natürlich, dass diese Grösse nur für die Werte mit 4 oder 5 Digits sind,von anderer Seite hat man eine feste Bezugsgrösse, wenn man die Charts analysiert Melden
Geschrieben 19. Juni 200917 Jr. Autor comment_76247 Wenn ich Dir folgen kann, hieße dass aber auch, dass ich mitdenken muss?Den Job soll doch aber der Automat übernehmen dusche.gif Falsch, der Automat soll dich nur Unterstützen aber nicht dein Denken übernehmen. Also, Ich sage JA zu MTS und NEIN zu ATS. ATS(Automated Trading System)(BlackBox, OK Mach mal ich Verlass mich auf dich.... Wir sehen uns in 3 Wochen wieder.... Scheiße....)MTS(Mechanical Trading System)(Signal!... schauen wir mal. hmm... Ok Einverstanden. Ausführen! ...das "A" kommt dann Später von ganz alleine.) Melden
Geschrieben 27. Juni 200917 Jr. comment_78018 Ist zwar etwas gewagt, weil ich kein Programmierer bin und den Code nicht ganz durchschaue.Aber praktisch funktioniert er mit meinen unterschiedlichen Brokern (activetrades, ODL, broco, thecollectivefx) ohne Probleme. (Habe ich in einem der anderen Foren gefunden, weiss nicht mehr wo). if(MathMod(MathSqrt(1/Point),10)!=0) x=10; // 5 digits broker else x=1; // 4 digits broker StopLoss ==> x * StopLossTakeProfit ==> x * TakeProfit Melden
Geschrieben 27. Juni 200917 Jr. comment_78034 if(MathMod(MathSqrt(1/Point),10)!=0) x=10; // 5 digits broker else x=1; // 4 digits broker Das geht natürlich auch eine rein mathematische Lösung Melden
Hier eine Möglichkeit für das Arbeiten mit 5 digits(5 Stellen hinter dem Komma).
Den Parameter 5Digits stellt man auf TRUE wenn 5 digits ansonsten FALSE.
Im Code arbeitet man dann immer mit der Variable pPoint(statt Point) die wärend der initialization Ihren Wert zugewiesen bekommen hat.
double pPoint; extern bool 5Digits = false; //TRUE wenn Broker mit 5 digits int init() { Comment(""); pPoint = Point; if (5Digits) pPoint *= 10; } int start() { double dh = iHigh(NULL,1440,0)+5*pPoint; Comment("\naktuelle Tageshoch + 5 pips = "+DoubleToStr(dh,Digits)); } int deinit() { Comment(""); }