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: 4973
Beiträge: 43252
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- Thomas75
vor 16 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 10.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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)
  #2 (permalink)  
Alt 10.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #3 (permalink)  
Alt 10.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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
  #4 (permalink)  
Alt 10.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #5 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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?
  #6 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #7 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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?
  #8 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #9 (permalink)  
Alt 11.06.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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....
  #10 (permalink)  
Alt 11.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
Thema geschlossen

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 +1. Es ist jetzt 14:10 Uhr.





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