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

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 04.08.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 105
Lena befindet sich auf einem aufstrebenden Ast
Standard Elegantes (schmales) programmieren

Ich würde gerne mal fragen wie die "Profis" von euch allgemein arbeiten.
Legt ihr euch für Abragen wie highest/lowest/close/open/... eine Variable an auf die ihr dann zurückgreift?
Oder arbeitet ihr direkt mit den Abfragen?

Zum Beispiel:
Ihr wollt abfragen ob der Schlusskurs von Tag X größer dem Eröffnungskurs von Tag Y ist?

Variante 1:
double close_price, open_price;
close_price = iclose(Null, 0, (TagX));
open_price = iopen(NULL, 0 (TagY));
if(close_price > open_price){
}

Variante 2:
if(iClose(NULL, 0, (TagX)) > iOpen(NULL, 0, (TagY))){
}

Bei einer Berechnung würde man wohl die 2 Variante bevorzugen. Aber wie sieht es aus wenn man z.B. open/close/high und low von 3-4 Tagen benötigt und daraus dann mehrere Durchschnittswerte berechnet? Ist es dann sinnvoller wie in Variante 1 erst Variablen zu erstellen und darin die Abfragewerte zu speichern? Oder aber bei jeder Berechnung die Werte erneut abzufragen? Wie gesagt geht es mir im wesentlichen darum, wie würde es ein "guter" Programmierer angehen?
  #2 (permalink)  
Alt 04.08.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Richtig, falls wie in der Berechnung, die Werte einmalig benutzt werden und die Berechnung durch die langen Werteabefragen von der Zeilenlänge nicht zu lang werden (aber auch da kann man eine Struktur in die Codezeile bringen), würde ich auch die Ermittlung der Werte in die Berechnung schreiben.

Sollen aber z.B. viele Werte ermittelt werden, die dann auch "sofort" weiterverarbeitet werden sollen, dann würde ich entweder der Übersichtlichkeit die Werte einzeln erst ermitteln oder wie oben beschrieben die lange Zeile strukturiert schreiben.

Klar ist, falls die ermittelten Werte an verschiedenen Stellen benutzt werden müssen, dass dann die Ermittlung eher global ausfallen sollte, um sie nicht jedesmal wieder neu zu ermitteln, aber das hängt im Einzelnen vom Code ab.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 04.08.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 105
Lena befindet sich auf einem aufstrebenden Ast
Standard

Dann ist es letzendlich also nur eine Frage der Übersicht. Bei meinem EA ist es so, dass ich zwar nur mit ca einem Dutzend verschiedener Werte arbeite, diese aber zu ganz unterschiedlichen Zeitpunkten abrufen muss (Funktionsaufrufen). Für mich war es daher interessant zu wissen wie man am besten vorgeht, da ich entweder die Werte direkt in der Berechnung innerhalb der Funktion aufrufe, oder aber global (OnTick Funktion) permanent abfrage und in einer Variablen ablege.
Bei der Komplexität meines jetzigen EA´s ist es sicher noch egal wie man da vorgeht, ich will mir aber wenn möglich direkt einen sauberen Stil angewöhnen.
  #4 (permalink)  
Alt 05.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Grundsätzlich (für mich):
  • Direkte Abfrage: Wenn Werte nur einmal in einer Berechnung gebraucht werden.
  • Speicherung: Wenn sie mehrmals gebraucht werden.
  • Algemein: Nichts erneut abfragen, was man schon hat.

Zitat:
Zitat von Lena Beitrag anzeigen
Bei meinem EA ist es so, dass ich zwar nur mit ca einem Dutzend verschiedener Werte arbeite, diese aber zu ganz unterschiedlichen Zeitpunkten abrufen muss (Funktionsaufrufen).

... global (OnTick Funktion) permanent abfrage und in einer Variablen ablege.
Sofern es unterschiedliche Funktionen sind, die mit den gleichen Werten arbeiten, wäre eine "globale" definierung vielleicht sinnvoller.
In der OnTick würde ich es aber nur machen, wenn die Werte wirklich ständig gebraucht werden.

Außerdem, was heißt hier "zu ganz unterschiedlichen Zeitpunkten"? Zu verschiedenen Zeiten sind die Werte doch meist nicht mehr
die selben (je nachdem, was abgefragt wird).

Zitat:
Zitat von Lena Beitrag anzeigen
Aber wie sieht es aus wenn man z.B. open/close/high und low von 3-4 Tagen benötigt und daraus dann mehrere Durchschnittswerte berechnet? Ist es dann sinnvoller wie in Variante 1 erst Variablen zu erstellen und darin die Abfragewerte zu speichern? Oder aber bei jeder Berechnung die Werte erneut abzufragen? Wie gesagt geht es mir im wesentlichen darum, wie würde es ein "guter" Programmierer angehen?
Wenn man alle Infos sofort zusammen und für mehrere verschiedene Berechnungen braucht, so bietet es sich an, Variablen bzw. Arrays zu nutzen.
Je nachdem, was berechnet wird, könnte man diese X Tage aber auch in einer Schleife verarbeiten und da dann z.B. mit einer einzigen Variable
die Werte / Ergebnisse von Teilberechnungen summieren und diese Variable dann weiter bearbeiten.
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmercode, programmierstil, programmierung, programmierung metatrader, programmierung mql4, stil, struktur, struktur programmierung

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 09:08 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.
-----------------------------------------------------------------------------------------------------------------------------