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: 4533
Beiträge: 41128
Benutzer: 6.925
Aktive Benutzer: 240
Links: 80
Wir begrüßen unseren neuesten Benutzer: Bonedreamer
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Bonedreame...
vor einem Tag
- Shusuke
vor 2 Tagen
- corvatis
vor 2 Tagen
- jafqe
vor 3 Tagen
- Flizy

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 135
Gesamt: 137
Team: 0
Team:  
Benutzer:  Domke01, Indikator-Trading
Freunde anzeigen

Empfehlungen

Like Tree1Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.08.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 433
AVT befindet sich auf einem aufstrebenden Ast
Talking Mathe Nachhillfe gesucht

Eigentlich suchte ich nach der Erklärung, was
_Digits%2 "in Normalsprache bedeutet/ausrechnet".
Soweit ich gekommen bin, ist das wohl "Rest von _Digits geteilt durch 2".
Also habe ich mir ein Print gemacht - das aber ergibt völlig widersprüchliche Angaben:
Code:
Print(" Digits=",DoubleToStr(_Digits,0),
      " Digits/2=",DoubleToStr((_Digits/2),_Digits),
      " Digits%2=",DoubleToStr(Digits%2,_Digits) );
// ==> Result EURUSD (Digits=5)
// Digits=5
// Digits/2=2.00000
// Digits%2=1.00000
// ==> Result AUDJPY (Digits=3)
// Digits=3
// Digits/2=1.000
// Digits%2=1.000
Wieso ist 5/2=2 und nicht 2.5, wieso ist 3/2=1 und nicht 1.5
und wieso ist der Rest nicht 5.
Kann mir das bitte jemand erklären? Danke. AVT

Geändert von AVT (08.08.20 um 14:20 Uhr) Grund: 2 Nullen zu viel im Result
Mit Zitat antworten
  #2 (permalink)  
Alt 08.08.20
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 100
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Der % Operator ist ja der Modulo Operator. Also 5%2 ergibt 1 da die zwei zweimal gerade in die 5 passt und der Rest der übrig bleibt 1 ist (5-4 =1)

10%7 würde somit 3 liefern, da dass der Rest der Division ist.

Digits wird vom Typ integer sein. Daher kommt nur das ganzzahlige Ergebnis zurück und der Rest wird "verschluckt"
AVT likes this.
Mit Zitat antworten
  #3 (permalink)  
Alt 08.08.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 433
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
Der % Operator ist ja der Modulo Operator.
Digits wird vom Typ integer sein. Daher kommt nur das ganzzahlige Ergebnis zurück und der Rest wird "verschluckt"
Danke Indikator-Trading, das Wort Modulo hat geholfen

Daß aber bei ner Division von Integer zwingend ein Integer-Ergebnis rauskommt, finde ich ziemlich merkwürdig - heißt ja, wenn ich eine Periode von 25 Tagen um die Hälfte kürze (also /2) kommt (rein rechnerisch 12,5 raus, was dann gerundet (,5 nach oben) wird und dann in 13 Tagen endet - ohne daß ich mich dagegen wehren kann.
Bedeutet wohl dann gleichzeitig, daß ich die Periode dann als double setzen muß, um wenigstens selber zu bestimmen, ob auf- oder abgerundet wird.
AVT
Mit Zitat antworten
  #4 (permalink)  
Alt 08.08.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.008
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. Keine Ahnung, brauch auch Mathe-Nachhilfe.
Mit Zitat antworten
  #5 (permalink)  
Alt 08.08.20
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 100
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Hallo.

Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. Keine Ahnung, brauch auch Mathe-Nachhilfe.
Ich würde dir eher empfehlen die beiden ersten Posts in diesem Thema durchzulesen, dann hättest du deine Lösung. Dann das mit einer kleinen If-Abfrage kombinieren und fertig. Da Du ja schon Jahre dabei bist, schaffst du den Rest schon selbst oder?
Mit Zitat antworten
  #6 (permalink)  
Alt 08.08.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.415
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Hallo.
Keine Ahnung, brauch auch Mathe-Nachhilfe.
Stimmt!

Nun, bei der Division einer Integerzahl stolpern tatsächlich viele und ja, die Integerzahl müsste dann vorher in eine double gewandelt werden.

Dann klappts auch mit der Kommastelle.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #7 (permalink)  
Alt 08.08.20
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 100
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist
Hm, rechnen wirs mal durch.
Ist 6 grade?
MA-EA Lösungsweg:
6*2=12
12*2=24
24*2=48
Weitere Ergebnisse:
96,192,364,768,.....,422212465065984,...,usw
Endet davon was mit 5 oder 0 -> Nein
6 ist somit ungerade!
Mathematik ist schon was tolles oder?
Mit Zitat antworten
  #8 (permalink)  
Alt 08.08.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.415
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Hallo.
Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. Keine Ahnung, brauch auch Mathe-Nachhilfe.
Ok, ich nehme jetzt mal das Zitat ganz ernst und beachte im Satzbau die wiederholten "oder" und schlussfolgere, dass der Nachhilfling in der Oder-Verknüpfung der fettmarkierten Stellen ein Logik sieht.

Nehmen wir wieder die 6:
6/2=3
3/2 = 1,5
1,5/2=0,75
0,75/2=0,375
0,375/2=0,1875

Ich glaube fest daran, dass die letzte Stelle keine 0 ergeben wird.
Nein halt doch! Man könnte ja auch
6/2=3.0 schreiben -> also dann doch eine gerade Zahl!

Nehmen wir nun die 16:
16/2=8,0

Also auch eine gerade Zahl!

Nun nehmen wir mal 17:
17/2 = 8,50

Endet auf 0 -> also auch eine gerade Zahl!

@Indicator-Trading hatte gerade herausgefunden, dass die 6 ungerade sein muss. Hm, ich komme zu dem Ergebnis, es existieren nur gerade Zahlen, weil alle Divisionen auf eine 0 enden.

Was nun Herr Gauß?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #9 (permalink)  
Alt 09.08.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 433
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Nun, bei der Division einer Integerzahl stolpern tatsächlich viele und ja, die Integerzahl müsste dann vorher in eine double gewandelt werden.
Eine Zusatzfrage bitte: Ist das allgemeine Programmiersprachen Praxis, daß Integerdivisionen immer Integerergebnisse liefern, oder ist das von Sprache zu Sprache verschieden?
Danke. AVT
Mit Zitat antworten
  #10 (permalink)  
Alt 09.08.20
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 100
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Ich würde sagen dass das interne Abhandeln der Division abhängig vom Compiler ist. Manche erkennen das automatisch. Hier ist es halt leider nicht so intelligent das der Compiler erkennt, dass du eine Division durchführst und das direkte Ergebnis ausgeben möchtest.
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 12:34 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - 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 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------