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: 4011
Beiträge: 38225
Benutzer: 6.324
Aktive Benutzer: 319
Links: 80
Wir begrüßen unseren neuesten Benutzer: Blancomi
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- Blancomi
vor einem Tag
- Banause
vor 2 Tagen
- Xypa
vor 2 Tagen
- eisbaer
vor 2 Tagen
- EuroFXMast...

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 10.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 113
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard Bug beim Umrechnen??

Hi Zusammen,

versuch grad ne einfache BE Funktion hinzuklatschen like:

Code:
void BE_Check( int i)//zuvor wird die Ordernummer ermitteln und durch i weitergegeben
{
   int n=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
   Comment("1:  "+   DoubleToString((Bid-OrderOpenPrice()),Digits)+
          "\n2:  "+  (Bid-OrderOpenPrice())*10.0*Point+
          "\n3:  "+  (Bid-OrderOpenPrice())*Point );
          
          
   if( (Bid-OrderOpenPrice())*10*Point >= BE_LEVEL)
     {
      int a = OrderModify(i,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrDarkTurquoise);
     }
}
so hab ich das früher jedenfalls gemacht, nur dummerweise funzt das nicht mehr und ich frage mich warum????????????

Im Anhang seht ihr was ausgegeben wird :

1: Zeigt in Digitform das die Posi 25,4 Punkte vorne liegt

2 und 3 versetzt jeweils eine Kommastelle nach vorne,wenn es über 10 Punkte im Positiven Bereich geht.

Kann mir das mal bitte einer erklären??? Is das ein Bug? Wenn ja wie is der zu umgehen?? Build 1090 is meine aktuelle Plattform .
Angehängte Grafiken
Dateityp: bmp T1.bmp (69,8 KB, 6x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt 10.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.068
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wieso, stimmt doch.

1. 2,54*10-3
2. 2,54*10-7, weil 1. * 10 * 10-5
3. 2.54*10-8, weil 1. * 10-5

Alles ok.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt 10.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 113
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Wieso, stimmt doch.

1. 2,54*10-3
2. 2,54*10-7, weil 1. * 10 * 10-5
3. 2.54*10-8, weil 1. * 10-5

Alles ok.

traderdoc
??? OK anscheinend fehlen mir da die Mathe-Kenntnisse oder wir reden aneinander vorbei....

1 . Gibt den Wert Aktueller Kurs - Einstiegskurs wieder und ist 25,4 Punkte im Plus und wird mit 0.00254 wiedergegeben

2. Gibt den Wert Aktueller Kurs - Einstiegskurs * 10 wieder und wird mit 2.5399....987e-07

3. Gibt den Wert Aktueller Kurs - Einstiegskurs * Point wieder,Punktwert und wird mit 2.5399....987e-08 wieder gegeben

unter 10 Punkte im Plusberiech bekomm ich bei 2 und 3 auch die korrekten Punkte im Plus angezeigt, sobald es über 9 Punkte geht, eben die mir 2.5399....987e-07 oder-08 , anscheinend versteh ich die Darstellung nicht korrekt, wenn du sagt " Es ist alles Ok" . was ist denn mit e-07/e-08 gemeint?

Ich brauche 25.4 als Rückgabewert. Hab den MT4 gewechselt, meint Code hat bei anderen Versionen geklappt.

Wäre klasse wenn du das kurz erläutern könntest
Mit Zitat antworten
  #4 (permalink)  
Alt 10.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.068
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich habe keine Ahnung, wo das Problem liegt?
Besser wäre es, wenn Du mal ein paar Beispiele bringen würdest,
was richtig und was falsch wäre.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 663
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Lass diese E- Werte weg und benutz double. Oder soll da irgendwas weit über 2.000.000.000 sein?
Mit Zitat antworten
  #6 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.068
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Lass diese E- Werte weg und benutz double. Oder soll da irgendwas weit über 2.000.000.000 sein?
Was hat denn diese ursächliche Problematik mit double zu tun?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #7 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 663
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Er benutzt anscheinend exponential-Werte. Oder wies heißt. Ist das nötig? Reicht double nicht?



https://de.wikipedia.org/wiki/Exponentialfunktion



Zitat:
Zitat von Trader6666 Beitrag anzeigen
2. Gibt den Wert Aktueller Kurs - Einstiegskurs * 10 wieder und wird mit 2.5399....987e-07

3. Gibt den Wert Aktueller Kurs - Einstiegskurs * Point wieder,Punktwert und wird mit 2.5399....987e-08 wieder gegeben

unter 10 Punkte im Plusberiech bekomm ich bei 2 und 3 auch die korrekten Punkte im Plus angezeigt, sobald es über 9 Punkte geht, eben die mir 2.5399....987e-07 oder-08 , anscheinend versteh ich die Darstellung nicht korrekt, wenn du sagt " Es ist alles Ok" . was ist denn mit e-07/e-08 gemeint?
Mit Zitat antworten
  #8 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.068
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja und was ändert das an den Zahlen?:
0,00254
0,000000254
0,0000000254

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #9 (permalink)  
Alt 11.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 113
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

ok hier ist der ganze Code, natürlich hab ich double benutzt das reicht ja locker als Datentyp aus.... 1 2 und 3 habe ich rein gehauen um zu schauen was er mir eben wieder gibt.

Code:
extern double     BE_LEVEL = 20.0;


void BE_Check( int i)
{
   int n=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
   Comment("1:  "+   DoubleToString((Bid-OrderOpenPrice()),Digits)+
          "\n2:  "+  (Bid-OrderOpenPrice())*10.0*Point+
          "\n3:  "+  (Bid-OrderOpenPrice())*Point );
          
          
   if( (Bid-OrderOpenPrice())*10*Point >= BE_LEVEL)
     {
      int a = OrderModify(i,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrDarkTurquoise);
     }
}
was ich möchte ist, wenn die Posi über oder gleich BE_LEVEL ist, dass die Order auf Break Even gezogen wird. BE_LEVEL wird in ganzen Punkten(dennoch double) als Wert hinterlegt. Wie gesagt bis 9 Punkte zeigt er mir auch an das er 9.0 Punkte/Pips im Plus ist. Wenn er 10 Punkte im Plus ist dann wird mir das nicht als 10.0 angezeigt sondern als 1.0

Dadurch erfüllt meine If niemals die Bedingung. Warum werden mit 25.4 Punkte nicht genauso angezeigt??
ich bekomme anstatt dessen 2.54....... genau das is mein Problem , ich hoffe jetzt ist es verständlich....
Mit Zitat antworten
  #10 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.068
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das sehe ich erst jetzt!

Code:
extern double     BE_LEVEL = 20.0;

...

if( (Bid-OrderOpenPrice())*10*Point >= BE_LEVEL)
     {
      int a = OrderModify(i,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrDarkTurquoise);
     }
Die Funktion OrderModify wird nie aufgerufen!
Warum? Weil die if- Abfrage nie true ergibt.
Warum? Weil der linke Teil immer viel!! < 1 und der rechte immer >= 1 sein wird.

Stattdessen müsste das lauten:

Code:
if( (Bid-OrderOpenPrice())/10/Point >= BE_LEVEL)
     {
      int a = OrderModify(i,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrDarkTurquoise);
     }
Mal davon abgesehen, dass OrderSelect() und OrderModify() einen bool-Wert zurückgeben und keinen int-Wert (das spielt jedoch bei Dir jetzt nicht die Rolle, sollte aber korrekterweise beachtet werden).

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
bug, fehler, mql4, programmierung, programmierung metatrader, programmierung mql4, umrechung, umrechung bug, umrechung fehler


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 06:12 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------